上一篇: 形式算術和遞歸函數
Gödel 不完備性定理
不完備性定理
Gödel 第一不完備性定理
K N K_N K N 中公式集
Γ \Gamma Γ 是完備的, 是指對
K N K_N K N 中任一閉式
p p p ,
Γ ⊢ p \Gamma\vdash p Γ ⊢ p 和
Γ ⊢ ¬ p \Gamma\vdash\neg p Γ ⊢ ¬ p 必居其一. Gödel 第一不完備性定理斷言,
K N K_N K N 的公理集
N \mathcal{N} N 是不完備的. 為證明這個結論, 只需構造出一個閉式, 它是
N \mathcal{N} N 不可判定的, 即
Γ ⊬ p \Gamma\not\vdash p Γ ⊢ p 且
Γ ⊬ ¬ p \Gamma\not\vdash\neg p Γ ⊢ ¬ p .
由上一篇的分析可知, K N K_N K N 上的結論可以通過 Gödel 配數轉化為關於自然數的結論, 而關於自然數的結論又可在 K N K_N K N 中形式化. 利用兩個層次間的關聯及轉化, 構造出一種具有 “自相關” 特徵的公式, 這就是 Gödel 證明的核心.
首先引入 “ω \omega ω -無矛盾” 的概念, 這是一個比 “無矛盾” 更強的條件.
公式集 Γ \Gamma Γ 是 ω \omega ω -無矛盾的, 意為對 K N K_N K N 中任一含自由變元的公式 p ( x ) p(x) p ( x ) , 以下兩條不同時成立:
對所有 n ∈ N n\in\mathbb{N} n ∈ N , Γ ⊢ p ( n ‾ ) \Gamma\vdash p(\overline{n}) Γ ⊢ p ( n ) ;
Γ ⊢ ¬ ∀ x p ( x ) \Gamma\vdash\neg\forall x\thinspace p(x) Γ ⊢ ¬∀ x p ( x ) .
接下來開始構造具有 “自相關” 形式的公式.
定義二元關係 W W W : ( n 1 , n 2 ) ∈ W (n_1,n_2)\in W ( n 1 , n 2 ) ∈ W ⇔ \Leftrightarrow ⇔ n 1 n_1 n 1 是某個公式 p ( x 1 ) p(x_1) p ( x 1 ) 的 Gödel 數, n 2 n_2 n 2 是 p ( n 1 ‾ ) p(\overline{n_1}) p ( n 1 ) 從 N \mathcal{N} N 的證明的 Gödel 數. 換一種寫法, 即
( n 1 , n 2 ) ∈ W ⇔ n 1 ∈ FM ∧ ( Sub ( 2 15 + 2 , Num ( n 1 ) , n 1 ) , n 2 ) ∈ PRF (n_1,n_2)\in W\enspace\Leftrightarrow\enspace n_1\in\text{FM}\wedge(\text{Sub}(2^{15+2},\text{Num}(n_1),n_1),n_2)\in\text{PRF} ( n 1 , n 2 ) ∈ W ⇔ n 1 ∈ FM ∧ ( Sub ( 2 15 + 2 , Num ( n 1 ) , n 1 ) , n 2 ) ∈ PRF
由 FM \text{FM} FM , Sub \text{Sub} Sub , Num \text{Num} Num , PRF \text{PRF} PRF 的遞歸性可得二元關係 W W W 的遞歸性, 從而 W W W 在 K N K_N K N 中可表示. 設 W W W 用公式 w ( x 1 , x 2 ) w(x_1,x_2) w ( x 1 , x 2 ) 可表示:
( n 1 , n 2 ) ∈ W ⇒ N ⊢ w ( n 1 ‾ , n 2 ‾ ) ( n 1 , n 2 ) ∉ W ⇒ N ⊬ w ( n 1 ‾ , n 2 ‾ )
\begin{align*}
(n_1,n_2)\in W \enspace &\Rightarrow \enspace \mathcal{N}\vdash w(\overline{n_1},\overline{n_2}) \\
(n_1,n_2)\not\in W \enspace &\Rightarrow \enspace \mathcal{N}\not\vdash w(\overline{n_1},\overline{n_2})
\end{align*}
( n 1 , n 2 ) ∈ W ( n 1 , n 2 ) ∈ W ⇒ N ⊢ w ( n 1 , n 2 ) ⇒ N ⊢ w ( n 1 , n 2 )
記
p ( x 1 ) = ∀ x 2 ¬ w ( x 1 , x 2 ) \text{p}(x_1)=\forall x_2\thinspace \neg w(x_1,x_2) p ( x 1 ) = ∀ x 2 ¬ w ( x 1 , x 2 )
它只含一個自由變元 x 1 x_1 x 1 . 令 m = g ( p ( x 1 ) ) m=\text{g}(\text{p}(x_1)) m = g ( p ( x 1 )) , 用 m ‾ \overline{m} m 去替換 p ( x 1 ) \text{p}(x_1) p ( x 1 ) 中所有自由出現的 x 1 x_1 x 1 , 得一閉式:
p ( m ‾ ) = ∀ x 2 ¬ w ( m ‾ , x 2 ) \text{p}(\overline{m})=\forall x_2\thinspace \neg w(\overline{m},x_2) p ( m ) = ∀ x 2 ¬ w ( m , x 2 )
該公式的直觀含義是: 對任何自然數 n n n , 都有 ( m , n ) ∉ W (m,n)\not\in W ( m , n ) ∈ W , 而 m m m 正是 p ( x 1 ) \text{p}(x_1) p ( x 1 ) 的 Gödel 數. 所以, 公式 p ( m ‾ ) \text{p}(\overline{m}) p ( m ) 斷言, 不存在自然數 n n n , 使得 n n n 成為 p ( m ‾ ) \text{p}(\overline{m}) p ( m ) 從 N \mathcal{N} N 的證明的 Gödel 數, 換句話說, p ( m ‾ ) \text{p}(\overline{m}) p ( m ) 斷言其自身不可證. (注意 W W W 的定義)
Gödel 第一不完備性定理 :
1. 若
N \mathcal{N} N 無矛盾, 則
N ⊬ p ( m ‾ ) \mathcal{N}\not\vdash\text{p}(\overline{m}) N ⊢ p ( m ) ,
2. 若
N \mathcal{N} N ω \omega ω -無矛盾, 則
N ⊬ ¬ p ( m ‾ ) \mathcal{N}\not\vdash\neg\text{p}(\overline{m}) N ⊢ ¬ p ( m ) .
假設 N ⊢ p ( m ‾ ) \mathcal{N}\vdash\text{p}(\overline{m}) N ⊢ p ( m ) , 即 N ⊢ ∀ x 2 ¬ w ( m ‾ , x 2 ) \mathcal{N}\vdash\forall x_2\thinspace \neg w(\overline{m},x_2) N ⊢ ∀ x 2 ¬ w ( m , x 2 ) , 則有 N ⊢ ¬ w ( m ‾ , n ‾ ) \mathcal{N}\vdash\neg w(\overline{m},\overline{n}) N ⊢ ¬ w ( m , n ) .
把 p ( m ‾ ) \text{p}(\overline{m}) p ( m ) 從 N \mathcal{N} N 的一個證明的 Gödel 數記為 n n n , 則 ( m , n ) ∈ W (m,n)\in W ( m , n ) ∈ W . 因 W W W 用 w ( x 1 , x 2 ) w(x_1,x_2) w ( x 1 , x 2 ) 可表示, 所以 N ⊢ w ( m ‾ , n ‾ ) \mathcal{N}\vdash w(\overline{m},\overline{n}) N ⊢ w ( m , n ) , 於是可得 N \mathcal{N} N 是有矛盾的.
假設 N ⊢ ¬ p ( m ‾ ) \mathcal{N}\vdash\neg\text{p}(\overline{m}) N ⊢ ¬ p ( m ) , 即 N ⊢ ¬ ∀ x 2 ¬ w ( m ‾ , x 2 ) \mathcal{N}\vdash\neg\forall x_2\thinspace \neg w(\overline{m},x_2) N ⊢ ¬∀ x 2 ¬ w ( m , x 2 ) . 由於已知 N ⊢ p ( m ‾ ) \mathcal{N}\vdash\text{p}(\overline{m}) N ⊢ p ( m ) 不成立, 所以根據 W W W 的定義可知, 對任意自然數 n n n 都有 ( m , n ) ∉ W (m,n)\not\in W ( m , n ) ∈ W , 即對任意 n n n 都有 N ⊢ ¬ w ( m ‾ , n ‾ ) \mathcal{N}\vdash\neg w(\overline{m},\overline{n}) N ⊢ ¬ w ( m , n ) , 這表明 N \mathcal{N} N 不是 ω \omega ω -無矛盾的. □ \square □
Gödel-Rosser 定理
上一節在 ω \omega ω -無矛盾的條件下證明了 N \mathcal{N} N 的不完備性, 但這個更強的條件其實是不必要的. Gödel-Rosser 定理就是僅在 “無矛盾” 的假定下證明了 N \mathcal{N} N 的不完備性.
Gödel-Rosser 定理 :
N \mathcal{N} N 的任何遞歸無矛盾擴張
N ∗ \mathcal{N}^{*} N ∗ 都不完備. 即, 如果擴張的公理集
N ∗ \mathcal{N}^{*} N ∗ 無矛盾, 且
PA ∗ \text{PA}^{*} PA ∗ (
N ∗ \mathcal{N}^{*} N ∗ 中全部公理的 Gödel 數構成的集) 是遞歸集, 那麼
N ∗ \mathcal{N}^{*} N ∗ 不完備.
把 PF \text{PF} PF 和 PRF \text{PRF} PRF 定義式 (參見上一篇) 中的 N \mathcal{N} N 改為 N ∗ \mathcal{N}^{*} N ∗ , 這不改變 PF \text{PF} PF 和 PRF \text{PRF} PRF 的遞歸性.
作二元關係 W W W 和 W ∗ W^{*} W ∗ :
( n 1 , n 2 ) ∈ W (n_1,n_2)\in W ( n 1 , n 2 ) ∈ W ⇔ \Leftrightarrow ⇔ n 1 n_1 n 1 是某個公式 p ( x 1 ) p(x_1) p ( x 1 ) 的 Gödel 數, n 2 n_2 n 2 是 p ( n 1 ‾ ) p(\overline{n_1}) p ( n 1 ) 從 N ∗ \mathcal{N}^{*} N ∗ 的證明的 Gödel 數.
( n 1 , n 2 ) ∈ W ∗ (n_1,n_2)\in W^{*} ( n 1 , n 2 ) ∈ W ∗ ⇔ \Leftrightarrow ⇔ n 1 n_1 n 1 是某個公式 p ( x 1 ) p(x_1) p ( x 1 ) 的 Gödel 數, n 2 n_2 n 2 是 ¬ p ( n 1 ‾ ) \neg p(\overline{n_1}) ¬ p ( n 1 ) 從 N ∗ \mathcal{N}^{*} N ∗ 的證明的 Gödel 數.
則 W W W 仍是遞歸的. W ∗ W^{*} W ∗ 也是遞歸的, 因為其特徵函數滿足
C W ∗ ( n 1 , n 2 ) = C FM ( n 1 ) × C PRF ( Sub ( 2 15 + 2 , Num ( n 1 ) , 2 7 ∗ n 1 ) , n 2 ) C_{W^{*}}(n_1,n_2)=C_{\text{FM}}(n_1)\times C_{\text{PRF}}(\text{Sub}(2^{15+2},\text{Num}(n_1),2^7 * n_1),n_2) C W ∗ ( n 1 , n 2 ) = C FM ( n 1 ) × C PRF ( Sub ( 2 15 + 2 , Num ( n 1 ) , 2 7 ∗ n 1 ) , n 2 )
設 W W W 和 W ∗ W^{*} W ∗ 分別用 w ( x 1 , x 2 ) w(x_1,x_2) w ( x 1 , x 2 ) 和 w ∗ ( x 1 , x 2 ) w^{*}(x_1,x_2) w ∗ ( x 1 , x 2 ) 可表示. 記
p ( x 1 ) = ∀ x 2 ( w ( x 1 , x 2 ) → ∃ y ( y ≤ x 2 ∧ w ∗ ( x 1 , y ) ) ) \text{p}(x_1)=\forall x_2\left(w(x_1,x_2)\to\exists y(y\leq x_2 \wedge w^{*}(x_1,y))\right) p ( x 1 ) = ∀ x 2 ( w ( x 1 , x 2 ) → ∃ y ( y ≤ x 2 ∧ w ∗ ( x 1 , y )) )
其中 y y y 取不在 w ( x 1 , x 2 ) w(x_1,x_2) w ( x 1 , x 2 ) 和 w ∗ ( x 1 , x 2 ) w^{*}(x_1,x_2) w ∗ ( x 1 , x 2 ) 中出現的某個變元. 令 m = g ( p ( x 1 ) ) m=\text{g}(\text{p}(x_1)) m = g ( p ( x 1 )) , 則:
p ( m ‾ ) = ∀ x 2 ( w ( m ‾ , x 2 ) → ∃ y ( y ≤ x 2 ∧ w ∗ ( m ‾ , y ) ) ) \text{p}(\overline{m})=\forall x_2\left(w(\overline{m},x_2)\to\exists y(y\leq x_2 \wedge w^{*}(\overline{m},y))\right) p ( m ) = ∀ x 2 ( w ( m , x 2 ) → ∃ y ( y ≤ x 2 ∧ w ∗ ( m , y )) )
直觀上, p ( m ‾ ) \text{p}(\overline{m}) p ( m ) 斷言, 若其自身從 N ∗ \mathcal{N}^{*} N ∗ 可證, 那麼其否定就也從 N ∗ \mathcal{N}^{*} N ∗ 可證且證明更簡單 (對應 Gödel 數更小).
容易從 N ∗ ⊢ p ( m ‾ ) \mathcal{N}^{*}\vdash \text{p}(\overline{m}) N ∗ ⊢ p ( m ) 和 N ∗ ⊢ ¬ p ( m ‾ ) \mathcal{N}^{*}\vdash\neg\text{p}(\overline{m}) N ∗ ⊢ ¬ p ( m ) 中分別推出矛盾, 從而在 N ∗ \mathcal{N}^{*} N ∗ 無矛盾的前提下證明 N ∗ ⊬ p ( m ‾ ) \mathcal{N}^{*}\not\vdash \text{p}(\overline{m}) N ∗ ⊢ p ( m ) 且 N ∗ ⊬ ¬ p ( m ‾ ) \mathcal{N}^{*}\not\vdash\neg\text{p}(\overline{m}) N ∗ ⊢ ¬ p ( m ) , 即 N ∗ \mathcal{N}^{*} N ∗ 是不完備的. □ \square □
但由此不能得出: N \mathcal{N} N 的任何無矛盾擴張都不可能完備. 例如, 可以仿照證明 K K K 的完全性時的做法, 在保證無矛盾的前提下遍歷 K N K_N K N 的所有閉式, 歸納地定義出一串 N \mathcal{N} N 的無矛盾擴張, 最後將這些擴張全都並起來得到 Γ ∗ \Gamma^{*} Γ ∗ . 若把 Γ ∗ \Gamma^{*} Γ ∗ 作為擴張的算術公理集, 我們就達到了完備化. 但是, 由 Gödel-Rosser 定理, Γ ∗ \Gamma^{*} Γ ∗ 中公理的 Gödel 數集必是非遞歸的, 故由 Church 論題, 不存在算法可用來確定任給的公式是不是 Γ ∗ \Gamma^{*} Γ ∗ 中的公理, 也不存在算法可用來確定任給的有限公式序列是不是從 Γ ∗ \Gamma^{*} Γ ∗ 的證明.
把所有在 N \mathbb{N} N 中恆真的 K N K_N K N 的公式構成的集記作 Tr \text{Tr} Tr , 則 Tr \text{Tr} Tr 也是 N \mathcal{N} N 的無矛盾完備擴張. 但是由 Gödel-Rosser 定理, Tr \text{Tr} Tr 中公式的 Gödel 數構成的集 TR \text{TR} TR 必是非遞歸的.
總之, 任何把 Peano 形式算術包含在內的數學形式系統, 只要有算法能用來確定該系統的任一篇文章 (公式的有限序列) 是不是一個證明 (這時說該系統是 “遞歸可公理化” 的), 這樣的系統一定不完備.
Gödel 第二不完備性定理
20世紀20年代初, Hilbert 提出了著名的有窮主義綱領, 其核心是要證明包含無窮的經典數學能夠幫助我們獲得關於具體, 有限事物的知識, 而這種證明方法自身必須是無疑議的. 為此, Hilbert 構建了原始遞歸算術 (PRA \text{PRA} PRA ), 其中只包含原始遞歸函數, 於是目標就轉變為證明 Peano 算術 (PA \text{PA} PA ) 相對於 PRA \text{PRA} PRA 的保守性 (即對 PRA \text{PRA} PRA 中任何公式 φ \varphi φ , 若 PA ⊢ φ \text{PA}\vdash\varphi PA ⊢ φ , 則 φ \varphi φ ), 而保守性又可進一步歸約為 PA \text{PA} PA 的無矛盾性. 所以 Hilbert 綱領的目標最終歸結為: 在 PRA \text{PRA} PRA 中證明 PA \text{PA} PA 的無矛盾性 (把這裡的 PA \text{PA} PA 換成比方說 ZFC \text{ZFC} ZFC , 就可以使綱領涵蓋更多數學領域, 而不僅僅是算術). 然而, Gödel 的第二不完備性定理否定了這個可能, 從而在一定程度上否定了 Hilbert 的有窮主義綱領.
Gödel 第二不完備性定理斷言: 如果包括初等數論在內的數學形式系統是無矛盾的, 那麼這種無矛盾性就不可能在此系統中得到證明. 下面就形式系統 K N K_N K N 證明第二不完備性定理的一種易證形式 . 其證明需要把第一定理前半部分的證明在系統中再次形式化.
我們已經知道, 二元關係
PRF = { ( n 1 , n 2 ) : n 1 = g ( q ) , n 2 是 q 從 N 的證明的 G o ¨ del 數 } \text{PRF}=\lbrace (n_1,n_2):n_1=\text{g}(q), n_2\text{ 是 }q\text{ 從 }\mathcal{N}\text{ 的證明的 Gödel 數 } \rbrace PRF = {( n 1 , n 2 ) : n 1 = g ( q ) , n 2 是 q 從 N 的證明的 G o ¨ del 數 }
是遞歸的. 設 PRF \text{PRF} PRF 用公式 prf ( x 1 , x 2 ) \text{prf}(x_1,x_2) prf ( x 1 , x 2 ) 可表示, 記 pr ( x 1 ) = ∃ x 2 prf ( x 1 , x 2 ) \text{pr}(x_1)=\exists x_2\thinspace\text{prf}(x_1,x_2) pr ( x 1 ) = ∃ x 2 prf ( x 1 , x 2 ) .
下面先證明兩個引理.
第一可推性條件 : 對任一公式 q q q ,
N ⊢ q ⇒ N ⊢ pr ( ⌜ q ⌝ ) \mathcal{N}\vdash q\enspace\Rightarrow\enspace\mathcal{N}\vdash\text{pr}(\ulcorner q\urcorner) N ⊢ q ⇒ N ⊢ pr ( ┌ q ┐ )
其中 ⌜ q ⌝ \ulcorner q\urcorner ┌ q ┐ 是 g ( q ) ‾ \overline{\text{g}(q)} g ( q ) 的簡寫.
證明: 記 m = g ( q ) m=\text{g}(q) m = g ( q ) , 則 m ‾ = ⌜ q ⌝ \overline{m}=\ulcorner q\urcorner m = ┌ q ┐ . 設 n n n 是 q q q 從 N \mathcal{N} N 的一個證明的 Gödel 數, 則 ( m , n ) ∈ PRF (m,n)\in\text{PRF} ( m , n ) ∈ PRF , 進而有 N ⊢ prf ( m ‾ , n ‾ ) \mathcal{N}\vdash\text{prf}(\overline{m},\overline{n}) N ⊢ prf ( m , n ) .
由此使用 ∃ 1 \exists_1 ∃ 1 規則 (見筆記第2篇) 便得 N ⊢ ∃ x 2 prf ( x 1 , x 2 ) \mathcal{N}\vdash\exists x_2\thinspace\text{prf}(x_1,x_2) N ⊢ ∃ x 2 prf ( x 1 , x 2 ) , 即 N ⊢ pr ( ⌜ q ⌝ ) \mathcal{N}\vdash\text{pr}(\ulcorner q\urcorner) N ⊢ pr ( ┌ q ┐ ) . □ \square □
可推性條件
既然有第一可推性條件, 那麼自然有另外的可推性條件:
( D 1 ) N ⊢ q ⇒ N ⊢ pr ( ⌜ q ⌝ ) ( D 2 ) N ⊢ pr ( ⌜ q ⌝ ) → pr ( ⌜ pr ( ⌜ q ⌝ ) ⌝ ) ( D 3 ) N ⊢ pr ( ⌜ q → r ⌝ ) → ( pr ( ⌜ q ⌝ ) → pr ( ⌜ r ⌝ ) )
\begin{align*}
&(D1)\quad \mathcal{N}\vdash q\enspace\Rightarrow\enspace\mathcal{N}\vdash\text{pr}(\ulcorner q\urcorner)\
&(D2)\quad \mathcal{N}\vdash \text{pr}(\ulcorner q\urcorner)\to \text{pr}(\ulcorner \text{pr}\left(\ulcorner q\urcorner)\urcorner\right) \
&(D3)\quad \mathcal{N}\vdash\text{pr}(\ulcorner q\to r\urcorner)\to(\text{pr}(\ulcorner q\urcorner)\to\text{pr}(\ulcorner r\urcorner))
\end{align*}
( D 1 ) N ⊢ q ⇒ N ⊢ pr ( ┌ q ┐ ) ( D 2 ) N ⊢ pr ( ┌ q ┐ ) → pr ( ┌ pr ( ┌ q ┐ ) ┐ ) ( D 3 ) N ⊢ pr ( ┌ q → r ┐ ) → ( pr ( ┌ q ┐ ) → pr ( ┌ r ┐ ))
這三條統稱為 Löb 證明條件, 其作用是在系統內再次形式化第一不完備性定理的證明. 它們把握了證明第二不完備性定理的全部條件, 但後兩條在這個對易證形式的證明當中是不必要的.
遞歸函數 Num \text{Num} Num 和 Sub \text{Sub} Sub 分別滿足: (具體定義參見上一篇)
Num ( n ) = g ( n ‾ ) Sub ( g ( x i ) , g ( t ) , g ( p ( x i ) ) ) = g ( p ( t ) )
\begin{align*}
&\text{Num}(n) = \text{g}(\overline{n}) \\
&\text{Sub}(\text{g}(x_i),\text{g}(t),\text{g}(p(x_i))) = \text{g}(p(t))
\end{align*}
Num ( n ) = g ( n ) Sub ( g ( x i ) , g ( t ) , g ( p ( x i ))) = g ( p ( t ))
用 Num \text{Num} Num 和 Sub \text{Sub} Sub 定義一個新的二元遞歸函數 Su \text{Su} Su :
Su ( n 1 , n 2 ) = Sub ( g ( x 1 ) , Num ( n 1 ) , n 2 ) \text{Su}(n_1,n_2)=\text{Sub}\left(\text{g}(x_1),\text{Num}(n_1),n_2\right) Su ( n 1 , n 2 ) = Sub ( g ( x 1 ) , Num ( n 1 ) , n 2 )
其中 g ( x 1 ) = 2 15 + 2 \text{g}(x_1)=2^{15+2} g ( x 1 ) = 2 15 + 2 . 則 Su \text{Su} Su 滿足
Su ( n 1 , g ( p ( x 1 ) ) ) = g ( p ( n 1 ‾ ) ) \text{Su}(n_1,\text{g}(p(x_1)))=\text{g}(p(\overline{n_1})) Su ( n 1 , g ( p ( x 1 ))) = g ( p ( n 1 ))
設 Su \text{Su} Su 用公式 su ( x 1 , x 2 , y ) \text{su}(x_1,x_2,y) su ( x 1 , x 2 , y ) 可表示.
對角線引理 : 對任一以 x 1 x_1 x 1 為僅有的自由變元的公式 p ( x 1 ) p(x_1) p ( x 1 ) , 必存在閉式 q 0 q_0 q 0 滿足:
N ⊢ q 0 ↔ p ( ⌜ q 0 ⌝ ) \mathcal{N}\vdash q_0\leftrightarrow p(\ulcorner q_0\urcorner) N ⊢ q 0 ↔ p ( ┌ q 0 ┐ )
我們把具有這種性質的 q 0 q_0 q 0 叫做公式 p ( x 1 ) p(x_1) p ( x 1 ) 的不動點.
證明: 記
r ( x 1 ) = ∃ y ( p ( y ) ∧ su ( x 1 , x 1 , y ) ) , m = g ( r ( x 1 ) ) , q 0 = r ( m ‾ ) , k = g ( q 0 ) .
\begin{align*}
&r(x_1) = \exists y(p(y)\wedge\text{su}(x_1,x_1,y)), \\
&m = \text{g}(r(x_1)), \\
&q_0 = r(\overline{m}), \\
&k = \text{g}(q_0).
\end{align*}
r ( x 1 ) = ∃ y ( p ( y ) ∧ su ( x 1 , x 1 , y )) , m = g ( r ( x 1 )) , q 0 = r ( m ) , k = g ( q 0 ) .
則 q 0 q_0 q 0 即為所要求的不動點.
顯然, 我們有 q 0 = r ( m ‾ ) = ∃ y ( p ( y ) ∧ su ( m ‾ , m ‾ , y ) ) q_0=r(\overline{m})=\exists y(p(y)\wedge\text{su}(\overline{m},\overline{m},y)) q 0 = r ( m ) = ∃ y ( p ( y ) ∧ su ( m , m , y )) , 又根據 Su \text{Su} Su 的定義, Su ( m , m ) = g ( r ( m ‾ ) ) = k \text{Su}(m,m)=\text{g}(r(\overline{m}))=k Su ( m , m ) = g ( r ( m )) = k , 所以
q 0 ⇔ ∃ y ( p ( y ) ∧ y ≈ k ‾ ) ⇔ ∃ y ( p ( y ) ∧ y ≈ ⌜ r ( m ‾ ) ⌝ ) ⇔ ∃ y ( p ( y ) ∧ y ≈ ⌜ q 0 ⌝ ) ⇔ p ( ⌜ q 0 ⌝ )
\begin{aligned}
q_0 & \Leftrightarrow \exists y(p(y)\wedge y\approx \overline{k}) \\
& \Leftrightarrow \exists y(p(y)\wedge y\approx \ulcorner r(\overline{m})\urcorner) \\
& \Leftrightarrow \exists y(p(y)\wedge y\approx \ulcorner q_0\urcorner) \\
& \Leftrightarrow p(\ulcorner q_0\urcorner)
\end{aligned}
q 0 ⇔ ∃ y ( p ( y ) ∧ y ≈ k ) ⇔ ∃ y ( p ( y ) ∧ y ≈ ┌ r ( m ) ┐ ) ⇔ ∃ y ( p ( y ) ∧ y ≈ ┌ q 0 ┐ ) ⇔ p ( ┌ q 0 ┐ )
其中, 最後一行的 ⇒ \Rightarrow ⇒ 使用了 ∃ 2 \exists_2 ∃ 2 規則. □ \square □
定義一個新的二元關係 PRF ∗ \text{PRF}^{*} PRF ∗ :
PRF ∗ = { ( n 1 , n 2 ) : n 1 = g ( q ) , n 2 是 pr ( n 1 ‾ ) → ¬ q 從 N 的證明的 G o ¨ del 數 } \text{PRF}^{*}=\lbrace (n_1,n_2):n_1=\text{g}(q), n_2\text{ 是 }\text{pr}(\overline{n_1})\to\neg q\text{ 從 }\mathcal{N}\text{ 的證明的 Gödel 數 }\rbrace PRF ∗ = {( n 1 , n 2 ) : n 1 = g ( q ) , n 2 是 pr ( n 1 ) → ¬ q 從 N 的證明的 G o ¨ del 數 }
易證 PRF ∗ \text{PRF}^{*} PRF ∗ 是遞歸的.
設 PRF ∗ \text{PRF}^{*} PRF ∗ 用公式 prf ∗ ( x 1 , x 2 ) \text{prf}^{*}(x_1,x_2) prf ∗ ( x 1 , x 2 ) 可表示, 記
pr ∗ ( x 1 ) = ∃ x 2 prf ∗ ( x 1 , x 2 ) \text{pr}^{*}(x_1)=\exists x_2\thinspace\text{prf}^{*}(x_1,x_2) pr ∗ ( x 1 ) = ∃ x 2 prf ∗ ( x 1 , x 2 )
引入記號 con N \text{con}_{\mathcal{N}} con N :
con N = ∀ x 1 ¬ ( pr ( x 1 ) ∧ pr ∗ ( x 1 ) ) \text{con}_{\mathcal{N}}=\forall x_1\neg(\text{pr}(x_1)\wedge\text{pr}^{*}(x_1)) con N = ∀ x 1 ¬ ( pr ( x 1 ) ∧ pr ∗ ( x 1 ))
con N \text{con}_{\mathcal{N}} con N 成立意味著任何公式
q q q 都不會使
N ⊢ q \mathcal{N}\vdash q N ⊢ q 和
N ⊢ pr ( ⌜ q ⌝ ) → ¬ q \mathcal{N}\vdash\text{pr}(\ulcorner q\urcorner)\to\neg q N ⊢ pr ( ┌ q ┐ ) → ¬ q 同時成立, 根據第一可推性條件, 這也就意味著, 任何公式
q q q 都不會使
N ⊢ q \mathcal{N}\vdash q N ⊢ q 和
N ⊢ ¬ q \mathcal{N}\vdash\neg q N ⊢ ¬ q 同時成立. 所以公式
con N \text{con}_{\mathcal{N}} con N 的直觀意思就是:
N \mathcal{N} N 無矛盾.
現考慮公式 pr ( x 1 ) → pr ∗ ( x 1 ) \text{pr}(x_1)\to\text{pr}^{*}(x_1) pr ( x 1 ) → pr ∗ ( x 1 ) , x 1 x_1 x 1 是其唯一的自由變元, 所以由對角線引理, 該公式有不動點 q 0 q_0 q 0 :
N ⊢ q 0 ↔ ( pr ( ⌜ q 0 ⌝ ) → pr ∗ ( ⌜ q 0 ⌝ ) ) (1) \mathcal{N}\vdash q_0\leftrightarrow(\text{pr}(\ulcorner q_0\urcorner)\to\text{pr}^{*}(\ulcorner q_0\urcorner))\tag{1} N ⊢ q 0 ↔ ( pr ( ┌ q 0 ┐ ) → pr ∗ ( ┌ q 0 ┐ )) ( 1 )
利用這個不動點, 我們可以證明 Gödel 第二不完備性定理的如下形式: 若 N \mathcal{N} N 無矛盾, 則 N ⊬ con N \mathcal{N}\not\vdash \text{con}_{\mathcal{N}} N ⊢ con N .
反設 N ⊢ con N \mathcal{N}\vdash \text{con}_{\mathcal{N}} N ⊢ con N , 即 N ⊢ ∀ x 1 ¬ ( pr ( x 1 ) ∧ pr ∗ ( x 1 ) ) \mathcal{N}\vdash\forall x_1\neg(\text{pr}(x_1)\wedge\text{pr}^{*}(x_1)) N ⊢ ∀ x 1 ¬ ( pr ( x 1 ) ∧ pr ∗ ( x 1 )) , 則有
N ⊢ ¬ ( pr ( ⌜ q 0 ⌝ ) ∧ pr ∗ ( ⌜ q 0 ⌝ ) ) (2) \mathcal{N}\vdash\neg(\text{pr}(\ulcorner q_0\urcorner)\wedge\text{pr}^{*}(\ulcorner q_0\urcorner))\tag{2} N ⊢ ¬ ( pr ( ┌ q 0 ┐ ) ∧ pr ∗ ( ┌ q 0 ┐ )) ( 2 )
因此有
N ∪ { pr ( ⌜ q 0 ⌝ ) , q 0 } ⊢ ¬ pr ∗ ( ⌜ q 0 ⌝ ) (3) \mathcal{N}\cup\lbrace \text{pr}(\ulcorner q_0\urcorner),q_0\rbrace\vdash\neg\text{pr}^{*}(\ulcorner q_0\urcorner)\tag{3} N ∪ { pr ( ┌ q 0 ┐ ) , q 0 } ⊢ ¬ pr ∗ ( ┌ q 0 ┐ ) ( 3 )
又由 ( 1 ) (1) ( 1 ) 得
N ∪ { pr ( ⌜ q 0 ⌝ ) , q 0 } ⊢ pr ∗ ( ⌜ q 0 ⌝ ) (4) \mathcal{N}\cup\lbrace \text{pr}(\ulcorner q_0\urcorner),q_0\rbrace\vdash\text{pr}^{*}(\ulcorner q_0\urcorner)\tag{4} N ∪ { pr ( ┌ q 0 ┐ ) , q 0 } ⊢ pr ∗ ( ┌ q 0 ┐ ) ( 4 )
結合 ( 3 ) (3) ( 3 ) , ( 4 ) (4) ( 4 ) 用歸謬律可得
N ⊢ pr ( ⌜ q 0 ⌝ ) ) → ¬ q 0 \mathcal{N}\vdash \text{pr}(\ulcorner q_0\urcorner))\to\neg q_0 N ⊢ pr ( ┌ q 0 ┐ )) → ¬ q 0
令 k k k 為公式 pr ( ⌜ q 0 ⌝ ) ) → ¬ q 0 \text{pr}(\ulcorner q_0\urcorner))\to\neg q_0 pr ( ┌ q 0 ┐ )) → ¬ q 0 從 N \mathcal{N} N 的一個證明的 Gödel 數. 則 ( g ( q 0 ) , k ) ∈ PRF ∗ (\text{g}(q_0),k)\in\text{PRF}^{*} ( g ( q 0 ) , k ) ∈ PRF ∗ , 所以有
N ⊢ ∃ x 2 prf ∗ ( ⌜ q 0 ⌝ , x 2 ) \mathcal{N}\vdash \exists x_2\thinspace \text{prf}^{*}(\ulcorner q_0\urcorner,x_2) N ⊢ ∃ x 2 prf ∗ ( ┌ q 0 ┐ , x 2 )
即 N ⊢ pr ∗ ( ⌜ q 0 ⌝ ) ) \mathcal{N}\vdash \text{pr}^{*}(\ulcorner q_0\urcorner)) N ⊢ pr ∗ ( ┌ q 0 ┐ )) .
由此可知, N ⊢ pr ( ⌜ q 0 ⌝ ) → pr ∗ ( ⌜ q 0 ⌝ ) \mathcal{N}\vdash \text{pr}(\ulcorner q_0\urcorner)\to\text{pr}^{*}(\ulcorner q_0\urcorner) N ⊢ pr ( ┌ q 0 ┐ ) → pr ∗ ( ┌ q 0 ┐ ) . 再結合 ( 3 ) (3) ( 3 ) 即得 N ⊢ q 0 \mathcal{N}\vdash q_0 N ⊢ q 0 , 進而由第一可推性條件得 N ⊢ pr ( ⌜ q 0 ⌝ ) ) \mathcal{N}\vdash \text{pr}(\ulcorner q_0\urcorner)) N ⊢ pr ( ┌ q 0 ┐ )) .
最後, 結合兩式便有 N ⊢ pr ( ⌜ q 0 ⌝ ) ∧ pr ∗ ( ⌜ q 0 ⌝ ) \mathcal{N}\vdash\text{pr}(\ulcorner q_0\urcorner)\wedge\text{pr}^{*}(\ulcorner q_0\urcorner) N ⊢ pr ( ┌ q 0 ┐ ) ∧ pr ∗ ( ┌ q 0 ┐ ) , 與 ( 2 ) (2) ( 2 ) 產生矛盾. 若 N \mathcal{N} N 無矛盾, 則 N ⊬ con N \mathcal{N}\not\vdash \text{con}_{\mathcal{N}} N ⊢ con N . 這就證明了第二不完備性定理. □ \square □
進而, 如果假定第二和第三可推性條件 (參見上文) 也成立, 那麼可以證明
N ⊢ ¬ ( pr ( ⌜ q 0 ⌝ ) ∧ pr ∗ ( ⌜ q 0 ⌝ ) ) ↔ ¬ pr ( ⌜ 0 ‾ ≉ 0 ‾ ⌝ ) \mathcal{N}\vdash\neg(\text{pr}(\ulcorner q_0\urcorner)\wedge\text{pr}^{*}(\ulcorner q_0\urcorner))\leftrightarrow\neg\text{pr}(\ulcorner \overline{0}\not\approx\overline{0}\urcorner) N ⊢ ¬ ( pr ( ┌ q 0 ┐ ) ∧ pr ∗ ( ┌ q 0 ┐ )) ↔ ¬ pr ( ┌ 0 ≈ 0 ┐ )
後兩條可推性條件使得從 ⊥ \bot ⊥ (矛盾) 推出公式 0 ‾ ≉ 0 ‾ \overline{0}\not\approx\overline{0} 0 ≈ 0 的證明可在系統中再次形式化.
這給出了 Gödel 第二不完備性定理的一種通常的形式
N ⊬ ¬ pr ( ⌜ 0 ‾ ≉ 0 ‾ ⌝ ) \mathcal{N}\not\vdash \neg\text{pr}(\ulcorner \overline{0}\not\approx\overline{0}\urcorner) N ⊢ ¬ pr ( ┌ 0 ≈ 0 ┐ )
直觀理解
對第二不完備性定理, 還有另一種 (不嚴格的) 直觀理解: 從 Gödel 句子 p p p 出發, p p p 等價於 “p p p 不可證”, 所以如果 N \mathcal{N} N 的無矛盾性在系統內可證, 那麼就能在系統內證明 “p p p 不可證”, 也就證明了與之等價的 p p p . 這與 p p p 的不可判定性矛盾. Hilbert 和 Bernays 最早完成了這種證明思路的嚴格化.
形式算術的不可判定性
作為 Gödel-Rosser 定理的推論, 已經證明 K N K_N K N 在 N \mathbb{N} N 中恆真公式的 Gödel 數構成的集 TR \text{TR} TR 是非遞歸的, 按 Church 論題, 不存在算法可以確定任給公式是否在 N \mathbb{N} N 中恆真. 這一事實稱為 K N K_N K N 的語義不可判定性, 而下面討論的是 K N K_N K N 的語法不可判定性.
把從 N \mathcal{N} N 可證的公式 Gödel 數全體構成的集記作 TH \text{TH} TH :
TH = { g ( p ) : N ⊢ p } \text{TH}=\left\lbrace \text{g}(p):\mathcal{N}\vdash p\right\rbrace TH = { g ( p ) : N ⊢ p }
由謂詞演算的可靠性定理知 TH ⊆ TR \text{TH}\subseteq\text{TR} TH ⊆ TR .
K N K_N K N 的語法不可判定性是指: 若
N \mathcal{N} N 無矛盾, 則
TH \text{TH} TH 是非遞歸集.
反設 TH \text{TH} TH 是遞歸的, 並設它用公式 p ( x 1 ) p(x_1) p ( x 1 ) 可表示. 作一元遞歸函數 f f f :
f ( n ) = Sub ( 2 15 + 2 , Num ( n ) , n ) f(n)=\text{Sub}(2^{15+2},\text{Num}(n),n) f ( n ) = Sub ( 2 15 + 2 , Num ( n ) , n )
f ( n ) f(n) f ( n ) 的意思是用
n ‾ \overline{n} n 去替換 Gödel 數為
n n n 的公式中所有自由出現的
x 1 x_1 x 1 所得結果的 Gödel 數. 設
f f f 用公式
s ( x 1 , y ) s(x_1,y) s ( x 1 , y ) 可表示.
記
r ( x 1 ) = ∀ x 2 ( s ( x 1 , x 2 ) → ¬ p ( x 2 ) ) , m = g ( r ( x 1 ) ) , k = g ( r ( m ‾ ) ) .
\begin{align*}
&r(x_1) = \forall x_2(s(x_1,x_2)\to\neg p(x_2)), \\
&m = \text{g}(r(x_1)), \\
&k = \text{g}(r(\overline{m})).
\end{align*}
r ( x 1 ) = ∀ x 2 ( s ( x 1 , x 2 ) → ¬ p ( x 2 )) , m = g ( r ( x 1 )) , k = g ( r ( m )) .
按 f f f 的定義, f ( m ) = k f(m)=k f ( m ) = k . 由此可得:
N ⊢ s ( m ‾ , k ‾ ) , N ⊢ s ( m ‾ , x 2 ) → x 2 ≈ k ‾ , r ( m ‾ ) = ∀ x 2 ( s ( m ‾ , x 2 ) → ¬ p ( x 2 ) ) .
\begin{align*}
&\mathcal{N}\vdash s(\overline{m},\overline{k}), \tag{1} \\
&\mathcal{N}\vdash s(\overline{m},x_2)\to x_2\approx\overline{k}, \tag{2} \\
&r(\overline{m})=\forall x_2(s(\overline{m},x_2)\to\neg p(x_2)). \tag{3}
\end{align*}
N ⊢ s ( m , k ) , N ⊢ s ( m , x 2 ) → x 2 ≈ k , r ( m ) = ∀ x 2 ( s ( m , x 2 ) → ¬ p ( x 2 )) . ( 1 ) ( 2 ) ( 3 )
假設 N ⊢ r ( m ‾ ) \mathcal{N}\vdash r(\overline{m}) N ⊢ r ( m ) , 即 k ∈ TH k\in\text{TH} k ∈ TH , 則 N ⊢ p ( k ‾ ) \mathcal{N}\vdash p(\overline{k}) N ⊢ p ( k ) . 結合 ( 3 ) (3) ( 3 ) 可得
N ⊢ s ( m ‾ , k ‾ ) → ¬ p ( k ‾ ) \mathcal{N}\vdash s(\overline{m},\overline{k})\to\neg p(\overline{k}) N ⊢ s ( m , k ) → ¬ p ( k )
再由 ( 1 ) (1) ( 1 ) 又得 N ⊢ ¬ p ( k ‾ ) \mathcal{N}\vdash\neg p(\overline{k}) N ⊢ ¬ p ( k ) , 於是產生矛盾.
假設 r ( m ‾ ) r(\overline{m}) r ( m ) 從 N \mathcal{N} N 中不可證, 即 k ∉ TH k\not\in\text{TH} k ∈ TH , 則 N ⊢ ¬ p ( k ‾ ) \mathcal{N}\vdash\neg p(\overline{k}) N ⊢ ¬ p ( k ) , 於是有
N ⊢ k ‾ ≈ x 2 → ¬ p ( x 2 ) \mathcal{N}\vdash \overline{k}\approx x_2\to\neg p(x_2) N ⊢ k ≈ x 2 → ¬ p ( x 2 )
結合 ( 2 ) (2) ( 2 ) 得到
N ⊢ s ( m ‾ , x 2 ) → ¬ p ( x 2 ) \mathcal{N}\vdash s(\overline{m},x_2)\to\neg p(x_2) N ⊢ s ( m , x 2 ) → ¬ p ( x 2 )
使用 Gen \text{Gen} Gen 規則即得 N ⊢ r ( m ‾ ) \mathcal{N}\vdash r(\overline{m}) N ⊢ r ( m ) , 與假設不可證相矛盾. □ \square □
綜上所述, TH \text{TH} TH 是非遞歸集. 從而沒有算法能用來確定任給公式是否從 N \mathcal{N} N 可證. 綜合語義和語法兩方面便知, 沒有算法可以用來確定任給公式是不是 Peano 形式算術的定理.
Hilbert 第十問題
能否設計出一個通用算法, 在有限步內確定一個任給的多元整係數方程 (丢番圖方程) 是否有整數解? 答案是否定的.
首先容易看出, 原問題等價於要求用算法判定任給丢番圖方程是否有正整數解. 因為要檢驗 p ( x 1 , ⋯ , x n ) = 0 p(x_1,\cdots,x_n)=0 p ( x 1 , ⋯ , x n ) = 0 是否有整數解, 只需分別檢驗 2 n 2^n 2 n 個方程
p ( x 1 , x 2 ⋯ , x n ) = 0 p ( − x 1 , x 2 ⋯ , x n ) = 0 p ( x 1 , − x 2 ⋯ , x n ) = 0 ⋯ ⋯ p ( x 1 , x 2 ⋯ , − x n ) = 0
\begin{align*}
&p(x_1,x_2\cdots,x_n) = 0 \
&p(-x_1,x_2\cdots,x_n) = 0 \
&p(x_1,-x_2\cdots,x_n) = 0 \
&\cdots\cdots \
&p(x_1,x_2\cdots,-x_n) = 0
\end{align*}
p ( x 1 , x 2 ⋯ , x n ) = 0 p ( − x 1 , x 2 ⋯ , x n ) = 0 p ( x 1 , − x 2 ⋯ , x n ) = 0 ⋯⋯ p ( x 1 , x 2 ⋯ , − x n ) = 0
是否有正整數解.
我們稱一個集合 S S S 是丢番圖的, 當且僅當存在一個丢番圖方程 p ( x , y 1 , ⋯ , y n ) = 0 p(x,y_1,\cdots,y_n)=0 p ( x , y 1 , ⋯ , y n ) = 0 使得 x ∈ S x\in S x ∈ S ⇔ \Leftrightarrow ⇔ x x x 是方程 p ( x , y 1 , ⋯ , y n ) = 0 p(x,y_1,\cdots,y_n)=0 p ( x , y 1 , ⋯ , y n ) = 0 的正整數解. 例如, 所有 2 2 2 或 3 3 3 的倍數構成的集 A A A 是丢番圖集, 因為 x ∈ A x\in A x ∈ A ⇔ \Leftrightarrow ⇔ x x x 是方程 ( x − 2 y 1 ) ( x − 3 y 2 ) = 0 (x-2y_1)(x-3y_2)=0 ( x − 2 y 1 ) ( x − 3 y 2 ) = 0 的正整數解.
可以證明, 所有丢番圖集都是遞歸可枚舉的. 而 Matiyasevich 證明了其逆命題: 所有遞歸可枚舉集都是丢番圖集, 所以丢番圖集和遞歸可枚舉集是一回事. 我們已經證明了存在非遞歸的遞歸可枚舉集, 於是便可推知: 不存在 Hilbert 所要求的通用算法.
遞歸可枚舉集與算術集
可證公式集的遞歸可枚舉性
空集以及一元遞歸函數 (可以是部分遞歸函數) 的值域叫做遞歸可枚舉集 . 非空集 A A A 是遞歸可枚舉集, 意味著存在一元遞歸函數 f f f 使
A = { a : ∃ n ∈ N s.t. a = f ( n ) } A=\left\lbrace a:\exists n\in\mathbb{N}\enspace\text{s.t.}\enspace a=f(n)\right\rbrace A = { a : ∃ n ∈ N s.t. a = f ( n ) }
根據 Church 論題, 存在算法能計算遞歸函數 f f f 的函數值, 從而把 A A A 的成員一個不漏 (但允許重複) 地列舉出來.
命題: 遞歸集一定是遞歸可枚舉集.
設非空集 A A A 是遞歸集, 任取 A A A 的元素 a 0 a_0 a 0 . 取定 a 0 a_0 a 0 後, 下式定義的遞歸函數 f f f 的值域就是 A A A :
f ( n ) = n C A ( n ) + a 0 sg ‾ ( C A ( n ) ) f(n)=nC_A(n)+a_0\thinspace\overline{\text{sg}}(C_A(n)) f ( n ) = n C A ( n ) + a 0 sg ( C A ( n ))
該函數相當於對自然數逐個檢驗的算法. 其中, 加上一項 a 0 sg ‾ ( C A ( n ) ) a_0\thinspace\overline{\text{sg}}(C_A(n)) a 0 sg ( C A ( n )) 是為了在輸入 n 0 ∉ A n_0\not\in A n 0 ∈ A 時輸出 a 0 ∈ A a_0\in A a 0 ∈ A , 而非 0 0 0 (有可能 0 ∉ A 0\not\in A 0 ∈ A ). □ \square □
上述命題的逆命題不成立, 存在非遞歸的遞歸可枚舉集. 例如 TH \text{TH} TH 是遞歸可枚舉集, 任取 m ∈ TH m\in\text{TH} m ∈ TH (如取 m m m 為某公理的 Gödel 數), 則如下定義的遞歸函數 f f f 的值域給出 TH \text{TH} TH :
f ( n ) = ( n ) lh ( n ) − ˙ 1 × C PF ( n ) + m sg ‾ ( C PF ( n ) ) f(n)=(n)_{\text{lh}(n)\dot{-}1}\times C_{\text{PF}}(n)+m\thinspace\overline{\text{sg}}(C_{\text{PF}}(n)) f ( n ) = ( n ) lh ( n ) − ˙ 1 × C PF ( n ) + m sg ( C PF ( n ))
直觀來看, 該算法的意思是: 逐一拿出從 N \mathcal{N} N 的證明文章 (根據 C PF C_{\text{PF}} C PF 的定義), 再取出文章的最後一個公式, 這樣就能枚舉出所有從 N \mathcal{N} N 可證的公式.
進而, 若 A A A 和 A A A 的餘集 A ‾ = N − A \overline{A}=\mathbb{N}-A A = N − A 都是遞歸可枚舉集, 則 A A A 是遞歸集.
設非空集 A A A 和非空集 A ‾ \overline{A} A 分別是一元遞歸函數 f f f 和 h h h 的值域, 則 A A A 的遞歸性由下式給出:
C A ( n ) = sg ‾ ( n − ¨ f ( μ x [ ( f ( x ) − ¨ n ) ( h ( x ) − ¨ n ) = 0 ] ) ) C_A(n)=\overline{\text{sg}}\left(n\ddot{-}f\left(\mu x\left[(f(x)\ddot{-}n)(h(x)\ddot{-}n)=0\right]\right)\right) C A ( n ) = sg ( n − ¨ f ( μx [ ( f ( x ) − ¨ n ) ( h ( x ) − ¨ n ) = 0 ] ) )
其中 f f f 和 h h h 的根存在性條件顯然滿足.
直觀來看, 如果 A A A 是遞歸可枚舉集, 我們就可以逐一枚舉其元素. 對於任給的元素 a a a , 若 a ∈ A a\in A a ∈ A , 則必能在有限步內確定 a ∈ A a\in A a ∈ A , 但若 a ∉ A a\not\in A a ∈ A , 則無法用枚舉 A A A 的元素的方法在有限步內確定 a ∉ A a\not\in A a ∈ A . 反過來, 如果 A ‾ \overline{A} A 也是遞歸可枚舉集, 我們就可以通過枚舉 A ‾ \overline{A} A 的元素, 在有限步內確定 a ∉ A a\not\in A a ∈ A . 這時 A A A 和 A ‾ \overline{A} A 就都是遞歸集.
遞歸可枚舉集的算術可定義性
〔註: 另參見筆記第二篇可定義性 . 〕
k k k 元函數
f f f 是算術可定義函數, 指存在
K N K_N K N 的含
k + 1 k+1 k + 1 個自由變元的公式
p ( x 1 ⋯ , x k , y ) p(x_1\cdots,x_k,y) p ( x 1 ⋯ , x k , y ) , 對任意
n 1 , ⋯ , n k , m ∈ N n_1,\cdots,n_k,m\in\mathbb{N} n 1 , ⋯ , n k , m ∈ N , 滿足
f ( n 1 , ⋯ , n k ) = m ⇔ ∣ p ( n 1 ‾ , ⋯ , n k ‾ , m ‾ ) ∣ N = 1 f(n_1,\cdots,n_k)=m\enspace\Leftrightarrow\enspace |p(\overline{n_1},\cdots,\overline{n_k},\overline{m})|_{\mathbb{N}}=1 f ( n 1 , ⋯ , n k ) = m ⇔ ∣ p ( n 1 , ⋯ , n k , m ) ∣ N = 1
此時說 f f f 用公式 p ( x 1 ⋯ , x k , y ) p(x_1\cdots,x_k,y) p ( x 1 ⋯ , x k , y ) 在 K N K_N K N 中可定義.
類似的, k k k 元關係 R R R 是算術可定義關係 (簡稱算術關係), 指存在 K N K_N K N 的含 k k k 個自由變元的公式 p ( x 1 ⋯ , x k ) p(x_1\cdots,x_k) p ( x 1 ⋯ , x k ) , 對任意 n 1 , ⋯ , n k ∈ N n_1,\cdots,n_k\in\mathbb{N} n 1 , ⋯ , n k ∈ N , 滿足
( n 1 , ⋯ , n k ) ∈ R ⇔ ∣ p ( n 1 ‾ , ⋯ , n k ‾ ) ∣ N = 1 (n_1,\cdots,n_k)\in R\enspace\Leftrightarrow\enspace |p(\overline{n_1},\cdots,\overline{n_k})|_{\mathbb{N}}=1 ( n 1 , ⋯ , n k ) ∈ R ⇔ ∣ p ( n 1 , ⋯ , n k ) ∣ N = 1
此時說 R R R 用公式 p ( x 1 ⋯ , x k ) p(x_1\cdots,x_k) p ( x 1 ⋯ , x k ) 在 K N K_N K N 中可定義. 一元算術關係簡稱算術集.
可表示函數是算術可定義的, 且所用公式相同; 可表示關係也是用相同公式可定義的. 根據 K N K_N K N 的可靠性, 這是容易驗證的. 進而, 遞歸函數必為算術可定義函數, 遞歸關係必為算術可定義關係, 特別地, 遞歸集必為算術集.
還可以進一步得到: 遞歸可枚舉集必為算術集. 設非空集 A A A 是遞歸可枚舉集, 並設它是一元遞歸函數 f f f 的值域, 再設 f f f 用公式 p ( x 1 , y ) p(x_1,y) p ( x 1 , y ) 可表示. 則集合 A A A 用公式 ∃ x p ( x , n ‾ ) \exists x\thinspace p(x,\overline{n}) ∃ x p ( x , n ) 可定義, 即 A A A 滿足
n ∈ A ⇔ ∣ ∃ x p ( x , n ‾ ) ∣ N = 1 n\in A\enspace\Leftrightarrow\enspace |\exists x\thinspace p(x,\overline{n})|_{\mathbb{N}}=1 n ∈ A ⇔ ∣∃ x p ( x , n ) ∣ N = 1
具體驗證過程略. □ \square □
但算術集不一定是遞歸可枚舉集, 換句話說, 算術集的類比遞歸集的類要大.
已知 TH \text{TH} TH 是遞歸可枚舉集, 而 TH ‾ \overline{\text{TH}} TH 不是遞歸可枚舉集, 但 TH \text{TH} TH 和 TH ‾ \overline{\text{TH}} TH 都是算術集. 這是因為, 設 TH \text{TH} TH 用公式 p ( x 1 ) p(x_1) p ( x 1 ) 可定義, 則 TH ‾ \overline{\text{TH}} TH 用公式 ¬ p ( x 1 ) \neg p(x_1) ¬ p ( x 1 ) 可定義.
真公式集的非算術可定義性
下證明真公式 (Gödel 數的) 集 TR \text{TR} TR 是非算術集, 因而有 TH ≠ TR \text{TH}\not=\text{TR} TH = TR , 即從 N \mathcal{N} N 可證的公式集是真公式集的真子集.
定理(Tarski): TR \text{TR} TR 不是算術集.
反設 TR \text{TR} TR 是算術集, 並設它用公式 p ( x 1 ) p(x_1) p ( x 1 ) 可定義:
n ∈ TR ⇔ ∣ p ( n ‾ ) ∣ N = 1 n\in\text{TR}\enspace\Leftrightarrow\enspace |p(\overline{n})|_{\mathbb{N}}=1 n ∈ TR ⇔ ∣ p ( n ) ∣ N = 1
作一元遞歸函數 f f f :
f ( n ) = Sub ( 2 15 + 2 , Num ( n ) , n ) f(n)=\text{Sub}(2^{15+2},\text{Num}(n),n) f ( n ) = Sub ( 2 15 + 2 , Num ( n ) , n )
若 n = g ( q ( x 1 ) ) n=\text{g}(q(x_1)) n = g ( q ( x 1 )) , 則 f ( n ) = g ( q ( n ‾ ) ) f(n)=\text{g}(q(\overline{n})) f ( n ) = g ( q ( n )) .
設 f f f 用公式 s ( x 1 , y ) s(x_1,y) s ( x 1 , y ) 可表示. 記
r ( x 1 ) = ∀ y ( s ( x 1 , y ) → ¬ p ( y ) ) , m = g ( r ( x 1 ) ) , k = g ( r ( m ‾ ) ) .
\begin{align*}
&r(x_1) = \forall y(s(x_1,y)\to\neg p(y)), \\
&m = \text{g}(r(x_1)), \\
&k = \text{g}(r(\overline{m})).
\end{align*}
r ( x 1 ) = ∀ y ( s ( x 1 , y ) → ¬ p ( y )) , m = g ( r ( x 1 )) , k = g ( r ( m )) .
按 f f f 的定義, f ( m ) = k f(m)=k f ( m ) = k . 由此可得:
N ⊢ s ( m ‾ , k ‾ ) , N ⊢ s ( m ‾ , t ) → t ≈ k ‾ .
\begin{align*}
&\mathcal{N}\vdash s(\overline{m},\overline{k}), \\
&\mathcal{N}\vdash s(\overline{m},t)\to t\approx\overline{k}.
\end{align*}
N ⊢ s ( m , k ) , N ⊢ s ( m , t ) → t ≈ k .
這裡的定義方式與證明 TH \text{TH} TH 的非遞歸性時幾乎相同, 但公式 r ( m ‾ ) r(\overline{m}) r ( m ) 的語義內容發生變化, r ( m ‾ ) r(\overline{m}) r ( m ) 斷言自身不真, 它表達的正是說謊者悖論.
考察 r ( m ‾ ) r(\overline{m}) r ( m ) 的真假, 立即能導出矛盾. 而矛盾的根源即是最初假定 TR \text{TR} TR 是算術集的假設, 這就表明, TR \text{TR} TR 不是算術集. □ \square □
下圖展示了上文討論的幾類集合之間的關係:
Turing 機
Turing 機的定義
Turing 機是一種將人的計算行為抽象化的數理邏輯機, 也可以認為是一種可計算性的抽象模型. Turing 和 Gödel, Church 等人差不多同時給出了判定問題的否定答案, 但 Turing 的模型更接近實際計算的物理過程, 比形式系統更能代表機械裝置, 所以在不可判定問題上更有說服力.
直觀上, 一臺 Turing 機包含以下要素:
一個兩個方向都可無限延長的紙帶 (Tape), 被分成一個個小方格. 格子或者是空白的, 用 0 0 0 表示, 或者寫上一個字符, 字符來自於一個事先給定的有限字母表 Σ = { a 1 , ⋯ , a n , 0 } \Sigma=\left\lbrace a_1,\cdots,a_n,0\right\rbrace Σ = { a 1 , ⋯ , a n , 0 } . 任何時刻紙帶上只有有限個非空格.
一個讀寫頭 (Head), 每次可掃描紙帶上的一個格子. 它可以識別格子是空白的還是有字符的, 可以在空白格子上寫入字符, 也可以把已有字符抹去, 使格子再變成空白的. 讀寫頭還可以左右移動, 每次移動一格.
一個有窮的內部狀態集 Q = { q 1 , ⋯ , q n } Q=\left\lbrace q_1,\cdots,q_n\right\rbrace Q = { q 1 , ⋯ , q n } , 在任一給定時刻, Turing 機都處在其中某個狀態 q i q_i q i .
設 Σ \Sigma Σ 是一個有限字母表, 其中有 0 0 0 , 還至少有一個非 0 0 0 字母; Q Q Q 是一個有限內部狀態集, 其中至少含有一個內部狀態 q 0 q_0 q 0 .
帶有有限字母表 Σ \Sigma Σ 和有限狀態集 Q Q Q 的 Turing 機 T T T , 是指偏映射
T : Q × Σ → ( Σ ∪ { L , R } ) × Q T:Q\times \Sigma\to(\Sigma\cup\left\lbrace L,R\right\rbrace)\times Q T : Q × Σ → ( Σ ∪ { L , R } ) × Q
其中 L L L , R R R 分別表示左和右. T T T 無定義時表示停機.
Q Q Q 和
Σ \Sigma Σ 都是有限集, 故
T T T 的定義域是有限集. 定義一個 Turing 機, 只要給出它包含的全部四元組即可. 把四元組的集合稱為指令集
δ \delta δ , 其中每個指令是具有如下形式的四元組:
q a a ′ q ′ qaa'q' q a a ′ q ′ , 其中 q , q ′ ∈ Q q,q'\in Q q , q ′ ∈ Q , a , a ′ ∈ Σ a,a'\in \Sigma a , a ′ ∈ Σ ;
q a L q ′ qaLq' q a L q ′ , 其中 q , q ′ ∈ Q q,q'\in Q q , q ′ ∈ Q , a ∈ Σ a\in \Sigma a ∈ Σ ;
q a R q ′ qaRq' q a R q ′ , 其中 q , q ′ ∈ Q q,q'\in Q q , q ′ ∈ Q , a ∈ Σ a\in \Sigma a ∈ Σ .
指令 q a a ′ q ′ qaa'q' q a a ′ q ′ 解讀為: 當前狀態為 q q q 且讀寫頭在格子裡讀到的字符是 a a a , 就把格子裡的 a a a 改為 a ′ a' a ′ , 並把狀態改為 q ′ q' q ′ ; 另外兩類指令的解讀類似, L L L 和 R R R 分別表示向左和向右移動一格. 一個四元組(指令)就對應著 “一步計算”.
藉助 Turing 機, 便可提出 Turing 可計算函數的概念.
採用如下方式, 每個 Turing 機都可用來定義一個一元部分函數 φ \varphi φ .
設 T T T 的字母表除 0 0 0 外還有 1 1 1 , 如果以
⋯ 010 11 ⋯ 1 ⏞ n 0 ⋯ \cdots010\enspace\overbrace{11\cdots1}^{n}\enspace0\cdots ⋯ 010 11 ⋯ 1 n 0 ⋯
的紙帶輸入 T T T (簡稱 “以 n n n 輸入 T T T ” ) 經運算後能停機, 則令 φ ( n ) = \varphi(n)= φ ( n ) = 輸出紙帶上非空格總數; 若不停機, 則 φ ( n ) \varphi(n) φ ( n ) 無定義. 輸入紙帶前加上 “⋯ 010 \cdots010 ⋯ 010 ” 是為了使自然數 0 0 0 作為自變量的值能夠輸入.
把紙帶換為
⋯ 010 1 ⋯ 1 ⏞ m 0 1 ⋯ 1 ⏞ n 0 ⋯ \cdots010\enspace\overbrace{1\cdots1}^{m}\enspace0\enspace\overbrace{1\cdots1}^{n}\enspace0\cdots ⋯ 010 1 ⋯ 1 m 0 1 ⋯ 1 n 0 ⋯
即可定義二元部分函數 ψ \psi ψ . 進而, 可以利用 Turing 機來定義 k k k 元部分函數 f : N k → N f:\mathbb{N}^k\to\mathbb{N} f : N k → N .
一個數論函數, 如果存在某個 Turing 機可用來定義它並計算它的函數值, 就叫做 Turing 可計算函數.
Turing 論題 : 算法可計算函數 = Turing 可計算函數.
另外, 可以證明: Turing 可計算函數 = 遞歸函數.
停機問題
假定所有 Turing 機的字母表都取自一張通用字母表
Σ ∗ = { A 0 , A 1 , A 2 , ⋯ } \Sigma^{*}=\left\lbrace A_0,A_1,A_2,\cdots\right\rbrace Σ ∗ = { A 0 , A 1 , A 2 , ⋯ }
內部狀態符號都取自通用的狀態符號集
Q ∗ = { q 0 , q 1 , q 2 , ⋯ } Q^{*}=\left\lbrace q_0,q_1,q_2,\cdots\right\rbrace Q ∗ = { q 0 , q 1 , q 2 , ⋯ }
其中 A 0 A_0 A 0 對應於空白, q 0 q_0 q 0 對應於初始狀態. 如果兩個 Turing 機的差別僅在於它們使用的字母符號和狀態符號不一樣, 那麼我們把它們視為同一個 Turing 機, 因為它們進行本質相同的計算.
下面給每個 Turing 機指定碼數.
定義單個符號的碼數:
a L R A i q i g ( a ) 1 3 4 i + 5 4 i + 7
\begin{array}{c|cc} a & L & R & A_i & q_i \\
\hline \text{g}(a) & 1 & 3 & 4i+5 & 4i+7 \\
\end{array}
a g ( a ) L 1 R 3 A i 4 i + 5 q i 4 i + 7
定義四元組的編碼:
g ( a b c d ) = 2 g ( a ) 3 g ( b ) 5 g ( c ) 7 g ( d ) \text{g}(abcd)=2^{\text{g}(a)}\thinspace3^{\text{g}(b)}\thinspace5^{\text{g}(c)}\thinspace7^{\text{g}(d)} g ( ab c d ) = 2 g ( a ) 3 g ( b ) 5 g ( c ) 7 g ( d )
定義 Turing 機 T = { σ 0 , ⋯ , σ n } T=\left\lbrace \sigma_0,\cdots,\sigma_n\right\rbrace T = { σ 0 , ⋯ , σ n } (σ i \sigma_i σ i 為四元組) 的碼數為:
g ( T ) = 2 g ( σ 0 ) 3 g ( σ 1 ) ⋯ p n g ( σ n ) \text{g}(T)=2^{\text{g}(\sigma_0)}\thinspace3^{\text{g}(\sigma_1)}\cdots\thinspace p_n^{\text{g}(\sigma_n)} g ( T ) = 2 g ( σ 0 ) 3 g ( σ 1 ) ⋯ p n g ( σ n )
其中四元組 σ 0 , ⋯ , σ n \sigma_0,\cdots,\sigma_n σ 0 , ⋯ , σ n 按字典序排列.
這樣就給每一個 Turing 機指定了唯一的碼數. 按碼數大小, 我們把所有 Turing 機枚舉如下:
T 0 , T 1 , T 2 , ⋯ , T n , ⋯ T_0,T_1,T_2,\cdots,T_n,\cdots T 0 , T 1 , T 2 , ⋯ , T n , ⋯
定義一元全函數 f ∗ f^{*} f ∗ 如下:
f ∗ ( n ) = 0 f^{*}(n)=0 f ∗ ( n ) = 0 ⇔ \Leftrightarrow ⇔ T n T_n T n 輸入 n n n 後會停機;
f ∗ ( n ) = 1 f^{*}(n)=1 f ∗ ( n ) = 1 ⇔ \Leftrightarrow ⇔ T n T_n T n 輸入 n n n 後不停機.
假設存在某個 Turing 機 T T T 能計算函數 f ∗ f^{*} f ∗ . 由於 f ∗ f^{*} f ∗ 是全函數, T T T 對任何輸入都停機. 利用 T T T 構造一個新的 Turing 機 T ′ T' T ′ , 它包含 T T T 的全部四元組, 並增加兩個新的狀態 q α q_{\alpha} q α , q β q_{\beta} q β 和一個新的字母 A A A , 然後增加四元組
q α 0 A q β , q β 0 A q α , q α A R q α , q β A L q β q_{\alpha}0Aq_{\beta},\enspace q_{\beta}0Aq_{\alpha},\enspace q_{\alpha}ARq_{\alpha},\enspace q_{\beta}ALq_{\beta} q α 0 A q β , q β 0 A q α , q α A R q α , q β A L q β
此外, 對 T T T 原先沒有定義的每個 q i S q_i S q i S , 增加四元組 q i S R q α q_i SRq_{\alpha} q i S R q α . 這樣做的目的是使 T T T 在輸出 0 0 0 後轉接到循環狀態, 從而無法停機.
由 T ′ T' T ′ 的構造可知, T T T 輸入 n n n 後輸出 1 1 1 ⇔ \Leftrightarrow ⇔ T ′ T' T ′ 輸入 n n n 後會停機.
T ′ T' T ′ 必出現在
T 0 , T 1 , T 2 , ⋯ T_0,T_1,T_2,\cdots T 0 , T 1 , T 2 , ⋯ , 設
T ′ = T k T'=T_k T ′ = T k . 向
T k T_k T k (即
T ′ T' T ′ ) 輸入
k k k , 立即就會出現矛盾. 因此, 函數
f ∗ f^{*} f ∗ 不是 Turing 可計算函數.
□ \square □
一個推論是: 停機問題是不可判定的. 即 “Turing 機 T m T_m T m 在輸入 n n n 後是否會停機” 這一問題類是不能用算法在有限步內判定的. 因為如果存在這樣的算法, 那麼 f ∗ f^{*} f ∗ 也就有了計算其值的算法, 從而成了遞歸函數.