標籤:

證明論學習筆記3:自然演繹

目錄:類型論驛站寫作計劃

上一篇:證明論學習筆記2:希爾伯特系統

自然演繹(natural deduction)和希爾伯特系統的主要區別是沒有公理。由於不存在公理,在證明過程中,我們可以引入其他邏輯式作為假設。這些假設稍後可以被除去(discharge)。

自然演繹里的邏輯後承(consequence)關係定義如下: Gammavdash A 如果存在 A 的基於前提 Gamma 的自然演繹證明。

Ja?kowski 和 Prawitz 等人藉助方框(box)來描述自然演繹的推理規則:

經典邏輯的自然演繹規則

  • 合取引入: frac{A phantom{two} B}{Awedge B}wedge i
  • 合取消除: frac{Awedge B}{A}wedge e_1,frac{Awedge B}{B}wedge e_2
  • 析取引入: frac{A}{Avee B}vee i_1,frac{B}{Avee B}vee i_2
  • 析取消除: frac{egin{matrix} & [A]\ & [ vdots ] \ Awedge B & [C] end{matrix} egin{matrix} [B]\ [ vdots ] \ [C] end{matrix} }{C}vee e (右側從A到C,從B到C應該用兩個方框括起來,因為排版限制,我臨時採用方括弧表示。)
  • 箭頭引入: frac{[A]\ [ vdots ] \ [B] }{A	o B}	o i
  • 箭頭消除: frac{A,phantom{tw}A	o B}{B}	o e
  • 否定引入: frac{[A]\ [ vdots ] \ [ot] }{
eg A}
eg i (實為箭頭引入之特例)
  • 否定消除: frac{A,phantom{tw}
eg A}{ot}
eg e
  • 謬誤沒有引入規則
  • 謬誤消除: frac{ot}{A}ot e
  • 全稱引入: frac{egin{bmatrix} y & \ & vdots \ & A(y) end{bmatrix} }{forall x.A(x)}forall i (我們隨便引入一個變數 y ,如果我們可以證得 A(y) ,那麼由於我們對 y 是不加假設的,那麼我們可以證得結論。箭頭引入不過是帶類型的全稱引入(引入結果是 forall x:A.B(x) )的特例,當 xB 中不自由出現時,我們有 forall x:A.B 即為 A	o B 。因此全稱引入乃根本大法。)
  • 全稱消除: frac{forall x.A(x)}{A(t)}forall e
  • 存在引入: frac{A(t)}{exists x.A(x)}exists i
  • 存在消除: frac{exists x.A(x) egin{bmatrix} y& A(y)\ & vdots\ & B end{bmatrix} }{B} exists e
  • 雙重否定: frac{
eg
eg A}{A}
eg
eg

此外,在全稱引入和存在消除法則里, y 不能在方框外出現。

命題 
eg B	o (B	o A) 的自然演繹證明:

  1. 
eg B ,假設
  2. ---- B ,假設
  3. ---- ot
eg e 1 2
  4. ---- Aot e 3
  5. B	o A , 	o i 2-4
  6. 
eg B	o(B	o A)	o i 1-5

Coq 證明流程示例:

Variables A B: Prop.Theorem example: ~ B -> (B -> A).Proof.intro notb.intro b.apply False_ind.elim notb.assumption.Qed.

自然演繹還可以用相繼式(sequent)的形式來表示,其優點是證明的過程會更為簡明易懂,而且排版也更為方便。

相繼式式的經典邏輯自然演繹規則

  • 合取引入: frac{Gamma vdash A phantom{two} Delta vdash B}{ Gamma, Delta vdash Awedge B}wedge i
  • 合取消除: frac{Gamma vdash Awedge B}{Gamma vdash A}wedge e_1,frac{Gamma vdash Awedge B}{Gamma vdash B}wedge e_2

析取引入: frac{Gamma vdash A}{Gamma vdash Avee B}vee i_1,frac{Gamma vdash B}{Gamma vdash Avee B}vee i_2

析取消除: frac{Gamma vdash Avee Bphantom{tw} Delta,Avdash Cphantom{tw} Theta,Bvdash C }{Gamma,Delta,Theta vdash C}vee e

  • 箭頭引入: frac{Gamma,A vdash B}{Gamma vdash A	o B}	o i
  • 箭頭消除: frac{Gamma vdash Aphantom{tw}Deltavdash A	o B}{Gamma,Deltavdash B}	o e
  • 否定引入: frac{Gamma,Avdash B}{Gammavdash A	o B}
eg i
  • 否定消除: frac{Gammavdash Aphantom{tw}Delta vdash 
eg A}{Gamma,Deltavdash ot}
eg e
  • 謬誤沒有引入規則
  • 謬誤消除: frac{Gamma vdash ot}{Gamma vdash A}ot e
  • 全稱引入: frac{Gamma vdash A(y)}{Gamma vdash forall x.A(x)}forall i
  • 全稱消除: frac{Gamma vdash forall x.A(x)}{Gamma vdash A(t)}forall e
  • 存在引入: frac{Gamma vdash A(t)}{Gamma vdash exists x.A(x)}exists i
  • 存在消除: frac{Gamma vdash exists x.A(x)phantom{tw} Delta,A(y)vdash B }{Gamma,Delta vdash B}exists e
  • 雙重否定: frac{Gamma vdash 
eg
eg A}{Gamma vdash A}
eg
eg

在全稱引入中, y 不能在 GammaA(x) 中自由出現;在存在消除中, y 不能在 GammaA(x) 或者 B 中自由出現。

參考文獻:

Handbook of Logic in Computer Science

目錄:類型論驛站寫作計劃

上一篇:證明論學習筆記2:希爾伯特系統

推薦閱讀:

TAG:邏輯學 | 證明 |