在与Welder合作的过程中,我遇到了我需要证明的情况:
如果content(l1)== content(l2)并且f是幂等,关联和可交换运算符则折叠(f,z,l1)= fold(f,z,l2)
在我的证明的一个阶段,我想要显示x :: xs形式的列表l1:
折叠(f,z,没有(x,xs))==折叠(f,z,没有(x,l2))
其中without(x,。)从列表中删除x的出现。因此很明显,没有(x,xs)的大小小于x :: xs的大小,所以如果在Welder中允许强引导,我应该得到相等(内容相等)。
目前,系统只是告诉我没有(x,xs)的归纳假设。那么你如何对焊工进行强力归纳?
答案 0 :(得分:1)
基于结构感应的有根据的排序并不对应于树木大小的排序,而是对应于子树关系。即xs < Cons(x, xs)
,但如果xs
不是Cons(x, ys)
的子元素,则xs
和ys
无法比较(即使xs.size <= ys.size
时) 。这就是为什么你不能在without(x,xs)
上假设归纳假设的原因,因为这不能保证是x :: xs
的子树。
焊工实际上确实允许强烈感应。例如,归纳假设是在xs.tail
,xs.tail.tail
等上定义的。如果您想要基于大小的归纳,您将必须使用naturalInduction
(也很强大)。