(你可能会发现这期主题好像不一样,其实是因为公式太多 typora 崩了所以只能换 vscode 导出)

在这章中,我们(终于)将学会算术了。更具体来说是一阶皮亚诺算术。

皮亚诺算术的形式化

皮亚诺算术的逻辑语言中有以下内容:

一个是形如 0 的表达式。我们记其为 n。(如果没有强调的必要,我们一般还是直接记为 n 算了。)

皮亚诺算术的第一公理体系(称为 CA)中有如下内容:

皮亚诺算术的第二公理体系(称为 VJ)中有如下内容:

请注意一阶皮亚诺(一如所有一阶逻辑语言一样)是没有谓词上的量词的,所以上述公理没有 F 而是对每个谓词 F 单独开一条公理。但是这有什么区别呢?在很久以后我们才能了解这两种体系的区别是……多么恐怖。

(读者可以尝试一下证明加法交换律 a+b=b+a。)

和其他公理体系一样,我们也可以通过另一种方法得到皮亚诺算术,具体来说我们可以通过

F(a),ΓΔ,F(a)F(0),ΓΔ,F(s)

来得到皮亚诺算术 PA。

定理.

一个列可以通过 CAVJ(在 LK 中)证明当且仅当它可以在 PA 中被证明。

现在我们看看能不能把 LK 上的论断搬到 PA 上。

对于正则性和之前是一样的。

现在我们来看看切割和归纳(在什么情况下)能去除。

不完备性定理

很不幸的是,众所周知,PA 是不完备的。事实上,所有 PA 的扩展都是不完备的。具体来说

定义.

如果公理系统 A 恰好是一组(有限个)公理范式的所有实例,称 A可公理化的。如果某形式系统和 LKA 等价,那么称它也是可公理化的。

一个系统 S 被称为一个 PA 的扩展当且仅当所有 PA 中的定理都能在 S 中证明。

本节我们主要研究那些可公理化的 PA 的扩展。


下面让我们进入 Gödel's Incompleteness Theorem 的证明。先让我们准备一些(主要在数论部分有用的)小工具。

定义.

以下归纳定义的函数被称为原始递归函数

  • f(x1)=x1

  • f(x)=k​。(参数组 x1,x2,,xn 简记为 x。)

  • f(x)=xi

  • f(x)=g(h1(x),,hm(x)),其中 g,h 都是原始递归函数。

  • f(0)=k,f(x1)=g(x1,f(x1)),其中 g 是原始递归函数。

  • f(0,x)=g(x),f(x1,x)=h(x1,f(x1,x)),其中 g,h 都是原始递归函数。

一个 n 元关系 R 被称为原始递归关系,当且仅当存在一个只取 0,1 的原始递归函数 f(x) 使得 R(x) 当且仅当 f(x)=0

(请区别谓词和 n 元关系;回忆一个形式系统和它的模型。事实上我们也应该区别形式函数和函数,接下来用 f 表示形式化版本而 f 表示原始递归表述。)

例如,+ 都是原始递归函数,=< 都是原始递归关系。

定理.

原始递归函数可以用 PA 的逻辑语言表达,它们的定义都可以用 PA 证明。

称一个函数能被一个逻辑语言表达当且仅当存在一个命题 ϕ 使得

f(x)=yϕ(x,y)

证明.

下面我们介绍 Gödel's β

β(x1,x2,x3)=x1mod(1+x2(x3+1))

考虑到我们可以用 之类的东西表达整除,所以在 PA 中是可以表达 β 的,但是想想都恶心所以我们这里还是不写了。

这个 β 函数有什么用呢?那是因为:

对于任意 (k0,k1,,kn),存在数 b,c

β(b,c,i)=ki

(注意到我们可以令 c=(n+1)! 使得模各自互质,b 就显然了。)

因此,β 函数可以完美起到构造函数的作用。

不妨举原始递归函数的第五条定义的例子,这时 f(n)=m 等价于

