數理邏輯 (4) Gödel 不完備性定理

上一篇: 形式算術和遞歸函數

Gödel 不完備性定理

不完備性定理

Gödel 第一不完備性定理

用 PA\mathsf{PA} 來表示 Peano 算術理論, 其公理集為一階邏輯公理集和算術公理集 N\mathcal{N}. 由上一篇的分析, PA\mathsf{PA} 是一個遞歸可公理化的理論.


根據上一篇的分析, 我們知道遞歸函數 Num\text{Num} 和 Sub\text{Sub} 分別滿足:

Num(n)=g(n‾)Sub(g(x),g(t),g(φ(x)))=g(φ(t)) \begin{align*} &\text{Num}(n) = \text{g}(\overline{n}) \\ &\text{Sub}(\text{g}(x),\text{g}(t),\text{g}(\varphi(x))) = \text{g}(\varphi(t)) \end{align*}

用 Num\text{Num} 和 Sub\text{Sub} 定義一個新的二元遞歸函數 Su\text{Su}:

Su(n,m)=Sub(g(x),Num(n),m)\text{Su}(n,m)=\text{Sub}\left(\text{g}(x),\text{Num}(n),m\right)

若 mm 是公式 φ(x)\varphi(x) 的 Gödel 數, 則 Su(n,m)\text{Su}(n,m) 是 φ(n‾)\varphi(\overline{n}) 的 Gödel 數, 即

Su(n,g(φ(x)))=g(φ(n‾))\text{Su}(n,\text{g}(\varphi(x)))=\text{g}(\varphi(\overline{n}))

設遞歸函數 Su\text{Su} 用公式 su(x1,x2,y)\text{su}(x_1,x_2,y) 可表示.

下面用 ⌜ψ⌝\ulcorner\psi\urcorner 來表示 g(ψ)‾\overline{\text{g}(\psi)}, 即公式 ψ\psi 的 Gödel 數在形式算術 KNK_N 中對應的數字 (作為形式系統中的一個閉項).

不動點引理: 對任一以 xx 為僅有自由變元的公式 φ(x)\varphi(x), 必存在閉式 σ\sigma 滿足: ⊢PAσ↔φ(⌜σ⌝)\vdash_{\mathsf{PA}}\sigma\leftrightarrow\varphi(\ulcorner\sigma\urcorner) 我們把具有這種性質的 σ\sigma 叫做公式 φ(x)\varphi(x) 的不動點.

證明: 考慮公式 τ(x1):=∃y(φ(y)∧su(x1,x1,y))\tau(x_1):=\exists y\left(\varphi(y)\wedge\text{su}(x_1,x_1,y)\right), 令 m=g(τ(x1))m = \text{g}(\tau(x_1)), 再令閉式 σ\sigma 為:

σ:=τ(m‾)=∃y(φ(y)∧su(m‾,m‾,y))\sigma:=\tau(\overline{m})=\exists y\left(\varphi(y)\wedge\text{su}(\overline{m},\overline{m},y)\right)

驗證如下:

σ⟺∃y(φ(y)∧y≈τ(m‾))⟺∃y(φ(y)∧y≈⌜σ⌝)⟺φ(⌜σ⌝) \begin{aligned} \sigma & \Longleftrightarrow \exists y\left(\varphi(y)\wedge y\approx\tau(\overline{m})\right) \\ & \Longleftrightarrow \exists y\left(\varphi(y)\wedge y\approx \ulcorner\sigma\urcorner\right) \\ & \Longleftrightarrow\varphi(\ulcorner\sigma\urcorner) \end{aligned}

所以 σ\sigma 是 φ(x)\varphi(x) 的不動點. □\square

定義 (ω\omega-一致性): 公式集 Γ\Gamma 是 ω\omega-一致的, 意為對 KNK_N 中任一含自由變元的公式 φ(x)\varphi(x), 以下兩條不同時成立:
  • 對所有 n∈Nn\in\mathbb{N}, Γ⊢φ(n‾)\Gamma\vdash\varphi(\overline{n}),
  • Γ⊢¬∀xφ(x)\Gamma\vdash\neg\forall x\varphi(x).

如果 Γ\Gamma 是 ω\omega-一致的, 那麼它也是一致的. 如果 Γ\Gamma 是 ω\omega-不一致的, 那麼 Γ\Gamma 顯然不能被自然數的標準模型滿足, 即 N⊭Γ\mathfrak{N}\nvDash\Gamma. 我們在 KNK_N 中添加新常元 cc, 則公式集 PA∪{c≉n‾:n∈N}\mathsf{PA}\cup\lbrace c\not\approx\overline{n}:n\in\mathbb{N}\rbrace 是一致的, 但不是 ω\omega-一致的. 緊緻性定理表明該公式集一定被一個模型滿足, 稱這個模型為自然數的一個非標準模型. 根據 Löwenheim-Skolem 定理, 一階 Peano 算術有無窮多個模型; 而二階 Peano 算術具有範疇性, 即它在同構意義僅有唯一的模型.


上一篇定義了遞歸關係 PRF\text{PRF}: (n,m)∈PRF(n,m)\in\text{PRF} ⟺\Longleftrightarrow nn 編碼了以 mm 為編碼的公式在 PA\mathsf{PA} 中的一個證明. 假設關係 PRF\text{PRF} 用公式 Prf(y,x)\text{Prf}\left(y,x\right) 可表示, 並令

Prov(x):=∃yPrf(y,x)\text{Prov}(x):=\exists y\text{Prf}\left(y,x\right)

則 ¬Prov(x)\neg\text{Prov}(x) 是只含一個自由變元的公式, 根據不動點引理, 它存在不動點 σ\sigma:

