【发布时间】:2020-04-16 02:44:11
【问题描述】:
是否有可能有一些A, B : Prop 以便我们可以提供以下证明:
Section QUESTION.
A: Prop := <whatever you want> .
B : Prop := <whatever you want> .
Theorem ANeqB: A <> B.
Proof.
<a proof of this fact>
Qed.
直觉上,我认为不会,因为这可以让我们“区分”证明,但如果不计算 A 或 B,就无法做到这一点。然而,Coq 明确禁止我们检查证明,因为它们必须在运行时被擦除。所以,只有Prop 应该能够检查Prop(由于擦除),但检查总是计算的,因此Prop 不能检查Prop。因此,nothing可以检验Prop,而上述定理ANeqB无法证明。
- 如果我上面的解释不正确,请您解释一下为什么会这样?
- 如果不能证明定理
ANeqB,你能给我一个证明吗? - 如果定理
ANeqB可以被证明,你能告诉我我的直觉在哪里失败了吗?
编辑:
令我震惊的是,由于我们可以将证明无关性作为一个额外的公理 (Axiom proof_irrelevance : forall (P:Prop) (p1 p2:P), p1 = p2.),因此无法在 Coq 中证明定理 ANeqB --- 如果可以,那么允许 @987654335 将变得不合理@ 作为一个额外的公理。
这改变了我的问题,然后:
- 是否有可能为一些居民
A和B证明ANeqB? (proof_irrelevance更强:它表明我们无法证明A <> B[实际上,我们可以 证明A = B] 对于所有A, B的更强有力的陈述) - 如果不是,有人可以提供一个证明
ANeqB在 Coq 的基于公理系统中无法证明吗?
【问题讨论】:
标签: coq proof formal-verification