焊机有强烈的感应概念吗?

时间:2017-03-25 18:38:15

标签: scala leon

在与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)的归纳假设。那么你如何对焊工进行强力归纳?

1 个答案:

答案 0 :(得分:1)

基于结构感应的有根据的排序并不对应于树木大小的排序,而是对应于子树关系。即xs < Cons(x, xs),但如果xs不是Cons(x, ys)的子元素,则xsys无法比较(即使xs.size <= ys.size时) 。这就是为什么你不能在without(x,xs)上假设归纳假设的原因,因为这不能保证是x :: xs的子树。

焊工实际上确实允许强烈感应。例如,归纳假设是在xs.tailxs.tail.tail等上定义的。如果您想要基于大小的归纳,您将必须使用naturalInduction(也很强大)。