⊢PAσ↔¬Prov(⌜σ⌝)(1)\vdash_{\mathsf{PA}}\sigma\leftrightarrow\neg\text{Prov}\left(\ulcorner\sigma\urcorner\right)\tag{1}
引理 (第一可推性條件): 對任一公式 φ\varphi, ⊢PAφ⟹⊢PAProv(⌜φ⌝)\vdash_{\mathsf{PA}}\varphi\enspace\Longrightarrow\enspace\vdash_{\mathsf{PA}}\text{Prov}\left(\ulcorner\varphi\urcorner\right)

證明: 記 m=g(φ)m=\text{g}(\varphi), 則 m‾=⌜φ⌝\overline{m}=\ulcorner\varphi\urcorner. 設 nn 是 φ\varphi 的一個證明的 Gödel 數, 則 (n,m)∈PRF(n,m)\in\text{PRF}, 從而 ⊢PAPrf(n‾,m‾)\vdash_{\mathsf{PA}}\text{Prf}\left(\overline{n},\overline{m}\right). 於是 ⊢PA∃yPrf(y,m‾)\vdash_{\mathsf{PA}}\exists y\text{Prf}\left(y,\overline{m}\right), 即 ⊢PAProv(⌜φ⌝)\vdash_{\mathsf{PA}}\text{Prov}\left(\ulcorner\varphi\urcorner\right). □\square

Gödel 第一不完備性定理:
  • 若 PA\mathsf{PA} 是一致的, 則 ⊬PAσ\nvdash_{\mathsf{PA}}\sigma,
  • 若 PA\mathsf{PA} 是 ω\omega-一致的, 則 ⊬PA¬σ\nvdash_{\mathsf{PA}}\neg\sigma.

證明: 假設 ⊢PAσ\vdash_{\mathsf{PA}}\sigma, 由第一可推性條件即得 ⊢PAProv(⌜σ⌝)\vdash_{\mathsf{PA}}\text{Prov}\left(\ulcorner\sigma\urcorner\right), 又由 (1)(1) 式知 ⊢PA¬Prov(⌜σ⌝)\vdash_{\mathsf{PA}}\neg\text{Prov}\left(\ulcorner\sigma\urcorner\right), 表明 PA\mathsf{PA} 不一致. 假設 ⊢PA¬σ\vdash_{\mathsf{PA}}\neg\sigma 且 PA\mathsf{PA} 是一致的, 那麼對任意 n∈Nn\in\mathbb{N} 都有 ⊢PA¬Prf(n‾,⌜σ⌝)\vdash_{\mathsf{PA}}\neg\text{Prf}\left(\overline{n},\ulcorner\sigma\urcorner\right), 否則與 PA\mathsf{PA} 的一致性矛盾, 但 ⊢PA∃y(y,⌜σ⌝)\vdash_{\mathsf{PA}}\exists y\left(y,\ulcorner\sigma\urcorner\right), 表明 PA\mathsf{PA} 是 ω\omega-不一致的. □\square

令 PA∗\mathsf{PA}^{\ast} 為 PA\mathsf{PA} 的一個遞歸可公理化的一致擴張, 上述定理對 PA∗\mathsf{PA}^{\ast} 也成立.

Gödel-Rosser 定理

Rosser 於1936年改進了 Gödel 的結果, 把 ω\omega-一致的條件減弱為一致, “從而完全擺脫了對語義的依賴”.

定理 (Gödel-Rosser): 如果 PA\mathsf{PA} 是一致的, 那麼 PA\mathsf{PA} 不完備.

證明: 假設 PA\mathsf{PA} 是一致的. 考慮公式 prov(x):=∃y(Prf(y,x)∧(∀z<y)¬Prf(z,¬˙x))\text{prov}(x):=\exists y\left(\text{Prf}\left(y,x\right)\wedge(\forall z<y)\neg\text{Prf}\left(z,\dot{\neg} x\right)\right) 其中 ¬˙\dot{\neg} 是原始遞歸函數 g(φ)↦g(¬φ)\text{g}(\varphi)\mapsto\text{g}(\neg\varphi) 在形式算術中的表示.

顯然 ⊢PAτ\vdash_{\mathsf{PA}}\tau ⟹\Longrightarrow ⊢PAprov(⌜τ⌝)\vdash_{\mathsf{PA}}\text{prov}\left(\ulcorner\tau\urcorner\right). 反過來, 假設 ⊢PA¬τ\vdash_{\mathsf{PA}}\neg\tau, 那麼對某個 n∈Nn\in\mathbb{N} 有 ⊢PAPrf(n‾,⌜¬τ⌝)\vdash_{\mathsf{PA}}\text{Prf}\left(\overline{n},\ulcorner\neg\tau\urcorner\right), 一方面我們有 ⊢PA(∀y≤n‾)¬Prf(y,⌜τ⌝)\vdash_{\mathsf{PA}}(\forall y\le\overline{n})\neg\text{Prf}\left(y,\ulcorner\tau\urcorner\right), 另一方面 ⊢PA(y>n‾)→(∃z<y)Prf(n‾,⌜¬τ⌝)\vdash_{\mathsf{PA}}(y>\overline{n})\to(\exists z<y)\text{Prf}\left(\overline{n},\ulcorner\neg\tau\urcorner\right) (取 z=n‾z=\overline{n} 即為一個見證), 從而必有 ⊢PA¬prov(⌜τ⌝)\vdash_{\mathsf{PA}}\neg\text{prov}\left(\ulcorner\tau\urcorner\right).

