coq - 为什么 Coquelicot 会弄乱我的子弹?

标签 coq

假设我在 Coq 中写出以下引理和证明:

Lemma foo : forall A, A -> A.
Proof.
  - simpl.
  - auto.
Qed.
simpl这里什么也不做,这是对要点的错误使用( - )。当我尝试用 coqc 编译它时,我收到以下投诉:
Error: [Focus] Wrong bullet -: Current bullet - is not finished.
我很清楚为什么会发生这个错误。当我打开 auto 的第二个要点时,它提示我没有完成第一个要点。但是,对我来说没有意义的是这段代码编译得很好:
From Coquelicot Require Import Complex.
Lemma foo : forall A, A -> A.
Proof.
  - simpl.
  - auto.
Qed.
似乎是从Coquelicot进口的行为使得项目符号点被完全忽略。几个问题:
  • 为什么会发生这种情况?这是某种错误吗?
  • 有没有办法禁用这种行为?我想使用 Coquelicot 并且仍然要检查正确的项目符号使用情况。

  • 我目前使用的是用 OCaml 4.10.2 和 Coquelicot 3.2.0 编译的 Coq 8.13.2。

    最佳答案

    Coquelicot 依赖于 MathComp,而 MathComp 禁用了项目符号的传统含义(因为它们的使用方式不同)。但是,它们不是在 MathComp 项目本地执行此操作,而是全局设置一个选项,这就是您获得此行为的原因。
    要检索预期的行为,您需要将选项重置为默认值,如下所示:

    Set Bullet Behavior "Strict Subproofs".
    
    (参见 https://coq.inria.fr/refman/proofs/writing-proofs/proof-mode.html#coq:opt.Bullet-Behavior)

    关于coq - 为什么 Coquelicot 会弄乱我的子弹?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68408859/

    相关文章:

    types - Coq 数据类型 - 带括号的一对

    compiler-errors - 使用 "Error: No focused proof"命令时 Coq "Arguments"

    optimization - 如何在 coq 中优化搜索

    coq - Coq 中是否有一套最小的完整策略?

    coq - 导入 QArith 后定义产品类型

    coq - 为什么较新的依赖类型语言没有采用 SSReflect 的方法?

    coq - 如何在 Coq 中编写一个函数,该函数给定一个列表,返回列表中不存在的最小 nat?

    coq - 在 Coq 中使用依赖类型(安全第 n 个函数)

    equality - 如何使用 Streicher_K_ Axiom

    coq - 是否可以在不使用反转的情况下在 Coq 中证明 `forall n: nat, le n 0 -> n = 0.`?