在Coq中用假设完成证明

时间:2012-07-07 01:39:15

标签: coq theorem-proving

所以我在子目标中有一个错误的假设。它是不同构造函数之间的相等。我如何完成子目标?

H: List.Not_Empty Bit.Bit Bit.Zero (List.Empty Bit.Bit) = List.Empty Bit.Bit

1 个答案:

答案 0 :(得分:5)

这看起来不像我以前从标准库中使用过的Coq列表,因此在不知道List.Not_Empty和List.Empty的定义的情况下很难帮助您。如果我猜对了List.Empty代表nilList.Not_empty代表cons,那么这只是表明两个构造函数不相等的问题。例如,你可以这样做:

congruence.

或简单地说:

inversion H.

然而,如果它涉及的更多,这两个可能会失败。所以你想要:

SearchAbout List.Not_Empty.

查看是否存在关于它的引理,或者:

unfold List.Not_Empty, List.Empty in H.

展开定义并计算出详细信息(如果它不存在,可能会将此subproof保存为引理,因为它似乎很有用)。