設 σ\sigma 為 ¬prov(x)\neg\text{prov}(x) 的不動點, 即 ⊢PAσ↔¬prov(⌜σ⌝)\vdash_{\mathsf{PA}}\sigma\leftrightarrow\neg\text{prov}\left(\ulcorner\sigma\urcorner\right). 由上面的分析知 ⊢PAσ\vdash_{\mathsf{PA}}\sigma ⟹\Longrightarrow ⊢PAprov(⌜σ⌝)\vdash_{\mathsf{PA}}\text{prov}\left(\ulcorner\sigma\urcorner\right) 且 ⊢PA¬σ\vdash_{\mathsf{PA}}\neg\sigma ⟹\Longrightarrow ⊢PA¬prov(⌜σ⌝)\vdash_{\mathsf{PA}}\neg\text{prov}\left(\ulcorner\sigma\urcorner\right), 兩邊都與 PA\mathsf{PA} 的一致性矛盾. □\square

直觀上, Gödel 語句 σG\sigma_G 斷言其自身不可證, 而 Rosser 語句 σR\sigma_R 斷言, 若其自身在 PA\mathsf{PA} 中可證, 那麼其否定就也在 PA\mathsf{PA} 中可證且證明更簡單 (對應 Gödel 數更小).

令 ⊥:=0‾≉0‾\bot:=\overline{0}\not\approx\overline{0}, ⊤:=¬⊥\top:=\neg\bot. 下文將用 ¬Prov(⊥)\neg\text{Prov}(\bot) 來形式化 PA\mathsf{PA} 的一致性, 記作 conPA\text{con}_{\mathsf{PA}}, Gödel 第二不完備性定理表明 conPA\text{con}_{\mathsf{PA}} 是不可證的. 然而, 由於 ⊢PA⊤\vdash_{\mathsf{PA}}\top, 我們有 ⊢PA¬prov(⊥)\vdash_{\mathsf{PA}}\neg\text{prov}(\bot). 事實上, ¬Prov(⊥)\neg\text{Prov}(\bot) 表示 ∀y(¬Prf(y,⌜⊥⌝))\forall y\left(\neg\text{Prf}\left(y,\ulcorner\bot\urcorner\right)\right), 而 ¬prov(⊥)\neg\text{prov}(\bot) 表示 ∀y(¬Prf(y,⌜⊥⌝)∨(∃z<y)¬Prf(z,⌜⊤⌝))\forall y\left(\neg\text{Prf}\left(y,\ulcorner\bot\urcorner\right)\vee(\exists z<y)\neg\text{Prf}\left(z,\ulcorner\top\urcorner\right)\right), 所以 ⊢PA¬prov(⊥)\vdash_{\mathsf{PA}}\neg\text{prov}(\bot) 比 ⊢PA¬Prov(⊥)\vdash_{\mathsf{PA}}\neg\text{Prov}(\bot) 弱得多. 儘管如此, 在標準模型 N\mathfrak{N} 中兩者等價, 即 N⊨Prov(τ)↔prov(τ)\mathfrak{N}\vDash\text{Prov}(\tau)\leftrightarrow\text{prov}(\tau).

更一般地, 一個理論 TT 只要滿足如下條件就必是不完備的:
  • TT 中包含足夠多的初等算術公理 (足以將語法算術化),
  • TT 是遞歸可公理化的,
  • TT 是一致的.

並非 PA\mathsf{PA} 的任何一致擴張都不可能完備. 例如, 把所有標準模型 N\mathfrak{N} 滿足的 KNK_N 公式構成的集記作 Tr=Th N\text{Tr}=\text{Th }\mathfrak{N}, 則 Tr\text{Tr} 顯然是完備的. 由於 N⊨PA\mathfrak{N}\vDash\mathsf{PA}, 所以 Tr\text{Tr} 就是 PA\mathsf{PA} 的一個完備一致擴張. 但是根據 Gödel-Rosser 定理, Tr\text{Tr} 不是遞歸可公理化的, 即 Tr\text{Tr} 中公式的 Gödel 數構成的集 TR\text{TR} 不是遞歸集.

Gödel 第二不完備性定理

用 □Tφ\Box_T\varphi 表示語句 Prov(⌜φ⌝)\text{Prov}\left(\ulcorner\varphi\urcorner\right), 則 □T\Box_T 可看作一個模態算子, 意為 (在 TT 中) “可證”. 用 conT\text{con}_T 表示語句 ¬□T(0‾≉0‾)\neg\Box_T(\overline{0}\not\approx\overline{0}), 字面意思即 “TT 是一致的”.

如下三條稱為 "可證性條件":
  • (D1)\text{(D1)} T⊢φT\vdash\varphi ⟹\Longrightarrow T⊢□TφT\vdash\Box_T\varphi,
  • (D2)\text{(D2)} T⊢□T(φ→ψ)→□Tφ→□TψT\vdash\Box_T(\varphi\to\psi)\to\Box_T\varphi\to\Box_T\psi,
  • (D3)\text{(D3)} T⊢□Tφ→□T□TφT\vdash\Box_T\varphi\to\Box_T\Box_T\varphi.
(D1)\text{(D1)} 和 (D2)\text{(D2)} 分別相當於命題邏輯中的必然化規則 (RN\text{RN}) 和公理 K\text{K}, (D3)\text{(D3)} 相當於 44 公理. 如果理論 TT 滿足 (D1)\text{(D1)} 和 (D2)\text{(D2)}, 易知它也滿足:
  • (D0)\text{(D0)} 如果 T,σ⊢τT,\sigma\vdash\tau, 那麼 T,□Tσ⊢□TτT,\Box_T\sigma\vdash\Box_T\tau.

上文已經證明了 PA\mathsf{PA} 滿足條件 (D1)\text{(D1)}. 可以證明, 它也滿足另兩條可證性條件, 具體證明略過. 接下來侷限在 PA\mathsf{PA} 中討論, 並省略 □PA\Box_{\mathsf{PA}} 的下標.


令 σ\sigma 為公式 ¬Prov(x)\neg\text{Prov}(x) 的不動點, 則有

