陶哲轩实分析:2.自然数—Peano公理

2.1 Peano公理

"If people do not believe that mathematics is simple, it is only because they do not realize how complicated life is." ——John von Neumann


Fig.1 あいさか たいが

掌中老虎大河曾经说过:许多作者的行文逻辑实际上很令人费解,目录的编排也十分不合理,这不仅出现在部分畅销书上,更出现在部分数学教材中。一些代数教材在第一章便讲解了行列式这一概念,这对于甚至不了解何为线性、何为代数的同学是极大的精神负担。作者以这种顺序编写教材或许是因其特定学科的教学目标所致,但仍然有必要向读者说明具体情况。

部分书籍的出版甚至沦为了导师提携学生的方式,而知识水平薄弱的学生参与编纂导致教科书内漏洞百出,连习题的答案都存在错误,这种教科书流放到市场上便成为了坑害无数同学的劣质工具书。这种情况究其原因是作者过于注重了文章的内容输出,而忽略了文章的形式构造,即读者的阅读学习体验,这与快速工业化发展的国情是有联系的。

本书的行文逻辑十分新颖,开篇是以由Peano公理构造自然数开始进行讲述的。Tao令读者忘记掉所有数学基础知识(四则运算、代数法则、十进制计数等),从零开始构造自然数序列。

2.1.1 生命游戏

笔者在初中时期曾接触过一种有趣的游戏——生命游戏,它的学名为元胞自动机(Cellular Automaton/Automata)。在偌大的画布上存在着无数像素格,我们将其视为细胞,像素格为黑则为活细胞,反之则为死细胞,细胞的迭代更新遵循如下四条简单原则


  • “人口过少”:任何活细胞如果活邻居少于2个,则死掉。
  • “正常”:任何活细胞如果活邻居为2个或3个,则继续活。
  • ”人口过多”:任何活细胞如果活邻居大于3个,则死掉。
  • “繁殖”:任何死细胞如果活邻居正好是3个,则活过来。


我们看到,这是系统内部类似于生命演化的四条简单规则,而正是这简单的四条规则,使得系统可以演化出极其复杂的现象。在系统的持续迭代下,甚至出现了一些可以自我移动、自我繁殖、向外延申的复杂像素组块。

Fig.2 生命游戏——滑翔者

更令人震惊的是,生命游戏如今已被人证明是图灵完备的,也就是说,我们可以利用这简单的四条规则生成的系统,构造普通的逻辑门,进而构造出一个计算机。

举这个例子,实际上是为了让大家能直观的理解简单法则构造复杂系统这一现象,这与本书中构造实数的过程有异曲同工之妙。

2.1.2 从虚无转生到异世界开启构造的自然数的攻略生活

大家可能会好奇,为什么标题不是从零开始构造自然数,其实是因为”零“本身也是需要重新定义的概念。

1) 创世纪

我们从小学便学习了自然数,可以将自然数进行直观通俗的定义:(注:笔者在所有文章中的定义、定理、引理、公理序号将与实分析原文保持一致,而非以笔者的文章正常顺序进行标记)

  • Definition 2.1.1 : 自然数是集合\(N\)中的元素。其中,集合\(N\)是由0开始,无休止地向前进行计数所得到的所有元素构成的集合。我们称\(N\)自然数集

\[ N:=\left\{0,1,2,3,4····\right\} \]

其中\(a:=b\)表示命题:令a的值等于b,Definition 2.1.1给出了自然数的解释,但是这似乎并不能很好的说服我们,即从零开始无休止地向前计数真的能构造出自然数集\(N\)吗,不会到某个数字然后绕回循环吗?

在回答这个问题之前,我们首先要知道复杂运算实际是由简单运算构成的,指数运算\(5^{3}\)其实是3个5相乘,乘法运算\(5 \times 3\)实际上是3个5相加,那么加法运算是如何构成的呢?实际上,加法运算本质前文所说的一种向前计数的过程,也就是增加的过程,那么我们便可以将\(5 + 3\)理解为5增长了3次,实际上,增长运算才是人类最开始接触的运算,早于加法。

