coq - 如何在 coq 中使用模块隐藏引理?

标签 coq

我有一个定理 T,它的证明,以及证明它时使用的无数引理。

我想隐藏引理,只提供定理——主要是因为我不想为引理想出好的全局名称。

我可以将定理、其证明和引理放入模块中,受模块类型限制,并且仅使定理可用吗?

类似于:

Module Type T_MY_T.
End T_MY_T.

Module T_My_theorem : T_MY_T.
  Lemma L1: ...
  Proof. Admitted.
  Lemma L2: ...
  Proof. Admitted.
  Theorem My_Great_Theorem: ...
  Proof. apply L1; apply L2. Qed.
End T_My_theorem.

如果是这样,有人可以发帖或给我指出一个简单的例子吗?

最佳答案

模块类型 A 应包含您要导出的定理的公理。 模块 B : A 包含这些公理作为需要证明的定理。它还可以包含证明定理所需的任何引理和其他机制。要从模块外部访问定理,您可以应用 B.Theorem1 等。

关于coq - 如何在 coq 中使用模块隐藏引理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11451536/

相关文章:

coq - 如何在 Coq 的证明中应用 Fixpoint 定义?

coq - Ensemble 的标准笛卡尔积结构是什么?

coq - 我可以在 Coq 中获得宇宙的继承者吗?

coq - 如何证明le的所有证明都相等?

Coq:使用子目录管理项目中的 LoadPath

coq - 破坏应用谓词函数的结果

recursion - 如何让 Coq 评估特定的 redex(或者 - 在这种情况下它为什么拒绝?)

coq - Coq 中推/弹出计算器导致的奇怪的证明义务

coq - Coq 需要什么才能为 Inductive 类型生成消除组合器?

OCaml 字符串和 Coq 字符串(从 Coq 提取到 OCaml)