⊢PAσ↔¬□σ(2)\vdash_{\mathsf{PA}}\sigma\leftrightarrow\neg\Box\sigma\tag{2}
引理: ⊢PAσ↔conPA\vdash_{\mathsf{PA}}\sigma\leftrightarrow\text{con}_{\mathsf{PA}}, 即 conPA\text{con}_{\mathsf{PA}} 是等價意義下 ¬Prov(x)\neg\text{Prov}(x) 的唯一不動點.

證明: ¬□σ\neg\Box\sigma 可寫成 □σ→⊥\Box\sigma\to\bot, 由 σ\sigma 的定義有 σ⊢PA□σ→⊥\sigma\vdash_{\mathsf{PA}}\Box\sigma\to\bot, 結合 (D0)\text{(D0)} 和 (D2)\text{(D2)} 可得 □σ⊢PA□□σ→□⊥\Box\sigma\vdash_{\mathsf{PA}}\Box\Box\sigma\to\Box\bot. 根據 (D3)\text{(D3)} 有 □σ⊢PA□□σ\Box\sigma\vdash_{\mathsf{PA}}\Box\Box\sigma, 所以 □σ⊢PA□⊥\Box\sigma\vdash_{\mathsf{PA}}\Box\bot. 另一方面顯然有 ⊥⊢PAσ\bot\vdash_{\mathsf{PA}}\sigma, 從而 □⊥⊢PA□σ\Box\bot\vdash_{\mathsf{PA}}\Box\sigma. 因此, ⊢PA□σ↔□⊥\vdash_{\mathsf{PA}}\Box\sigma\leftrightarrow\Box\bot, 代入 (2)(2) 式即得 ⊢PAσ↔¬□⊥\vdash_{\mathsf{PA}}\sigma\leftrightarrow\neg\Box\bot. ■\blacksquare

Gödel 第二不完備性定理:
  • ⊢PAconPA→¬□conPA\vdash_{\mathsf{PA}}\text{con}_{\mathsf{PA}}\to\neg\Box\text{con}_{\mathsf{PA}},
  • 如果 PA\mathsf{PA} 是一致的, 則 ⊬PAconPA\nvdash_{\mathsf{PA}}\text{con}_{\mathsf{PA}}.

證明: 在 (2)(2) 式中用 conPA\text{con}_{\mathsf{PA}} 代換 σ\sigma 即得 ⊢PAconPA→¬□conPA\vdash_{\mathsf{PA}}\text{con}_{\mathsf{PA}}\to\neg\Box\text{con}_{\mathsf{PA}}; 假設 ⊢PAconPA\vdash_{\mathsf{PA}}\text{con}_{\mathsf{PA}}, 根據 (D1)\text{(D1)} 有 ⊢PA□conPA\vdash_{\mathsf{PA}}\Box\text{con}_{\mathsf{PA}}, 另一方面 ⊢PA¬□conPA\vdash_{\mathsf{PA}}\neg\Box\text{con}_{\mathsf{PA}}, 與 PA\mathsf{PA} 的一致性矛盾. ■\blacksquare

1920年代, Hilbert 提出了著名的有窮主義綱領, 目的是要以無疑議的方式證明包含無窮的經典數學能夠幫助我們獲得關於物理現實中有限事物的知識, 從而在實質上消除爭議不斷的 "無窮" 概念. 為此, Hilbert 構建了只含原始遞歸函數的原始遞歸算術系統 (PRA\mathsf{PRA}), 於是其目標就歸約為證明 Peano 算術 (PA\mathsf{PA}) 相對於 PRA\mathsf{PRA} 的保守性, 而保守性又可進一步歸約為從 PRA\mathsf{PRA} 中證明 PA\mathsf{PA} 的一致性 (把這裡的 PA\mathsf{PA} 換成比方說 ZFC\mathsf{ZFC}, 就可以涵蓋更廣泛的數學領域, 而不僅僅是算術). 然而, Gödel 的第二不完備性定理否定了這個可能, 使得 Hilbert 的有窮主義綱領無法按其原意得到實現.

Löb 定理

已知 conPA\text{con}_{\mathsf{PA}} 是 ¬Prov(x)\neg\text{Prov}(x) 的不動點, 下面考慮 Prov(x)→φ\text{Prov}(x)\to\varphi 的不動點 σ\sigma. 我們有

⊢PAσ↔(□σ→φ)(3)\vdash_{\mathsf{PA}}\sigma\leftrightarrow(\Box\sigma\to\varphi)\tag{3}
Löb 定理:
  • ⊢PA□(□φ→φ)→□φ\vdash_{\mathsf{PA}}\Box(\Box\varphi\to\varphi)\to\Box\varphi,
  • 如果 ⊢PA□φ→φ\vdash_{\mathsf{PA}}\Box\varphi\to\varphi, 則 ⊢PAφ\vdash_{\mathsf{PA}}\varphi.

證明: 由 σ⊢PA(□σ→φ)\sigma\vdash_{\mathsf{PA}}(\Box\sigma\to\varphi) 可得 □σ⊢PA(□□σ→□φ)\Box\sigma\vdash_{\mathsf{PA}}(\Box\Box\sigma\to\Box\varphi), 根據 (D3)\text{(D3)} 有 □σ⊢PA□φ\Box\sigma\vdash_{\mathsf{PA}}\Box\varphi; 另一方面, 由 ⊢PAφ→(□σ→φ)\vdash_{\mathsf{PA}}\varphi\to(\Box\sigma\to\varphi) 和 (3)(3) 式可得 ⊢PAφ→σ\vdash_{\mathsf{PA}}\varphi\to\sigma, 從而 □φ⊢PA□σ\Box\varphi\vdash_{\mathsf{PA}}\Box\sigma. 因此, ⊢PA□σ↔□φ\vdash_{\mathsf{PA}}\Box\sigma\leftrightarrow\Box\varphi, 代入 (3)(3) 式可得 ⊢PAσ↔(□φ→φ)\vdash_{\mathsf{PA}}\sigma\leftrightarrow(\Box\varphi\to\varphi), 進而 ⊢PA□σ↔□(□φ→φ)\vdash_{\mathsf{PA}}\Box\sigma\leftrightarrow\Box(\Box\varphi\to\varphi), 再做一次代換即得到 ⊢PA□(□φ→φ)→□φ\vdash_{\mathsf{PA}}\Box(\Box\varphi\to\varphi)\to\Box\varphi. ■\blacksquare

