如何在Coq中编译Logic.v

时间:2015-11-04 04:33:49

标签: coq

我使用Coq 8.4pl6,并希望在Coq中编译Logic.v(Coq标准库),并将其输出视为模块编译和打印的示例,但失败了。

更具体地说,Logic.v第107行的tauto失败了:

   104  Theorem and_cancel_l : forall A B C : Prop,
   105    (B -> A) -> (C -> A) -> ((A /\ B <-> A /\ C) <-> (B <-> C)).
   106  Proof.
   107    intros; tauto.
   108  Qed.

我尝试的过程如下:

  1. 我在控制台上尝试coqc Logic.v,在第107行生成Error: tauto failed。我认为这是因为Coq初始环境已导入Logic.vo,因此加载同一模块两次就会产生错误。
  2. 接下来,我尝试通过运行coqc -nois Logic.v来编译空的初始状态,这会产生以下错误。我不明白这个错误的意思......

    File ".../Logic.v", line 107, characters 10-15:
    Anomaly: Incorrect tactic expression. Received exception is: 
    Anomaly: Uncaught exception Nametab.GlobalizationError(_). Please report.. 
    Please report.
    
  3. 有没有办法编译Logic.v没有错误?

1 个答案:

答案 0 :(得分:2)

编译Logic.v的问题似乎是由于它重新定义了归纳类型True, False, and, or, ex, ex2, eq和常量not, iff, IF_then_else, all, eq_ind_r, eq_rec_r, eq_rect_r, subrelation, unique, uniqueness

自动化策略必须考虑(并对待)这些&#34;新的&#34;当Coq启动时,类型和常量不同于首先加载的类型和常量。

从Logic.v中删除了这些DefinitionInductive语句后,我就可以编译该文件了。

希望这会有所帮助。 (更完整的答案将准确解释启动过程中的这种情况。)