【发布时间】:2019-12-23 23:12:40
【问题描述】:
我正在使用 AGDA 做一些经典的数学证明。我想证明一组基数 n 的子集数等于 2^n(即 pow (2, n))。为此,我的策略如下:
1) 编写一个函数 sub n,给定每个自然数,它返回小于或等于 n 的所有可能的自然数子集的列表。
2) 编写两个函数“length”和“pow”,分别计算列表的长度和2^n
3) 将 3 个函数放在一起证明这个陈述。
但是,我在解决第 1 点时遇到了麻烦)。我的想法是让函数返回一个“list Nat”类型的列表,但是我在实现递归时遇到了一些问题。基本上,我对归纳步骤的想法是将“n”的每个子集关联到两个新子集:自身和添加“n+1”的子集。
您认为这是一种有效的策略吗?此外,我该如何解决第 1 点的问题? 谢谢
【问题讨论】:
标签: functional-programming subset agda set-theory proof-of-correctness