推論: ⊤:=¬⊥\top:=\neg\bot 是等價意義下公式 Prov(x)\text{Prov}(x) 的唯一不動點.

用 Löb 定理證明第二不完備性定理: 假設 PA\mathsf{PA} 是一致的, 如果 ⊢PAconPA\vdash_{\mathsf{PA}}\text{con}_{\mathsf{PA}}, 那麼 ⊢PA□⊥→⊥\vdash_{\mathsf{PA}}\Box\bot\to\bot, 由 Löb 定理, ⊢PA⊥\vdash_{\mathsf{PA}}\bot, 與 PA\mathsf{PA} 的一致性矛盾.

語法不可判定性

作為 Gödel-Rosser 定理的推論, 上文已經證明 Th N\text{Th }\mathfrak{N} 中公式的 Gödel 數構成的集 TR\text{TR} 是非遞歸的, 我們稱 Th N\text{Th }\mathfrak{N} 是不可判定的, 也把這個性質叫做算術的語義不可判定性. 下面來看可證公式集的不可判定性, 即語法不可判定性.

把 PA\mathsf{PA} 中全體可證公式的 Gödel 數構成的集記作 TH\text{TH}:

TH={g(φ): ⊢PAφ}\text{TH}=\lbrace\text{g}(\varphi):\ \vdash_{\mathsf{PA}}\varphi\rbrace

由一階邏輯的可靠性定理知 TH⊆TR\text{TH}\subseteq\text{TR}.

定理: 若 PA\mathsf{PA} 是一致的, 則 TH\text{TH} 不是遞歸集.

證明: 反設 TH\text{TH} 是遞歸集, 並設它用公式 Th(x)\text{Th}(x) 可表示. 考慮 ¬Th(x)\neg\text{Th}(x) 的不動點 σ\sigma, 我們有

⊢PAσ↔¬Th(⌜σ⌝)\vdash_{\mathsf{PA}}\sigma\leftrightarrow\neg\text{Th}\left(\ulcorner\sigma\urcorner\right)

如果 ⌜σ⌝∉TH\ulcorner\sigma\urcorner\notin\text{TH}, 由可表示性知 ⊢PA¬Th(⌜σ⌝)\vdash_{\mathsf{PA}}\neg\text{Th}\left(\ulcorner\sigma\urcorner\right), 從而 ⊢PAσ\vdash_{\mathsf{PA}}\sigma, 所以 σ∈TH\sigma\in\text{TH}; 如果 ⌜σ⌝∈TH\ulcorner\sigma\urcorner\in\text{TH}, 同樣由可表示性知 ⊢PATh(⌜σ⌝)\vdash_{\mathsf{PA}}\text{Th}\left(\ulcorner\sigma\urcorner\right), 從而 ⊢PA¬σ\vdash_{\mathsf{PA}}\neg\sigma, 所以 σ∉TH\sigma\notin\text{TH}. □\square

TH\text{TH} 是非遞歸集, 所以沒有能行算法可用來確定任給公式在 PA\mathsf{PA} 中是否可證. 綜合語義和語法兩方面便知, 沒有算法可以用來確定任給公式是不是 Peano 算術的定理.

Hilbert 第十問題: 能否設計出一個通用算法, 在有限步內確定一個任給的多元整係數方程 (丢番圖方程) 是否有整數解?

首先容易看出, 原問題等價於要求用算法判定任給丢番圖方程是否有正整數解. 因為要檢驗丢番圖方程 p(x1,⋯ ,xn)=0p\left(x_1,\cdots,x_n\right)=0 是否有整數解, 只需分別檢驗如下 2n2^n 個方程是否有正整數解:

p(x1,x2⋯ ,xn)=0p(−x1,x2⋯ ,xn)=0p(x1,−x2⋯ ,xn)=0⋯p(x1,x2⋯ ,−xn)=0 \begin{align*} &p\left(x_1,x_2\cdots,x_n\right) = 0 \\ &p\left(-x_1,x_2\cdots,x_n\right) = 0 \\ &p\left(x_1,-x_2\cdots,x_n\right) = 0 \\ &\cdots \\ &p\left(x_1,x_2\cdots,-x_n\right) = 0 \end{align*}

稱一個集合 SS 是丢番圖的, 當且僅當存在一個丢番圖方程 p(x,y1,⋯ ,yn)=0p\left(x,y_1,\cdots,y_n\right)=0 使得 x∈Sx\in S ⟺\Longleftrightarrow xx 是方程 p(x,y1,⋯ ,yn)=0p\left(x,y_1,\cdots,y_n\right)=0 的正整數解. 例如, 所有 22 或 33 的倍數構成的集 AA 是丢番圖集, 因為 x∈Ax\in A ⟺\Longleftrightarrow xx 是方程 (x−2y1)(x−3y2)=0(x-2y_1)(x-3y_2)=0 的正整數解.

可以證明, 所有丢番圖集都是遞歸可枚舉的. 而 Matiyasevich 證明了其逆命題: 所有遞歸可枚舉集都是丢番圖集, 所以丢番圖集和遞歸可枚舉集是一回事. 我們已經證明了存在非遞歸的遞歸可枚舉集, 於是便可推知: 不存在 Hilbert 所要求的通用算法.

