让我们假设我们有一个简单引理的两个证明。
Lemma l1: exists x:nat, x <> 0.
exists 1.
intro.
discriminate.
Defined.
Lemma l2: exists x:nat, x <> 0.
exists 2.
discriminate.
Defined.
直观地说,我会说这是两个不同的证明。 那么,我可以证明以下引理吗?
Lemma l3: l1 <> l2
我认为这是不可判定的 如果我们引入单一性公理会发生什么?
答案 0 :(得分:4)
首先,关于术语的小注释。在理论计算机科学中经常使用另一种“不可判断”的意思来指代决定的问题,给定某个集合的任意元素,该元素的固定属性是否成立。如果有一个算法可以通过图灵机计算出来,它可以正确回答任何可能输入的问题,我们说问题是 decidable ;否则,它是不可判断的。你的“不可判断”的概念通常被称为“independence”(这两个问题当然是相关的。任意 Coq命题是否可证明的问题是不可判定的。 )
现在,回到你的问题。我相信(尽管我并不完全确定)你的引理l3
无法在Coq中被证明或驳斥,即使你加入了单价公理。原因在于,单一公理只违反了对特定命题的证明无关性:平等断言。并且没有任何关于它的存在量化有任何明显的后果。也许这里的一些直觉可以帮助。有一个与计算相关的存在量化的类比(即生活在Type
中的东西),它允许你证明你的原则,而不是假设单一性:
Lemma l1: { x:nat | x <> 0 }.
exists 1.
intro.
discriminate.
Defined.
Lemma l2: { x:nat | x <> 0 }.
exists 2.
discriminate.
Defined.
Lemma l3: l1 <> l2.
Proof.
intros H. inversion H.
Qed.
然而,即使这种类型有可能,仍然可以安全地假设存在量化不相关,因为Coq的逻辑阻止我们以允许我们提取使用哪个证人的方式操纵其证明。