本文主要是介绍《哥德尔证明》阅读笔记——哥德尔证明过程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
哥德尔的证明过程
背景
之前几节阐述了哥德尔证明的一个背景,具体脉络是,当人们在推进公理化系统时,遇到的一个核心问题:如何证明一个公理化系统是无矛盾的。人们一开始想出了模型法,即如果一个完全形式化的系统在现实中找到一个存在的模型可以对应,那么可以认为这个系统是一致的。这实际上是在模型和公理系统中做了一个一一映射,如果公理系统不一致,那么这个模型也不可能存在于现实或逻辑中。
模型法只对有穷元素的公理体系适用,不能对其他很多常用公理体系给出一致性证明,如数论系统体系,几何公理体系等。希尔伯特对此困难提出了对公理体系的一致性绝对证明,他首先要求对系统进行完全形式化,抽离一切意义,把所有形式系统所有公理和定理描述成一堆指号串,并对指号串施加一些约束和规则,这样证明过程就变成了对指号串的排列,杜绝了任何隐含的证明条件;区分了证明的层次,他明确了形式系统内的句子和元数学的句子。要求对形式系统的证明给出元数学推理,证明此形式系统不可能有矛盾的定理。
之后我们成功的在初等命题逻辑系统给出了一致性的绝对证明,它通过先找到一个命题逻辑中的定理 p ⊃ ( ∼ p ⊃ q ) p\supset(\sim p\supset q) p⊃(∼p⊃q),再根据命题逻辑的分离规则,推出了一个元数学描述:如果把另一个公式 S S S带入 p p p,那么如果 S S S和 ∼ S \sim S ∼S都可以从形式系统中推导出来,那么任意公式 q q q都可以从形式系统中推导出来。这也就是说,如果系统是一致的( S S S和 ∼ S \sim S ∼S都是定理),那么任何公式( q q q)都是定理,只要找到一个不是定理的公式即可。
接下来我们证明了系统中每个公式都带有重言属性,因此不是重言式的公式也不是定理,系统中存在一个不是重言式的公式 p ∨ q p\lor q p∨q,因此这个公式不是定理。因此系统是一致的。
希尔伯特的方法在初等命题逻辑系统中取得了成功,但是否能对数论系统这样的复杂系统给出一致性的绝对证明呢?这个问题在哥德尔之前一直没有答案,这也是哥德尔要证明的东西。
哥德尔证明
内容
罗素的《数学原理》中发展出的形式系统足够表达整个数论系统,对这种形式系统一致性证明的构造一致未能成功,知道哥德尔的论文最终证明了那个结论:不可能为一个足以包含整个算术的系统,如《数学原理》的一致性给出一个元数学证明,除非该证明的推论规则在本质方面不同于该系统内推理所用的转换规则。 也就是说,只有使用比《数学原理》中规则更强的推理规则,才可能给出一个对《数学原理》的一致性证明,但是这样的话,使用的推理规则本身就值得怀疑。
哥德尔不久又给出了一个更加根本的结论:《数学原理》或任何类似能在其中发展出算术的系统,本质上都是不完全的,都存在无法在系统中推出的数论真陈述。有人认为哥德巴赫猜想就是这样的一个无法证明的真陈述。
注意到上述这两个结论都有限制,即使用要证明的形式系统的推论规则。如果我们扩充形式系统的公理或推理规则,是否在原形式系统中无法证明的真陈述就可以证明了呢?哥德尔结果表明,即便是这样的,但扩充后的系统本质上又是一个新的形式系统,它本身依旧存在其他不可证明的真陈述。
证明灵感
哥德尔证明这些结论的论证结构很大程度上是参考了“理查德悖论”,理查德悖论的主要思想如下,我们有一门语言,比如说英语,我们可以用英语描述“不能被1和它自身以外的其他数整除的数”,“是某个整数的平方”等等这样,这些英语句子有很多很多,但有个共同的特征,这些句子包含的字母数量是有限的。
我们对这些定义句子(或叫定义序列)进行排序,按句子中所含的字母数量来排序,最少的放最前面,字母越多的放后面,字母数目一样的就按字母在a-z中的顺序排列。排序后,我们可以给每个句子一个编号,从前到后。
比如(仅作为示例):
编号 | 定义 |
---|---|
1 | A number has bigger than 1 |
2 | A number can be divided by 10 |
3 | A number is not divisible by 1 and any number other than itself |
这样,任意一个定义就可以与一个整数相对应,这样可以发现,有些编号会和它的定义正好匹配,比如上表中编号3,它指向的定义实际上素数的定义,而编号3恰好是素数,这种情况下,编号和定义匹配;相反的一个情况是编号1,它就和它的定义恰好不匹配。前一种情况,我们称3不是理查德数,后一种情况,我们称1是理查德数。
理查德数显然也是一个基于定义序列的一个新定义,显然它可以放到定义序列中,它当然也有一个编号 n n n,那么问题就来了, n n n是理查德数吗?如果 n n n是理查德数,它就不能符合它的定义:它的编号和定义无关,不符合这个定义就意味着 n n n的编号和定义要有关,那么 n n n就不是理查德数。这就矛盾了。
这个悖论虽然启发了哥德尔的证明,但它叫悖论,实际上是因为上述叙述中存在着一个骗局,定义序列中的定义范围,我们并没有严格框定。显然最初是想在数论系统内,给不同的整数性质下定义的,但一个数是不是理查德数,这显然不是数论系统内的定义,它是元数学层次的。
哥德尔证明当然想办法解决了这个错误,它另一个核心灵感是映射,映射就基本特征是:对象在一个域中的抽象结构,可以被证明在另一个域中的对象之间也成立,比如坐标几何和代数之间的映射。哥德尔使用映射做了一件事,他实质上建立了一个形式系统的元数学陈述到这个系统内的算术陈述的映射。通过这个方法,他把像"这个系统是一致的"这样的元数学陈述在数论陈述中构造出来。并且证明了这个算术陈述在形式系统中不可证明。
哥德尔编码
哥德尔使用了《数学原理》中发展的形式系统的改编形式,这里称之为PM形式系统(这个形式系统可以发展出完整的数论或算术体系)。
PM形式系统的基本指号有常项指号和变元指号:
其中常项指号有:
∼ ∨ ⊃ = 0 + × ( ) , s ∃ \sim \lor \supset = 0 + \times ( ) , s \ \exist ∼∨⊃=0+×(),s ∃
这些指号进行推理时可以看作完全抽离了意义的指号串,当我们想和传统数论体系对应时,把它们看作我们通常理解的意义也是可以的,使用我们日常理解的意义对后面的叙述的理解也更方便,这些指号分别是:
非、或、蕴涵、等于、数字0、加、乘、左括号、右括号、后继、存在。
希望描述在数论中最常用的式子之一 1 + 1 = 2 1+1=2 1+1=2,在PM形式系统中可以写为 s 0 + s 0 = s s 0 s0+s0=ss0 s0+s0=ss0。
变元指号有数字变元 x y z x\ y\ z x y z(可以用数字如 s s 0 ss0 ss0等带入),句子变元 p q r p\ q\ r p q r(可以用公式带入)等等,谓词变元 P Q R P\ Q\ R P Q R(可以用谓语带入,如是素数、大于这样的陈述)。
形式系统中,我们先为所有指号进行编码,这个编码就叫做哥德尔数:
指号 | 哥德尔数 |
---|---|
∼ \sim ∼ | 1 1 1 |
∨ \lor ∨ | 2 2 2 |
⊃ \supset ⊃ | 3 3 3 |
∃ \exist ∃ | 4 4 4 |
= = = | 5 5 5 |
0 0 0 | 6 6 6 |
s s s | 7 7 7 |
( ( ( | 8 8 8 |
) ) ) | 9 9 9 |
, , , | 10 10 10 |
+ + + | 11 11 11 |
× \times × | 12 12 12 |
x x x | 13 13 13 |
y y y | 17 17 17 |
z z z | 19 19 19 |
… | … |
p p p | 1 3 2 13^2 132 |
q q q | 1 7 2 17^2 172 |
r r r | 1 9 2 19^2 192 |
… | … |
P P P | 1 3 3 13^3 133 |
Q Q Q | 1 7 3 17^3 173 |
R R R | 1 9 3 19^3 193 |
… | … |
变元指号的哥德尔数编码规则是用大于12的素数,素数平方,素数3次方进行编码,可以保证不会重复。
在基本指号编码完成后,对PM系统中任意一个公式也可以给出编码,如公式(句子): ( ∃ x ) ( x = s y ) (\exist x)(x=sy) (∃x)(x=sy)
这个公式的符合我们数论直觉的解释是,存在一个数 x x x是 y y y的后继。这个公式有10个指号,可以用如下方式进行哥德尔编码:取每个指号的哥德尔数,放在依次增大的素数的幂指数上,将这些数相乘,就得到这个公式的哥德尔数:
2 8 × 3 4 × 5 13 × 7 9 × ⋯ × 2 9 9 2^8\times3^4\times 5^{13}\times7^9\times \cdots\times29^9 28×34×513×79×⋯×299
公式与哥德尔数的对应关系具有唯一性,因为根据素数基本定理,将一个数分解素因子后再查表即可还原出原公式。
对于公式序列,同样可以指定一个哥德尔数,如果一个公式的哥德尔数是 m m m,下一个公式的哥德尔数是 n n n,那么由这两个公式组成的公式序列的哥德尔数可以写成: 2 m × 3 n 2^m\times 3^n 2m×3n
哥德尔编码实际上为任何一个指号、公式和公式序列指定了一个唯一的正整数作为哥德尔数。不过反过来并不是每个正整数都对应一个指号、公式或公式序列,比如100,它不是任何变元的哥德尔数,而且分解因式发现它也不是任何公式的哥德尔数, 100 = 2 2 × 5 2 100=2^2\times 5^2 100=22×52,其中 3 3 3的幂是0,它不对应任何一个指号。
元数学的算术化
就如证明灵感中所说,哥德尔证明的一个关键步骤是把元数学陈述映射到算术陈述中。基本思想是,既然PM中每个表达式都与一个哥德尔数相关联,那么关于形式表达式的印刷关系(typographical relation)的元数学陈述就可以被解释为关于哥德尔数及其相互之间算术关系的陈述。
先做一个简单类比,当我们再超市柜台排队时,会领到一个纸条,上面印着一个编号,告诉我们排队的顺序。假如A的编号是22,B的编号是43,那么不用费劲的告诉B,他要排在A后面(元数学陈述),只需要指出22小于43即可。
具体的,考虑一个简单的公式 ∼ ( 0 = 0 ) \sim (0=0) ∼(0=0),它是一个明显的错误,我们做一个元数学观察:公式第一个符号是 ∼ \sim ∼。这个元数学观察一定能映射到一个数论断言中,显然根据我们构造哥德尔数的规则,我们把此公式的哥德尔数记作 a a a,这个数论断言是 2 2 2是 a a a的一个因子,而 2 2 2^2 22不是。当然这是非形式陈述,数论陈述应该如何描述这个概念呢?
描述一个数是另一个数的因子,可以用PM公式 ( ∃ z ) ( y = z × x ) (\exist z)(y=z\times x) (∃z)(y=z×x),那之前的元数学陈述:公式第一个符号是 ∼ \sim ∼,可以被写为:
∼ ( ∼ ( ∃ z ) ( s s s ⋯ s s s 0 = z × s s 0 ) ∨ ( ∃ z ) ( s s s ⋯ s s s 0 = z × ( s s 0 × s s 0 ) ) ) \sim (\sim(\exist z)(sss\cdots sss0=z\times ss0)\lor (\exist z)(sss\cdots sss0=z\times(ss0\times ss0)) ) ∼(∼(∃z)(sss⋯sss0=z×ss0)∨(∃z)(sss⋯sss0=z×(ss0×ss0)))
其中 s s s ⋯ s s s sss\cdots sss sss⋯sss代表有 a a a个 s s s,这个公式的自然语言解释是: a a a没有素因子 2 2 2或者 a a a有素因子 2 2 2^2 22是不可能的。尽管很冗长,但它确实展示了一个这样的事实:
元数学陈述:“ ∼ ( 0 = 0 ) \sim(0=0) ∼(0=0)”的起始符号是波浪号,对应了PM中的一个算术陈述。
公式 D e m ( x , z ) Dem(x,z) Dem(x,z)的引入
接下来考虑一个更复杂的元数学陈述:
哥德尔数为 x x x的公式序列是哥德尔数为 z z z的公式在PM中的证明。
这个元数学陈述同样可以算术化, x x x和 z z z之间存在一种明确且复杂的算术关系,我们用记号 d e m ( x , z ) dem(x,z) dem(x,z)描述整数 x x x和 z z z的算术关系。这种记法仍然是元数学的,只是用一个符号指代了之前的描述,但是可以清楚的意识到,PM中一定有一个公式可以表达这个关系,这个公式记作 D e m ( x , z ) Dem(x,z) Dem(x,z),这是一个完全形式化的公式(意味着完全展开后,所有的指号都在PM形式系统内)。
D e m ( x , z ) Dem(x,z) Dem(x,z)在PM中的存在意味着:
形如“根据PM的规则,xxxx证明了xxxx”的真元数学陈述,都被忠实的反映在PM中的定理中;同样形如“根据PM的规则,xxxx不能证明xxxx”的真元数学陈述,也被忠实的映射为 ∼ D e m ( x , z ) \sim Dem(x,z) ∼Dem(x,z)公式中,其中 x x x和 z z z应用 s s s ⋯ s s s 0 sss\cdots sss0 sss⋯sss0代替, D e m Dem Dem也应被描述具体算术关系的指号串代替,上述描述才能被称为公式。
公式 S u b ( x , y , x ) Sub(x,y,x) Sub(x,y,x)的引入
考虑到公式 ( ∃ x ) ( x = s y ) (\exist x)(x=sy) (∃x)(x=sy),它的哥德尔数记为 m m m,又有变元 y y y的哥德尔数为 17 17 17。如果用哥德尔数 m m m取代变元 y y y,那么会得到一个新公式 ( ∃ x ) ( x = s s s ⋯ s s s 0 ) (\exist x)(x=sss\cdots sss0) (∃x)(x=sss⋯sss0)
其中, s s s有 m + 1 m+1 m+1个。这个新公式也有一个哥德尔数,我们用 s u b ( m , 17 , m ) sub(m,17,m) sub(m,17,m)代表这个新公式的哥德尔数, s u b ( m , 17 , m ) sub(m,17,m) sub(m,17,m)的含义是,在哥德尔数为 m m m的公式中,找到变元为 17 17 17的指号(查表可知是 y y y),将其用数字 m m m代替。同样的,映射到PM系统内,也有一定的算术过程可以通过 m m m、 17 17 17、 m m m的演算推导出哥德尔数的数值,这样的公式记作 S u b ( m , 17 , m ) Sub(m,17,m) Sub(m,17,m)。这里的区分很好理解,小写的 s u b sub sub代表的是非形式的描述,它是一个数字,而大写的 S u b Sub Sub是PM形式系统的一个指号串,即公式。
证明的核心
以下一步步解释哥德尔的论证过程。
-
目标:在PM中构造一个公式 G G G,使其表达如下元数学陈述:使用PM的规则,公式 G G G不是可证明的。
回顾公式 D e m ( x , z ) Dem(x,z) Dem(x,z),它的元数学陈述是:哥德尔数为 x x x的公式序列可以证明哥德尔数为 z z z的公式。那么下面的新公式: ( ∃ x ) D e m ( x , z ) (\exist x)Dem(x,z) (∃x)Dem(x,z)就表示存在一个哥德尔数为 x x x的公式序列,构成了哥德尔数为 z z z的公式的一个证明。
那么下面的公式: ∼ ( ∃ x ) D e m ( x , z ) \sim(\exist x)Dem(x,z) ∼(∃x)Dem(x,z),其元数学陈述就是哥德尔数为 z z z的公式在PM系统中不可证。这里并没有说明什么,我们需要找到一个具体的 z z z。
考虑公式(1) ∼ ( ∃ x ) D e m ( x , S u b ( y , 17 , y ) ) \sim(\exist x)Dem(x,Sub(y,17,y)) ∼(∃x)Dem(x,Sub(y,17,y)),这个新公式元数学陈述是:哥德尔数为 s u b ( y , 17 , y ) sub(y,17,y) sub(y,17,y)的公式是不可证明的。这个公式同样没有说明更有效的信息, y y y仍然没有确定。用什么来替换 y y y呢?显然公式(1)有个具体的哥德尔数,记为 n n n,我们直接用 n n n替换 y y y得到一个新的公式(G): ∼ ( ∃ x ) D e m ( x , S u b ( n , 17 , n ) ) \sim(\exist x)Dem(x,Sub(n,17,n)) ∼(∃x)Dem(x,Sub(n,17,n))
它的元数学意义是:哥德尔数为 s u b ( n , 17 , n ) sub(n,17,n) sub(n,17,n)的公式是不可证明的。公式 G G G中不在含有具体的变元(还有存在变元 x x x),意义是确定的。这个新公式的哥德尔数是多少呢?我们先把它记作 g g g。现在对于公式(1),如果我们直接对其中的 y y y替换为 n n n,那么新公式的哥德尔数就是 s u b ( n , 17 , n ) sub(n,17,n) sub(n,17,n),替换后的公式形式就是 ∼ ( ∃ x ) D e m ( x , S u b ( n , 17 , n ) ) \sim(\exist x)Dem(x,Sub(n,17,n)) ∼(∃x)Dem(x,Sub(n,17,n))。因此 g = s u b ( n , 17 , n ) g=sub(n,17,n) g=sub(n,17,n)。
现在公式 G G G的含义就是:哥德尔数为 g g g的公式是不可证明的,也就是公式 G G G不可证。这个结论即:PM内的公式 G G G断言了它不是PM的一个定理。
-
证明 G G G不是PM的一个定理。
公式 G G G的形式否定为: ( ∃ x ) D e m ( x , S u b ( n , 17 , n ) ) (\exist x)Dem(x,Sub(n,17,n)) (∃x)Dem(x,Sub(n,17,n)),元数学陈述是:哥德尔数为 g g g的公式 G G G在PM中存在一个证明。这就意味着如下陈述:如果 G G G的否定是可证明的,那么 G G G也是可证明的。这意味着如下事实,如果 ∼ G \sim G ∼G是可证明的,形式系统PM就是不一致的(同时推出了定理和定理的否定);如果PM系统是一致的,那么 ∼ G \sim G ∼G是不可证明的, G G G也不可证明,那么PM系统中 G G G是不可判定的。
-
如果PM是一致的, G G G是真命题(区别于上一步, G G G在PM系统内不可证明,但可以用元数学推理证明)
G G G的元数学描述是: G G G在PM中不可证。如果PM是一致的, G G G在PM中不可判定,这是2中推断出的结论,因此如果PM是一致的, G G G是真命题。 -
上面的推理结论可以描述为:如果PM是一致的,那么它就是不完全的。即PM中可表达的真陈述并非都可以在PM内推理出来。
这种不完全性是本质的,我们知道 G G G是真命题,把他作为公理扩充到PM系统中仍不能形式的产生所有算术真理。新系统中会有新的更复杂的 D e m ′ Dem' Dem′形式, G ′ G' G′依旧可以由类似的方法构造出来。 -
上步骤4的结论:如果PM是一致的,那么它是不完全的。这个本身也是元数学陈述,它同样可以在PM内描述出来。
PM是一致的,就意味着存在一个公式是PM无法证明的(回顾初等命题逻辑的一致性的绝对证明,如果PM系统不一致,那么就可以推出任何公式, p ⊃ ( ∼ p ⊃ q ) p\supset(\sim p\supset q) p⊃(∼p⊃q))。它记为 A A A,内容是 ( ∃ y ) ∼ ( ∃ x ) D e m ( x , y ) (\exist y)\sim(\exist x)Dem(x,y) (∃y)∼(∃x)Dem(x,y)
PM是不完全的,即存在一个真的但不可证的公式 X X X, X X X不是PM的定理。 G G G本身就可以作为这样的元数学陈述对应的一个公式,因为 G G G的元数学陈述就是 G G G不是PM的定理。故,如果PM一致,那么它不完全,这句话的形式公式是:
( ∃ y ) ∼ ( ∃ x ) D e m ( x , y ) ⊃ ∼ ( ∃ x ) D e m ( x , S u b ( n , 17 , n ) ) (\exist y)\sim (\exist x) Dem(x,y)\supset\sim(\exist x)Dem(x,Sub(n,17,n)) (∃y)∼(∃x)Dem(x,y)⊃∼(∃x)Dem(x,Sub(n,17,n))
简写为 A ⊃ G A\supset G A⊃G,这个公式在PM内可证明(具体证明书中未给出), A A A必然在PM内无法证明,因为如果可以证明,根据命题逻辑的分离规则, G G G也可以证明了。
最终的一个结论,如果PM是一致的,那么它的一致性不能通过任何可以被映射到PM自身内的元数学推理来建立。这不是说 P M PM PM不是一致,甚至不是说 P M PM PM不可证明,真正的含义是不存在可以被映射到PM内的一致性证明。
这篇关于《哥德尔证明》阅读笔记——哥德尔证明过程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!