遞歸可枚舉集與算術集

遞歸可枚舉集

空集以及一元遞歸函數 (可以是部分遞歸函數) 的值域叫做遞歸可枚舉集. 非空集 AA 是遞歸可枚舉集, 意味著存在一元遞歸函數 ff 使得

A={a:∃n∈N(a=f(n))}A=\lbrace a:\exists n\in\mathbb{N}\left(a=f(n)\right)\rbrace

根據 Church 論題, 存在算法能計算遞歸函數 ff 的函數值, 從而把 AA 的成員一個不漏 (但允許重複) 地列舉出來.

命題: 遞歸集一定是遞歸可枚舉集.

證明: 設非空集 AA 是遞歸集, 任取 AA 的元素 a0a_0. 取定 a0a_0 後, 下式定義的遞歸函數 ff 的值域就是 AA:

f(n)=nCA(n)+a0 sg‾(CA(n))f(n)=nC_A(n)+a_0\thinspace\overline{\text{sg}}(C_A(n))

其中, CAC_A 是 AA 的特徵函數, 加上一項 a0 sg‾(CA(n))a_0\thinspace\overline{\text{sg}}(C_A(n)) 是為了在輸入 n0∉An_0\not\in A 時輸出 a0∈Aa_0\in A, 而非 00 (有可能 0∉A0\not\in A). □\square

上述命題的逆命題不成立: 存在非遞歸的遞歸可枚舉集. 例如 PA\mathsf{PA} 的可證公式集 TH\text{TH} 是遞歸可枚舉集, 任取 m∈THm\in\text{TH} (如取 mm 為某公理的 Gödel 數), 則如下定義的遞歸函數 ff 的值域給出 TH\text{TH}: f(n)=(n)lh(n)−˙1×CPF(n)+m sg‾(CPF(n))f(n)=(n)_{\text{lh}(n)\dot{-}1}\times C_{\text{PF}}(n)+m\thinspace\overline{\text{sg}}(C_{\text{PF}}(n)) 該算法的意思是: 逐一取出 PA\mathsf{PA} 中的證明 (有限公式序列), 並取出該公式序列的最後一個公式, 這樣就能枚舉出 PA\mathsf{PA} 的全部可證公式.

命題: 若 AA 及其餘集 A‾=N−A\overline{A}=\mathbb{N}-A 都是遞歸可枚舉集, 則 AA 是遞歸集.

證明: 設非空集 AA 和非空集 A‾\overline{A} 分別是一元遞歸函數 ff 和 hh 的值域, 則 AA 的特徵函數是遞歸的:

CA(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)

其中 ff 和 hh 的根存在性條件顯然滿足. □\square

如果 AA 是遞歸可枚舉集, 我們就可以逐一枚舉其元素. 對於任給的元素 aa, 若 a∈Aa\in A, 則必能在有限步內確定 a∈Aa\in A; 但如果 a∉Aa\notin A, 則無法用枚舉元素的方法在有限步內確定 a∉Aa\notin A. 因此, 遞歸可枚舉性也被稱為 “半可判定性”. 進而, 如果 A‾\overline{A} 也是遞歸可枚舉集, 我們就可以交錯枚舉 AA 和 A‾\overline{A} 的元素, 從而在有限步內判定 a∈Aa\in A 或 a∉Aa\notin A. 此時 AA 和 A‾\overline{A} 都是遞歸集 (即是可判定的).

上文 Th N\text{Th }\mathfrak{N} 的例子表明完備理論不一定是可判定的 (無法能行地判定任給公式是不是其定理); 然而, 如果一個完備理論 TT 是 “有效公理化” 的, 即它的公理集是遞歸可枚舉的, 那麼它就一定是可判定的. 由於 TT 的公理集可枚舉, 我們可以能行地枚舉全部證明; 又由於 TT 是完備的, 對任意公式 φ\varphi, T⊢φT\vdash\varphi 或 T⊢¬φT\vdash\neg\varphi 必居其一, 所以對全體證明的枚舉必定在有限步內抵達 φ\varphi 或 ¬φ\neg\varphi 的一個證明. 這也說明了 TR\text{TR} 不是遞歸可枚舉集, 並且 Gödel 不完備性定理的條件可減弱為 “有效公理化”.

遞歸可枚舉集的算術可定義性

kk 元函數 ff 是算術可定義函數, 指存在 KNK_N 的含 k+1k+1 個自由變元的公式 φ(x1⋯ ,xk,y)\varphi(x_1\cdots,x_k,y), 對任意 n1,⋯ ,nk,m∈Nn_1,\cdots,n_k,m\in\mathbb{N}, 滿足 f(n1,⋯ ,nk)=m⟺N⊨φ(n1‾,⋯ ,nk‾,m‾)f(n_1,\cdots,n_k)=m\Longleftrightarrow\mathfrak{N}\vDash\varphi(\overline{n_1},\cdots,\overline{n_k},\overline{m}) 稱 ff 用公式 φ(x1⋯ ,xk,y)\varphi(x_1\cdots,x_k,y) 可定義.

kk 元關係 RR 是算術可定義關係 (簡稱算術關係), 指存在 KNK_N 的含 kk 個自由變元的公式 ψ(x1⋯ ,xk)\psi(x_1\cdots,x_k), 對任意 n1,⋯ ,nk∈Nn_1,\cdots,n_k\in\mathbb{N}, 滿足 (n1,⋯ ,nk)∈R⟺N⊨ψ(n1‾,⋯ ,nk‾)(n_1,\cdots,n_k)\in R\Longleftrightarrow\mathfrak{N}\vDash\psi(\overline{n_1},\cdots,\overline{n_k}) 稱 RR 用公式 ψ(x1⋯ ,xk)\psi(x_1\cdots,x_k) 可定義. 一元算術關係簡稱算術集.

