证明不相关(2)

时间:2017-04-28 20:48:45

标签: coq

让我们假设我们有一个简单引理的两个证明。

   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 

我认为这是不可判定的 如果我们引入单一性公理会发生什么?

1 个答案:

答案 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的逻辑阻止我们以允许我们提取使用哪个证人的方式操纵其证明。