COQ证明不相关

时间:2017-04-26 04:49:12

标签: coq

我正在考虑COQ中证明不相关的问题。 一个可证明的陈述说:

  

如果一个类型的相等是可判定的,则只能有一个相等语句的证明,即反身性。

我想知道是否有可能在COQ中构造具有多个相等证明的类型。因此,我问以下构造是否一致?

(*it is known that f=g is undecidable in COQ *)    
Definition f(n:nat) := n.
Definition g(n:nat) := n+0.

Axiom p1: f=g.
Axiom p2: f=g.

Axiom nonirrelevance:p1<>p2.

我在这里困惑的是,通过引入p1,我使等式f = g可判定,因此它应该只有一个证明!我在这里推理的错误是什么?

这是纯粹的COQ行为还是在HOTT中类似?

1 个答案:

答案 0 :(得分:1)

我认为你混淆了几件事。

您所说的可证明声明可以在https://coq.inria.fr/library/Coq.Logic.Eqdep_dec.html中找到,并且

Theorem eq_proofs_unicity A (eq_dec : forall x y : A, x = y \/ x <> y) (x : A) : 
    forall (y:A) (p1 p2:x = y), p1 = p2.

现在有趣的是eq_dec的类型。首先,它甚至不能要求平等是可判定的,它只是要求它是真或假,而不是{x = y} + {x <> y}

然后注意,它并不是仅仅因为x和y要求它来证明相等的不相干性,它会向所有函数询问这个属性。

所以你需要证明你forall (f g : nat -> nat), f = g \/ f <> g你不能做的矛盾。 p1只是f = g \/ f <> g证明你的特定f和g的证明。 请注意,如果可以的话,它只是意味着没有办法构建一个系统,您可以在其中比较函数,但有多种方法可以证明它们是不同的。

最后,因为P不可判断只意味着在{P} + {~P}之上没有可构造的函数,但它并不意味着将一个作为公理加入会导致矛盾。只是添加它,以防它不清楚。