可表示函數是算術可定義的, 且所用公式相同; 可表示關係也是用相同公式可定義的. 從而遞歸函數必為算術可定義函數, 遞歸關係必為算術可定義關係; 特別地, 遞歸集必為算術集.

還可以進一步得到: 遞歸可枚舉集必為算術集. 設非空集 AA 是遞歸可枚舉集, 並設它是一元遞歸函數 ff 的值域, 再設 ff 用公式 φ(x,y)\varphi(x,y) 可表示, 則集合 AA 用公式 ∃xφ(x,n‾)\exists x\varphi(x,\overline{n}) 可定義, 即 AA 滿足

n∈A⟺N⊨∃xφ(x,n‾)n\in A\Longleftrightarrow\mathfrak{N}\vDash\exists x\varphi(x,\overline{n})
但算術集不一定是遞歸可枚舉集, 換句話說, 算術集的類比遞歸可枚舉集的類要大. 已知 TH\text{TH} 是遞歸可枚舉集, 而 TH‾\overline{\text{TH}} 不是遞歸可枚舉集 (否則 TH\text{TH} 是遞歸集), 但 TH\text{TH} 和 TH‾\overline{\text{TH}} 都是算術集, 因為, 假設 TH\text{TH} 用公式 ψ(x)\psi(x) 可定義, 那麼 TH‾\overline{\text{TH}} 就可用公式 ¬ψ(x)\neg\psi(x) 定義.

真公式集的非算術可定義性

下面證明真公式 (的 Gödel 數) 集 TR\text{TR} 是非算術集, 從而 TH≠TR\text{TH}\not=\text{TR}, 即 PA\mathsf{PA} 的可證公式集是 N\mathfrak{N} 的真公式集的真子集.

定理 (Tarski): TR\text{TR} 不是算術可定義集.

證明: 對任何一個公式 φ(x)\varphi(x), 考慮 ¬φ(x)\neg\varphi(x) 的不動點 σ\sigma, 我們有 ⊢PAσ↔¬φ(⌜σ⌝)\vdash_{\mathsf{PA}}\sigma\leftrightarrow\neg\varphi\left(\ulcorner\sigma\urcorner\right) 由可靠性定理得 N⊨σ↔¬φ(⌜σ⌝)\mathfrak{N}\vDash\sigma\leftrightarrow\neg\varphi\left(\ulcorner\sigma\urcorner\right) 所以 N⊨σ\mathfrak{N}\vDash\sigma ⟺\Longleftrightarrow N⊭φ(⌜σ⌝)\mathfrak{N}\nvDash\varphi\left(\ulcorner\sigma\urcorner\right), 這就排除了 φ(x)\varphi(x) 定義 TR\text{TR} 的可能. □\square

直觀上, 不動點 σ\sigma 斷言其自身不真, 它表達的正是撒謊者悖論.

該定理又稱為 Tarski 的真之不可定義性定理.

下圖展示了上文討論的幾類集合之間的關係:

Turing 機

定義

Turing 機是一種將計算行為抽象化的數理邏輯機, 也可以認為是可計算性的一個抽象模型. Turing 和 Gödel, Church 等人差不多同時給出了判定問題的否定答案, 但 Turing 的模型更接近實際計算的物理過程, 比形式系統更能代表機械裝置, 所以在不可判定問題上更有說服力.

直觀上, 一臺 Turing 機包含以下要素:

  1. 一個兩個方向都可無限延長的紙帶 (Tape), 被分成一個個小方格. 格子或者是空白的, 用 00 表示, 或者寫上一個字符, 字符來自於一個事先給定的有限字母表 Σ={a1,⋯ ,an,0}\Sigma=\lbrace a_1,\cdots,a_n,0\rbrace. 任何時刻紙帶上只有有限個非空格.
  2. 一個讀寫頭 (Head), 每次可掃描紙帶上的一個格子. 它可以識別格子是空白的還是有字符的, 可以在空白格子上寫入字符, 也可以把已有字符抹去, 使格子再變成空白的. 讀寫頭還可以左右移動, 每次移動一格.
  3. 一個有窮的內部狀態集 Q={q1,⋯ ,qn}Q=\lbrace q_1,\cdots,q_n\rbrace, 在任一給定時刻, Turing 機都處在其中某個狀態 qiq_i.

設 Σ\Sigma 是一個有限字母表, 其中有 00, 還有至少一個非 00 字母; QQ 是一個有限內部狀態集, 其中至少含有一個內部狀態 q0q_0.

帶有有限字母表 Σ\Sigma 和有限狀態集 QQ 的 Turing 機 TT, 是指偏映射 T:Q×Σ→(Σ∪{L,R})×QT:Q\times \Sigma\to\left(\Sigma\cup\lbrace L,R\rbrace\right)\times Q 其中 LL, RR 分別表示左和右. TT 無定義時表示停機.

QQ 和 Σ\Sigma 都是有限集, 故 TT 的定義域是有限集. 定義一個 Turing 機, 只要給出它包含的全部四元組即可.
把四元組的集合稱為指令集 δ\delta, 其中每個指令是具有如下形式的四元組:
  • qaa′q′qaa'q', 其中 q,q′∈Qq,q'\in Q, a,a′∈Σa,a'\in \Sigma,
  • qaLq′qaLq', 其中 q,q′∈Qq,q'\in Q, a∈Σa\in \Sigma,
  • qaRq′qaRq', 其中 q,q′∈Qq,q'\in Q, a∈Σa\in \Sigma.

