在Coq中证明一个定理

时间:2012-11-25 15:04:40

标签: coq theorem

我试图在Coq中证明一个定理,但我无法解决发生的问题。我想解决:

 forall A B C: Prop, A\/(B\/C)->(A\/B)\/C.
Proof.
intros.
destruct H as [H1 | [H2 | H3 ]].
Case H1.
and in this last line I get the following error "Error: The reference Case was not found in the current environment."

我是Coq的新手,所以我不知道这究竟意味着什么。我在互联网上做了一些研究,但我没有找到解决方案。有没有人知道这个问题来自什么?

2 个答案:

答案 0 :(得分:2)

你已经破坏了这个假设,所以你已经在分析每个案例了。

使用leftright来操纵结论中的分离,并在假设和结论相同时使用assumption

答案 1 :(得分:1)

编辑:嗯......我可能误解了你在这里想要做的事情......


您正在使用并且可能已在其他地方使用的Case不是在Coq中构建的,而是在Coq生态系统中浮动的库。

我可以在这里找到对它的引用:http://coq.inria.fr/cocorico/Case%20(tactic

我也亲自使用过它。要使用它,您需要复制文件中某个位置的链接中的定义,或者导入的另一个文件MyCaseModule.v

Require Import MyCaseModule.

作为旁注,Coq 8.4似乎提供了另一种使用子弹来构建校样的方法。我不确切知道细节,因为我因其他原因而无法使用8.3。但是,您可能仍然更喜欢Case / SCase / ...因为它能够为不同的案例命名。