如何证明COQ理论的一致性

时间:2015-12-23 17:43:25

标签: coq

我如何证明(或更好地:令人信服地论证)我的COQ理论是否一致? 让我们假设COQ系统和标准库是一致的。 我知道由于哥德尔不完备性定理,不可能得到一致的一致形式证据 但是,是否有一些方法或经验法则如何论证理论是否一致? 更具体一点:如果我只使用归纳数据类型而没有明确的公理命题,那么我的理论是否自动一致?

1 个答案:

答案 0 :(得分:3)

Coq的全部意义在于,如果您的定义和证明被系统接受,您可以相信它们在逻辑上是合理的。但有两点需要注意:

  • 您必须相信系统的基础逻辑是正确的,并且它是正确实现的。

  • 您不得使用任意公理扩展基本理论,或启用不安全的选项(例如-type-in-type)。

最后一点值得一些解释。使用诸如FixpointDefinitionInductive之类的命令声明的定义和证明属于Coq的基本理论,因此是自动一致的。这就是为什么Coq对这些命令设置了一些限制,例如只允许某些类型的递归函数。另一方面,如果你要求Coq使用Axiom命令或类似的命令接受任意命题,那么你可能最终会得到一个不一致的开发。

一些公理,例如排除在中间和功能上的延伸性,相对较好地研究和了解,因此如果假设的话,也不会太危险。根据经验,您可以信任标准库中声明的公理。但是你应该小心:例如,一些标准公理与-impredicative-set选项不兼容(见here)。

如果您想确保您的开发不依赖于特殊公理,您可以使用Print Assumptions命令(请参阅here)列出结果中使用的所有公理。