【发布时间】:2020-04-20 06:49:08
【问题描述】:
在精益手册“精益中的定理证明”中,我读到: “通过经典公理,我们可以证明每个命题都是可判定的”。
我想就这个声明寻求澄清,我正在向 Coq 论坛提问,因为这个问题适用于 Coq 和 Lean 一样多(但我觉得我更有可能在这里得到答案)。
在阅读“经典公理”时,我了解到我们有与排中律等价的东西:
Axiom LEM : forall (p:Prop), p \/ ~p.
当阅读“每个命题都是可判定的”时,我理解我们可以定义一个函数(或者至少我们可以证明这样一个函数的存在):
Definition decide (p:Prop) : Dec p.
其中Dec 是归纳类型族:
Inductive Dec (p:Prop) : Type :=
| isFalse : ~p -> Dec p
| isTrue : p -> Dec p
.
然而,根据我对 Coq 的了解,我无法实现 decide,因为我无法破坏 (LEM p)(类似于 Prop)以返回 Prop 以外的其他内容。
所以我的问题是:假设没有错误并且“使用经典公理,我们可以证明每个命题都是可判定的”这句话是合理的,我想知道我应该如何理解它,所以我摆脱了我强调的悖论。是不是我们可以证明函数decide 的存在(使用LEM)但实际上不能提供这种存在的见证?
【问题讨论】:
-
Lean 实际上假设a much stronger axiom会让你证明这一点。
-
@SCappella,好的,我还没有读到这本书的这一部分(我快到了)所以我相信当我读到它时我会明白的。非常感谢您的帮助!
标签: coq