所以我在子目标中有一个错误的假设。它是不同构造函数之间的相等。我如何完成子目标?
H: List.Not_Empty Bit.Bit Bit.Zero (List.Empty Bit.Bit) = List.Empty Bit.Bit
答案 0 :(得分:5)
这看起来不像我以前从标准库中使用过的Coq列表,因此在不知道List.Not_Empty和List.Empty的定义的情况下很难帮助您。如果我猜对了List.Empty
代表nil
而List.Not_empty
代表cons
,那么这只是表明两个构造函数不相等的问题。例如,你可以这样做:
congruence.
或简单地说:
inversion H.
然而,如果它涉及的更多,这两个可能会失败。所以你想要:
SearchAbout List.Not_Empty.
查看是否存在关于它的引理,或者:
unfold List.Not_Empty, List.Empty in H.
展开定义并计算出详细信息(如果它不存在,可能会将此subproof保存为引理,因为它似乎很有用)。