于是我们便可以正式开始定义自然数,来回答上面的问题:利用数字0和增量运算。在本书中,增量运算的符号与计算机语言保持一致,即n++为n的增量,也就是紧跟在n后的数字。那么自然数显然可以表示为:0, 0++, (0++)++ 这样的形式,我们思考一下什么样的系统会生成这样的序列,很容易便可以得到"上帝"创造自然数的前两条游戏规则:

  • Axiom 2.1 : 0是一个自然数。(原点)
  • Axiom 2.2 : 如果n是一个自然数,那么n++也是一个自然数。(递推)

很好,我们试图应用这个系统规则推演迭代一下,用Axiom 2.1创造出世界的起点0,接着运用Axiom 2.2创造自然数0++,再重复运用Axiom 2.2创造自然数(0++)++,无休止的迭代下去,我们就完美的生成了上帝的序列——自然数序列。

显然随着增量运算的迭代,数字的记号特别不方便,为了标记方便一些,我们采用熟悉的印度-阿拉伯数字记号,开始赋值定义 \(1:=0++\),\(2:=(0++)++\),\(3:=((0++)++)++\)等等。

利用这个系统我们可以做一些事情了!比如证明一下 Proposition 2.1.4:3是一个自然数。

Proof: 根据Axiom 2.1我们得到0是自然数,利用Axiom 2.2我们得到0++=1是一个自然数,再次利用Axiom 2.2我们可以得到1++=2也是一个自然数,又根据Axiom 2.2我们可以得到2++=3还是一个自然数

这似乎非常显然,我们轻而易举的就构造出了自然数序列,这太easy了!

Fig.3 创世纪

2)轮回

这显然是不可能的,我们发现如此生成的自然数序列有一个很严重的问题——绕回问题。举个例子,计算机的内存限于物理性质是有限的,增量运算达到一定次数后内存便会溢出,在计算机系统中运行65536次增量运算后,一个整数的双字节表示便会绕回到0。仅依靠上面两个公理,我们或许无法阻止绕回问题的发生,于是我们尝试修补一下这个世界:

  • Axiom 2.3 : 0不紧跟在任意一个自然数之后,即对于任意自然数n,n++≠0。(防绕零)

很好,我们现在为这个世界新添加了一个法则,来对着系统推演一下看看效果,证明一下Proposition 2.1.6:4不等于0。

你可能会疑惑,为什么要证4不等于0,其实这并不是显然的,在最初的系统模型中,我们无法确定3++是否等于0,即无法确定4是否等于0

Proof: 由Definition 2.1.1可知4=3++,根据Axiom 2.1Axiom 2.2我们知道3是一个自然数,再利用Axiom 2.3我们可以得到3++≠0,即4≠0

事物的发展本来就是持续螺旋上升的,我们成功的阻止了世界的轮回,让事物可以持续发展下去。

3)世界终点

可惜发展遇到了尽头,由这三条游戏规则构成的自然数序列显然存在一些问题。由上面我们得到4为自然数,但是令4++=4,也就是5=4,进而导致(4++)++=4,也就是6=4,等等,仔细观察我们发现,这完全是在符合上面三条公理下发生的事情。还可以令4++=1,也就是5=1,这也完全符合上述三条公理。显然,自然数序列在生成的过程中碰壁了,达到了天花板,开始对序列中的其他元素进行绕回。我们当然希望自然数序列中的每一个元素都是独一无二的数值,为了继续阻止这种绕回问题的发生,添加规则:

  • Axiom 2.4 : 对于不同的自然数而言,紧跟在其后的自然数也是不同的,即对于不相等的两个自然数n、m,n++也不等于m++(逆否命题:换言之,若n++与m++相等,则一定有n与m也相等)。(防绕非零元素)

其实,防止绕回非零元素的法则有许多,不一定非要是上面这条,但上述规则均为最简,我们利用这四条法则来证明一下Proposition 2.1.8:6不等于2。

Proof: 原文中利用反证法假设6等于2进行证悖,我们这里尝试正向证明,由Axiom 2.3可知4≠0,再由Axiom 2.4可知4++≠0++,即5≠1,继续利用Axiom 2.4可知5++≠1++,即6≠2,其实原文中的反证法更加的简单直观,但原理相同,只不过反证法需要用到公理4的逆否命题。

宇宙本来就应该是无穷无尽的,现在我们杜绝了一切循环、绕回现象的发生,自然数序列成功从有穷进化到了无穷,真正达到了无休止的效果。

Fig.4 无穷宇宙

4)自我更新—数学归纳!!