bcβ(b,c,0)=ki (i<n)(β(b,c,i)=g(i,β(b,c,i))β(b,c,n)=m

这不仅完全使用了 PA 的语言,而且 PA 可证。

进而 n 元关系们自然亦然。


那么首先我们需要能够在命题中讨论命题和证明本身。我们需要介绍哥德尔编码

定义. (Gödel's Numbering)

令每一个逻辑语言符号 X(加上推理符号 和横线 )对应一个数 X

令列 X0X1X2 对应

2X03X15X2

记为 X0X1X2

特别地令证明 Q/S 对应

2Q35S

引理.

  • "替换"操作可以被算术化为一个原始递归函数。具体来说存在 sb(X(a0),Y)=X(Y),其中 a0 被完全指示。

  • m(即数 m 的形式化表达的哥德尔编码)可以被算术化为一个原始递归函数,记为 v(m)

  • "PS 的证明"可以被算术化为一个原始递归关系。具体来说存在 Prov(P,S) 当且仅当 PS 的证明。

这才是整个证明最难的地方吧喂。

我们很难指出具体的原始递归函数,但是有个绕了很大一圈以至于有点搞笑的证明方法:以上形式化操作显然都可以通过图灵机计算,因此根据丘奇-图灵论题它们也一定能被原始递归函数表达。

定理.

简记 xProv(x,A)Pr(A)。(A 可能看着非常奇怪。毕竟 A 是一个数,上划线其实可以忽略。)

Pr(A)Pr(Pr(A))

可证。

证明.

如果 A 可由 P 证,那么 Prov(P,A) 对应的原始递归函数恒为 0。由于,我们知道,原始递归函数的点值皆可证,那么 Prov(P,A) 自然也是可证的。

(事实上以上推理对任何原始递归关系都成立:一个原始递归关系如果恒为真,那么它的形式化版本是可证的。)


万事具备,我们已经可以开始搞事情了。

定理. (Tarski's undefinability theorem)

一个单一自由变元的命题 T 被称为真值定义,当且仅当对于所有没有自由变元的命题 A

T(A)A

可证。

如果该形式系统一致,那么真值定义不存在。

或者你也可以用更炫酷的方法表达这个定理:算术真值不可算术定义。

证明.

下面这个方法称作 Gödel's trick。实际上也是一种对角线构造:你可以在停机问题等等诸多地方找到它。

假设真值定义存在,那么令

  • F(a0):=¬T(sb(a0,v(a0)))

  • p:=F(a0) 是它的哥德尔编码;

  • AT:=F(p)。在真值上它等价于 ¬T(sb(p,v(p))),当然它并不如此编码。

那么自然有 AT=F(p)=sb(F(a0),p)=sb(p,v(p)),于是我们惊奇地发现

AT¬T(AT)

矛盾。得证。

定理. (Gödel's first incompleteness theorem)

如果在形式系统 S 中,对于任意命题 A(a0),如果 ¬A(n)n=0,1,2, 皆可证,那么 xA(x) 不可证,那么就说 Sω-一致的。(注意 ω-一致(显然)蕴含一致。)

如果 Sω-一致的,那么 S 不完备。

证明.

继续使用 Gödel's trick

我们暂时记 F(α) 这样的记法:其中 α 是一个谓词,这样我们就可以用命题来替换它。你将会看到这样的记法是安全的;我们并不涉及这样的命题替换的原始递归函数之类的问题。(即,不涉及 sb(F(α),A);对于已经完成替换的命题,求其编码等操作完全具有良定义。)(我靠我解释这么多干什么)

  • p:=F(Pr(sb(a0,v(a0))))

  • AF:=F(Pr(sb(p,v(p))))

再一次地,AF=sb(p,v(p)) 显然成立,因此它可证,进一步

AFF(Pr(AF))

(不仅成立)也可证。

事实上,

引理. (Diagonal lemma)

对于 S 中的任意(单自由变元)命题 F(a0),总存在一个(无自由变元)命题 AF,满足

AFF(AF)

可证。

F(α)=¬α,那么

AF¬Pr(AF)

可证。

如果 AF 可证,那么 Pr(AF) 也可证(上上个定理),由于 S 一致,¬Pr(AF) 就不可证了,与 AF 可证(并由上式立即给出一个 ¬Pr(AF) 的证明)矛盾。因此 AF 不可证。

(请注意反证法的是用 ¬ 推理等表达的,不涉及真值和语义问题。)

(这里我们只是懒得写推理步骤,如果你真的好奇的话可以看看接下来的 Gödel's second incompleteness theorem 的证明,那里我们写全了。)

下面说明 ¬AF 也不可证。由于 AF 不可证,那么 ¬Prov(n,AF) 都成立,也就都可证,那么由 ω-一致,Pr(AF) 不可证,因此 ¬AF 也不能可证(否则由上式立即给出一个 Pr(AF) 的证明)。

因此,S 不完备。

尽管 AF 无法在 S 内被证明,但是"直觉上"它是真的,但这样的推理无法在 S 内表达。

你会想,嗯?为什么不能在 S 内表达?明明只要根据 S 一致我们就有——

定理. (Gödel's second incompleteness theorem)

如果 S 一致,S 的一致性在 S 中不可证。

更具体来说,令 ConsisS=¬Pr(0=1)AFConsisS 可证。而 AF 不可证,因此一致性也不可证。

寄。

证明.

  • 由于 ex falso quodlibet,¬ConsisSAPr(A) 可证。那么 AF¬Pr(AF)ConsisS

  • 显然 ConsisS,Pr(AF)¬Pr(¬AF),后者又等价于 ¬Pr(Pr(AF))。而我们早就知道 Pr(AF)Pr(Pr(AF)),因此

ConsisS,Pr(AF)¬ConsisS

用一次 ¬ 推理和一次压缩即可得到

ConsisS¬Pr(AF)AF

得证。

事实上,我们还可以把 Gödel's first incompleteness theorem 中的 ω-一致弱化(在结论上是强化)到一致。

证明. (Rosser)

e 是一个满足 e(A)=¬A 的原始递归函数。

F(a0):=

x1(Prov(x1,a0)¬x2(x2x1Prov(x2,e(a0))))

即,"存在一个 A 的证明且不存在一个比它更(哥德尔编码意义上)小的 ¬A 的证明"。

你可能会疑惑这玩意听起来和 Gödel's first incompleteness theorem 的构造好像没啥区别。

由于 S 一致,所以 Prov(x1,a0)¬Pr(e(a0))。即 Pr(a0)F(a0)。且显然 F(a0)Pr(a0),即 F(a0)Pr(a0)

关键在于,利用 S 的一致性(并不在 S 中),我们才能证明这二者等价;在 S 中这是不可证的。

如果 Prov(x1,a0)¬x2(x2x1Prov(x2,e(a0))) 成立,那么它一定是可证的:因为我们可以单纯地遍历所有 x2x1 检验 Prov(x2,e(a0))。进而 F(a0) 也可证。

这里我们直接不作构造而是直接应用 Diagonal lemma 的结论,得到一个命题 AF 满足

AF¬F(AF)

可证。

如果 AF 可由证明 P 证明,那么由上式 ¬F(AF) 可证。由于已知 AF 可证,所以一定存在一个比 P 更小的 ¬AF 的证明,S 不一致。

如果 ¬AF 可由证明 P 证明,那么由前面的论述 F(¬AF) 可证(注意和 Gödel's first incompleteness theorem 的区别在这里显现了)。也就证明了不存在比 P 更小的 AF 的证明,自然给出 ¬F(AF) 的证明,进而 AF 可证,S 不一致。

超限归纳

本章后半段最重要的内容是证明 PA 的一致性。Gentzen 的思路是这样的:为 PA 中的每一个证明分配一个序数,当 Gentzen 简化 (reduce) 一个证明时这个序数一定会下降。Gentzen 证明,如果一个证明的结论为空列(矛盾)他就能无限简化下去,而根据超限归纳(良序性)这是不可能的。因此 PA 没有结论为矛盾的证明。所以,当然,首先我们先来学习一下超限归纳。


超限归纳的意思是,我们可以从

得到对于任意 β<α 的序数都有 P(β)。其中 α 是我们约定好的上限;比如皮亚诺算术中它就是 ω,因此它是"不太超限"的归纳。

接受越远的超限归纳意味着我们的理论越强,从而可能证明比它更弱的理论的一致性。当然,由于序数本身(可怕的)证明论意义,接受太远的超限归纳可能导致无法预测的后果……为了证明 PA 的一致性,我们需要直到 ε0 的超限归纳。所以先这样吧。

事实上即使在皮亚诺算术中我们也可以谈论(ε0 以下)的序数:

于是,很显然,一个(小于 ε0 的)序数可以用有限长的序数的列表表达;自然可以用皮亚诺算术表达,进而被哥德尔编码。

序数上自然可以定义序数和、序关系、序数积、自然数乘方等等,大家都很熟悉了所以不表。

应用以上定义(蕴含直到 ε0 的超限归纳)已经足以证明 ε0(指集合 ε0;以上内容无法定义 ε0 更没法证明不存在从 ε0 本身出发的无穷递降链)的良序性,不需要任何的集合论公理(事实上我们这里定义的"序数"本身也没有集合论含义)。证明不表。

特别地,我们将记 ω1=ω,ω2=ωω,ωn=ωω

接下来进入正题。

Gentzen's Consistency Proof

引理.

定义.

PA 中的一个证明被称为是简单的当且仅当它

  • 没有自由变元

  • 只使用算术公理(不形如 AA,只使用皮亚诺中新加的公理)

  • 只使用结构性推理

  • 不使用本质的切割

无法简单地证明

证明.

P 中的所有命题都形如 s=t,其中 s,t 都是没有自由变元的项,因此可以被简单地赋予"真值"。结构性推理和非本质切割的保"真值"性是显然的。

定义. (Gentzen 的序数指派)

S 是一个列,P 是一个证明。

  • 一个命题的复杂度是其所含的逻辑符号的数量;一个切割推理的复杂度是其切掉的命题的复杂度;一个归纳推理的复杂度是其归纳步骤 F(a)F(a) 的复杂度。

  • h(S,P)SP 中的高度,等于其下方切割推理和归纳推理的复杂度的最大值。

下面正式开始定义 o(S,P)

  • S 是公理,那么 o(S,P)=ω0

  • SS 通过非切割的结构性推理得到,o(S,P)=o(S,P)​。

  • SS 通过逻辑性推理得到,o(S,P)=o(S,P)+1。若 SS,S 通过逻辑性推理得到,o(S,P)=o(S,P)o(S,P)。(其中 是自然和而不是序数和)

  • SS,S 通过切割得到,

o(S,P)=ωω(o(S,P)o(S,P))

其中 ω 指数塔有"SS,S 高度的差"层。

  • SS 通过归纳得到,而且 S 的 Cantor 标准形中最高的一项为 ωα1,那么

o(S,P)=ωωωα1+1

其中如果不算顶部的 ωα1+1ω 指数塔有"SS 高度的差"层。

o(P) 为结论 So(S,P)

有时候,为了方便,对于 P,我们会把它的 o(P) 记在结论的 上,即

PΓo(P)Δ

自然 o(P)<ε0。我们只需要接受直到 ε0 的超限归纳。

定理.

如果 P 是一个 的证明,存在另一个证明 Po(P)<o(P)

证明. (Gentzen's Consistency Proof)

下面我们开始化简 (reduction) P

首先称,从结论()往上回溯,直到遇到逻辑性推断(这些列不包含逻辑性推断的前提但包含结论);所有这些列被称为证明的结尾


步骤 1. 循环此步直到不能再进行。如果 P 的结尾中含有一个不作为归纳推断所用的变元的自由变元(结尾中不含逻辑性推断;而且由于正则性,它不在证明的其他地方作为 , 或归纳推断所用的变元出现),把它替换为 0

步骤 1 不影响 o(P)

步骤 2. 假设 P 的结尾中有至少一个归纳。选取其中最低的一个,形如

P0F(a),ΓμΔ,F(a)F(0),ΓΔ,F(s)

由于经过了步骤 1 而且该归纳推断最低,所以 s 无自由变元。自然存在唯一 ms=m 可(不需要本质的切割和归纳地)证,进而 F(m)F(s) 亦然。令 Q 是这样一个证明。

已知 m,我们就可以"手动归纳",具体来说可以得到如下证明:

P0(0)F(0),ΓμΔ,F(0)P0(1)F(0),ΓμΔ,F(0)F(0),ΓΔ,F(0)

进而得到一个 F(0),ΓΔ,F(m) 的证明。配合上先前的 Q,我们就得到了一个替代品。

当然更关键的是分析这样的替代对 o(P) 的影响如何。注意到 F(n),ΓΔ,F(n+1) 全都具有相同的高度,因此新证明的 omμ 加上一个小于 ω 的常数(即 o(Q)),相对于 ωα1+1 有着压倒性的优势。

步骤 2 只需进行一次就可以退出流程(已经得到了一个更小的 P)。接下来,如果进入了步骤 3,那么我们便假设 P 的结尾中已经没有归纳。

步骤 3. 假设 P 中含有一个形如 DD 的公理,两个 D 都必须以切割消去。这部分证明有点像切割消除定理,所以我们仍会跳过。o(P) 的减小的证明基于不等式 ωαωβ<ωαβ

同样,如果进入步骤 4,那么我们便假设 P 的结尾中没有自由变元、归纳、逻辑推断和非算术公理。

步骤 4. 主要是为了步骤 5 准备。循环此步直到不能再进行。如果 P 的结尾中有一个弱化推断,则我们可以把它消除。具体细节根本就没人关心所以仍然跳过。

现在 P 的结尾中没有自由变元、归纳、弱化、逻辑推断和非算术公理。

步骤 5. 显然,由于本章最开头的引理,P 现在绝不可能是它自己的结尾。

如果对于一个切割推断来说,它所切掉的两个(相同的)命题,各自都是在结尾"边界"的推断中新引入的,那么称这个切割归纳是合适的。合适于什么呢,当然是合适于消去了。不过消去的论证先放一下,我们现在证明 P 中一定存在这样一个合适的切割归纳。

证明.

由于 P 不是自己的结尾,那么由边界的逻辑推断引入的含逻辑连接词的命题必定只能被切割律消去,因此 P 中一定有一个本质的切割。取其最低的一个,称为 I。如果 I 本身就是一个合适的切割那就证完了。否则令其形如

IP1ΓΔ,DP2D,ΠΛΓ,ΠΔ,Λ

不妨假设 P1 中的 D 并非由边界的逻辑推断引入。

P1 一定含有一个边界推断;否则 D 只能由公理引入,但是非算术公理已经在步骤 3 消除了,而算术公理又会导致 I 非本质,都矛盾。

现在取 P1 中的(对于 P 的)一个边界推断 JJ 当然也是 P1 的一个边界推断。因为 J 的存在,P1 也不是自己的结尾。那么我们对 P1 归纳即可。

现在取得了合适的切割,我们取其最低一个,不妨令其形如

IJ1ΓΘ,AΓΘ,BΓΘ,ABΓμΘ,ABJ2A,ΠΛAB,ΠΛAB,ΠνΛΓ,ΠΘ,Λ

注意这里我们令 D=AB 推断引入。其他逻辑推断同理,不表。

下面我们重写这个证明;事实上我们将要表明,ΓΘ,B 那一支完全是不必要的。

我们从 I 向下,找到第一个和 I 的前提高度不同的列 ΔΞ。自然它是一个切割 K 的结论。注意 ΔΞ 可能就是 I 的结论本身也有可能是 。但它必定是存在的。

考虑如下证明

I1J1ΓΘ,AΓΘ,A,ABΓμΘ,A,ABAB,ΠνΛΓ,ΠΘ,Λ,A

I1 通过和 I 类似的推理得到 ΔΞ,A

和如下证明

I2ΓμΘ,ABJ2A,ΠΛAB,A,ΠΛAB,A,ΠνΛA,Γ,ΠΘ,Λ

I2 通过和 I 类似的推理得到 A,ΔΞ。接下来两者进行切割,得到完整证明。

h(Γ,ΠΘ,Λ,A)=h(A,Γ,ΠΘ,Λ) 显然 =h(ΔΞ,A)=h(A,ΔΞ)(中间没有切割),也就 =max(complexity of A,h(ΔΞ))。不论如何,总严格小于 AB 的复杂度。剩下的序数不等式没人关心,不表。

综上,步骤 5 一定能进行而且一定使 o(P) 减小。证毕。

合上超限归纳,我们得到

定理.

PA 一致。

可证良序

定义.

L 上的一个 Σ10 命题形如下

y(f(x1,,xn,y)=0)

其中 f 是一个原始递归函数的形式化版本。

L 上的一个 Π10 命题形如下

y(f(x1,,xn,y)=0)

可以证明,任何原始递归关系都可写成 Σ10Π10 的形式。

定义. (可证良序)

我们在 PA 中加入一个一元常谓词 ε 和一个自然数上的原始递归良序关系 <。不妨设 < 中的最小元素为 0。由前 < 可以被写为一个 Σ10 命题;对于后者我们仍采用 < 这个记号。

如果

x(y<x(ε(y)ε(x)))ε(a)

(记为 TI(<)

在 PA 中可证,那么称 < 是一个可证良序

定理. (Gentzen)

如果 < 是一个可证良序,那么存在一个原始递归函数 f:Nε0(还记得我们可以在皮亚诺算术中讨论小于 ε0 的序数)使得

  • a<b 当且仅当 f(a)f(b);(后者是 ε0 的自然序)

  • 存在序数 μ<ε0f(a)μ

或者你也可以用更炫酷的方法表达这个定理:PA 的证明论序数为 ε0

显然,正如我们做了很多次的那样,我们可以在 PA 中加入公理

x(x<tε(x))ε(t)

称新系统为 TJ。< 是可证良序意味着形如 ε(m1),,ε(mn) 的结论在 TJ 中皆可证。令 mi 中的最小者为 TJ 的终值;更具体一点,令 |m|< 是所有 <m 的元素构成的序型,令其(序数自然序)的最小者为 TJ 的终值。

我们的证明思路如下:我们构造一个魔改的 Gentzen Reduction。

这样,我们就可以证明终数总是不大于 o(P)。利用在 o 上的超限归纳:不关键的情况显然,对于关键的情况,如果终数大于 o(P),应用新 Reduction 把终数修改为 o(P) 便由归纳得到矛盾。

假设我们已经对 P 做了步骤 1~4,那么 P 现在满足如下性质:

  • P 的结尾不含自由变元。

  • P 的结尾不含归纳。

  • P 的结尾不含逻辑性公理。

  • 如果 P 中有一个弱化 I,那么 I 以下的所有推断都是弱化。(步骤 4 我们之前没详细讲,这里接受即可。)

这时,P 至少有一个逻辑推断或 TJ 的新公理(回忆上一章开头的引理)。因此 P 的结尾的边界上至少有一个逻辑推断或 TJ 的新公理。

如果 P 也通过了步骤 5,那么它只能是 TJ 新公理,形如

x(x<tε(x))ε(t)

并且(通过一些痛苦的证明)最终会在结论中体现为 ε(mi)。取任意 m 使得 |m|< 小于 P 的终数。那么 m<t 是一个真的、Σ10 的列,从而可以用一个公理和一次 推断直接证明。因此我们可以把上式替换为

Fm<rε(m)ε(m)m<rε(m)ε(m)x(x<rε(x))ε(m)x(x<rε(x))ε(m),ε(r)

o6。因此,很简单,我们只需要给 TJ 的初始列指派复杂度为 7 即可。