我們來舉個例子:A ∧ B
。
如果我們知道A
和B
,我們可以推斷出A ∧ B
:
A B
------- I
A ∧ B
這就是所謂的介紹規則。
雙重,如果我們知道A ∧ B
我們可以推斷出A
,或B
:
A ∧ B A ∧ B
------- E1 ------- E2
A B
這些都是消除規則。
然後,如果我們知道A
我們可以證明A
作爲第一個使用引進規則推導A ∧ A
,然後破壞它變成A
(另有A
),使用排除規則:
A A
------- I
A ∧ A
-------- E1
A
而這種環島可能發生在更大的證據。
沒有理由做這個往返行程:我們結束了我們開始的地方!
連續微積分「禁止」排除規則後的引入規則。 Gentzen的結果表明,具有這個屬性的邏輯和引入規則之後的淘汰規則被允許的邏輯一樣強大。現在,這很重要,因爲證明的空間要小得多:首先我們消除(按照我們的需要製作小公式),然後引入(構建目標)。例如,對於自動證明搜索或程序合成,這實際上是有用的。
編輯這個答案的第一個版本具有A ∧ B
證明:
A ∧ B A ∧ B
------- E1 ------- E2
A B
----------------- I
A ∧ B
然而,除了從直接證明:
A ∧ B
-------標識 一個∧乙
它似乎是唯一的其他「簡單證明」。在Haskell語法一個這樣寫:
proof :: (a, b) -> (a, b)
proof (x, y) = (x, y)
-- or
proof x = x
proof = id
哪些是(除了嚴格的特性,其邏輯不感興趣)相同,並且唯一合理的定義。例如:
proof :: (a, b) -> (a, b)
proof x = fst (x, x)
也是有效的,不再聰明瞭。
我已經做了這樣的證明已經太久了,所以我的生鏽的道歉。如果你在^消除之後不能使用^ -introduction,那麼你如何構造A^B?B^A的證明? – MattClarke
@MattClarke謝謝!似乎我已經很長時間了,因爲我也觸及了這個話題。更正了答案 – phadej