现在高兴还太早了。的确,根据以上世界法则生成的自然数序列确实是无休止的进行增量运算,且每一个元素都是独一无二的。可是观察以下序列: \[ N:=\left\{0,0.5,1,1.5,2,2.5,3····\right\} \] 我们惊讶的发现,它完全满足上述四条公理,但是却完全不是一个我们想构造的自然数序列,实际上整数中间的数字是0.5、0.4、0.3····都可以,这种夹杂在整数间的元素,被Tao称为流氓元素。这确实太犯规了!简直就像张三钻了法律的漏洞,流氓元素成功的在四条公理的眼皮下污染了我们希望的自然数序列,污染了上帝的神迹!但别紧张,的确存在这样一种极其巧妙的方法,可以让序列内部剔除掉所有流氓元素。这便是我们熟悉的数学归纳法

  • Axiom 2.5 :(数学归纳法) 令P(n)表示自然数n的任意一个性质,如果同时满足P(0)为真、P(n)为真时一定有P(n++)也为真这两个条件,那么对于任意自然数n,P(n)一定为真

实际上,Axiom 2.5 并不能算作一个公理,而是一个公理模板,也就是说它不能算做世界的法则,而应该算成创造世界法则的工具Tool 2.5。因为每一个满足Axiom 2.5 的性质P都可以算作一个小公理。

数学归纳法的原理并不理解,在生活中我们甚至不自觉的会应用到这种思想,但困扰很多人的问题是,如何利用数学归纳法的原理将流氓元素剔除??我们来实际看一下Axiom 2.5的运行原理:

  • 假设性质P(n)满足以下条件:P(0)为真,且P(n)为真时P(n++)为真,那么我们可以推出P(0++)=P(1)为真,继而推出P(1++)=P(2)为真,重复这个过程,我们便可以得到P(1)、P(2)、P(3)、P(4)···全为真。

哦?我们发现上述运行原理中根本不关P(0.5)的事情,永远也得不出P(0.5)为真,因为数学归纳法的原理中通过对变量进行++,进而严格规定了只有对整数自然数才能产生结果真,而既然P(0.5)不为真,这肯定是违背了Axiom 2.5中“对于任意自然数n,P(n)都成立”这句话。换句话说,我们通过这种方法把流氓从人群中筛选了出来。

但是筛选出来之后呢?筛选出来之后怎么剔除呀?这取决于性质P(n)是什么,也就是说我们只要精心设计出P(n)满足“P(0)为真,且P(n)为真时P(n++)为真”这句话,就可以将其代入公理模式Axiom 2.5生成一个对于任意自然数成立的小公理。来试试看:

我们假设P(n)为“n不是一个整数加上0.5”,并将P(n)代入到Axiom 2.5 中,我们就能得到P(0)为真,且P(n)为真时P(n++)一定为真,所以对于任意自然数n,P(n)为真,即所有自然数都不是一个整数加上0.5。以此方法我们可以设计无数P(n)代入Axiom 2.5,来将所有的非整数自然数全部剔除在外,再与前面四个公理联合,发现果然只剩下了我们心心念念的自然数集\(N\),Amazing

至此,我们通过五条游戏法则完成了完美自然数集的构造,一个有序的世界终于被我们创造了出来,所以我们称其为五条悟(bushi)。

Fig.5 五条悟 ごじょうさとる

实际上,Axiom 2.1~2.5被称为关于自然数的Peano公理。书中提到一些注意点

  • 古人认为数不可避免的会与外部例如物理概念产生联系,对数的公理化工作是现代数学的成果,现代数学中发现了数可以仅以公理化产生,以概念形式存在。这避免了过深的哲学问题。
  • 我们只是通过公理化产生了一个自然数系统,并且关注可以利用其做什么。而不在乎自然数是什么,有什么意义,这是抽象化的数学研究必要的。
  • 自然数每一个元素都是有穷的,但整体却是无穷的,这可以通过Axiom 2.5证明。
  • 我们当然可以采用〇、Ⅰ、Ⅱ、Ⅲ···的自然数系统但这与我们创造的系统同构,且可以一一对应,故我们只采用印度-阿拉伯数字标记自然数序列。


“この世界の谁ひとり见たことがない物がある。“

”それは优しくて、とても甘い。“

”たぶん、见ることができたなら、谁もがそれを欲しいがあるはずだ。”