指令 qaa′q′qaa'q' 解讀為: 當前狀態為 qq 且讀寫頭在格子裡讀到的字符是 aa, 就把格子裡的 aa 改為 a′a', 並把狀態改為 q′q'; 另外兩類指令的解讀類似, LL 和 RR 分別表示向左和向右移動一格. 一個四元組 (指令) 就對應著 “一步計算”.

Turing 可計算函數

採用如下方式, 每個 Turing 機都可用來定義一個一元部分函數 φ\varphi.

設 TT 的字母表除 00 外還有 11, 如果以 ⋯01011⋯1⏞n0⋯\cdots010\enspace\overbrace{11\cdots1}^{n}\enspace0\cdots 的紙帶輸入 TT (簡稱 "以 nn 輸入 TT" ) 經運算後能停機, 則令 φ(n)=\varphi(n)= 輸出紙帶上非空格總數; 若不停機, 則 φ(n)\varphi(n) 無定義. 輸入紙帶前加上 "⋯010\cdots010" 是為了使自然數 00 作為自變量的值能夠輸入.

把紙帶換為

⋯0101⋯1⏞m01⋯1⏞n0⋯\cdots010\enspace\overbrace{1\cdots1}^{m}\enspace0\enspace\overbrace{1\cdots1}^{n}\enspace0\cdots

即可定義二元部分函數 ψ\psi. 進而, 可以利用 Turing 機來定義 kk 元部分函數 f:Nk→Nf:\mathbb{N}^k\to\mathbb{N}.

一個數論函數, 如果存在某個 Turing 機可用來定義它並計算它的函數值, 就叫做 Turing 可計算函數.

可以證明: Turing 可計算函數 = 部分遞歸函數.

Turing 論題: 算法可計算函數 = Turing 可計算函數.

停機問題

假定所有 Turing 機的字母表都取自一張通用字母表

Σ∗={A0,A1,A2,⋯ }\Sigma^{\ast}=\lbrace A_0,A_1,A_2,\cdots\rbrace

內部狀態符號都取自通用的狀態符號集

Q∗={q0,q1,q2,⋯ }Q^{\ast}=\lbrace q_0,q_1,q_2,\cdots\rbrace

其中 A0A_0 對應於空白, q0q_0 對應於初始狀態. 如果兩個 Turing 機的差別僅在於它們使用的字母符號和狀態符號不一樣, 那麼我們把它們視為同一個 Turing 機, 因為它們進行本質相同的計算.

下面給每個 Turing 機指定碼數.
  1. 定義單個符號的碼數:
  2. aLRAiqig(a)134i+54i+7 \begin{array}{c|cccc} a & L & R & A_i & q_i \\ \hline \text{g}(a) & 1 & 3 & 4i+5 & 4i+7 \\ \end{array}
  3. 定義四元組的編碼:
  4. g(abcd):=2g(a) 3g(b) 5g(c) 7g(d)\text{g}(abcd):=2^{\text{g}(a)}\thinspace3^{\text{g}(b)}\thinspace5^{\text{g}(c)}\thinspace7^{\text{g}(d)}
  5. 定義 Turing 機 T={σ0,⋯ ,σn}T=\lbrace\sigma_0,\cdots,\sigma_n\rbrace (σi\sigma_i 為四元組, 按字典序排列) 的碼數為:
  6. g(T):=2g(σ0) 3g(σ1)⋯ png(σn)\text{g}(T):=2^{\text{g}(\sigma_0)}\thinspace3^{\text{g}(\sigma_1)}\cdots\thinspace p_n^{\text{g}(\sigma_n)}

這樣就給每一個 Turing 機指定了唯一的碼數. 按碼數大小, 我們把所有 Turing 機枚舉如下:

T0,T1,T2,⋯ ,Tn,⋯T_0,T_1,T_2,\cdots,T_n,\cdots
定理: 存在 Turing 機不能計算的函數.

證明: 定義一元全函數 f∗f^{\ast} 如下:
  • f∗(n)=0f^{\ast}(n)=0 ⟺\Longleftrightarrow TnT_n 輸入 nn 後會停機,
  • f∗(n)=1f^{\ast}(n)=1 ⟺\Longleftrightarrow TnT_n 輸入 nn 後不停機.

假設存在某個 Turing 機 TT 能計算函數 f∗f^{\ast}, 由於 f∗f^{\ast} 是全函數, TT 對任何輸入都停機. 利用 TT 構造一個新的 Turing 機 T′T', 它包含 TT 的全部四元組, 並增加兩個新的狀態 qαq_{\alpha}, qβq_{\beta} 和一個新的字母 AA, 然後增加四元組

qα0Aqβ,qβ0Aqα,qαARqα,qβALqβq_{\alpha}0Aq_{\beta},\enspace q_{\beta}0Aq_{\alpha},\enspace q_{\alpha}ARq_{\alpha},\enspace q_{\beta}ALq_{\beta}

對 TT 原先沒有定義的每個 qiSq_i S, 增加四元組 qiSRqαq_i SRq_{\alpha}. 這樣做的目的是使 TT 在輸出 00 後轉接到循環狀態, 從而無法停機.

由 T′T' 的構造可知, TT 輸入 nn 後輸出 11 ⟺\Longleftrightarrow T′T' 輸入 nn 後會停機.

T′T' 必出現在 T0,T1,T2,⋯T_0,T_1,T_2,\cdots 中, 設 T′=TkT'=T_k. 向 TkT_k (即 T′T') 輸入 kk, 立即就會出現矛盾. 因此, 函數 f∗f^{\ast} 不是 Turing 可計算函數. □\square

推論: 停機問題是不可判定的. 即 "Turing 機 TmT_m 在輸入 nn 後是否會停機" 這一問題類不能用算法在有限步內判定. 因為如果存在這樣的算法, 那麼 f∗f^{\ast} 也就有了計算其值的算法, 從而成了遞歸函數.