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
掌中老虎大河曾经说过:许多作者的行文逻辑实际上很令人费解,目录的编排也十分不合理,这不仅出现在部分畅销书上,更出现在部分数学教材中。一些代数教材在第一章便讲解了行列式这一概念,这对于甚至不了解何为线性、何为代数的同学是极大的精神负担。作者以这种顺序编写教材或许是因其特定学科的教学目标所致,但仍然有必要向读者说明具体情况。
部分书籍的出版甚至沦为了导师提携学生的方式,而知识水平薄弱的学生参与编纂导致教科书内漏洞百出,连习题的答案都存在错误,这种教科书流放到市场上便成为了坑害无数同学的劣质工具书。这种情况究其原因是作者过于注重了文章的内容输出,而忽略了文章的形式构造,即读者的阅读学习体验,这与快速工业化发展的国情是有联系的。
本书的行文逻辑十分新颖,开篇是以由Peano公理构造自然数开始进行讲述的。Tao令读者忘记掉所有数学基础知识(四则运算、代数法则、十进制计数等),从零开始构造自然数序列。
2.1.1 生命游戏
笔者在初中时期曾接触过一种有趣的游戏——生命游戏,它的学名为元胞自动机(Cellular Automaton/Automata)。在偌大的画布上存在着无数像素格,我们将其视为细胞,像素格为黑则为活细胞,反之则为死细胞,细胞的迭代更新遵循如下四条简单原则:
- “人口过少”:任何活细胞如果活邻居少于2个,则死掉。
- “正常”:任何活细胞如果活邻居为2个或3个,则继续活。
- ”人口过多”:任何活细胞如果活邻居大于3个,则死掉。
- “繁殖”:任何死细胞如果活邻居正好是3个,则活过来。
我们看到,这是系统内部类似于生命演化的四条简单规则,而正是这简单的四条规则,使得系统可以演化出极其复杂的现象。在系统的持续迭代下,甚至出现了一些可以自我移动、自我繁殖、向外延申的复杂像素组块。
更令人震惊的是,生命游戏如今已被人证明是图灵完备的,也就是说,我们可以利用这简单的四条规则生成的系统,构造普通的逻辑门,进而构造出一个计算机。
举这个例子,实际上是为了让大家能直观的理解简单法则构造复杂系统这一现象,这与本书中构造实数的过程有异曲同工之妙。
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了!
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.1和Axiom 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的逆否命题。
宇宙本来就应该是无穷无尽的,现在我们杜绝了一切循环、绕回现象的发生,自然数序列成功从有穷进化到了无穷,真正达到了无休止的效果。
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)。
实际上,Axiom 2.1~2.5被称为关于自然数的Peano公理。书中提到一些注意点
- 古人认为数不可避免的会与外部例如物理概念产生联系,对数的公理化工作是现代数学的成果,现代数学中发现了数可以仅以公理化产生,以概念形式存在。这避免了过深的哲学问题。
- 我们只是通过公理化产生了一个自然数系统,并且关注可以利用其做什么。而不在乎自然数是什么,有什么意义,这是抽象化的数学研究必要的。
- 自然数每一个元素都是有穷的,但整体却是无穷的,这可以通过Axiom 2.5证明。
- 我们当然可以采用〇、Ⅰ、Ⅱ、Ⅲ···的自然数系统但这与我们创造的系统同构,且可以一一对应,故我们只采用印度-阿拉伯数字标记自然数序列。
“この世界の谁ひとり见たことがない物がある。“
”それは优しくて、とても甘い。“
”たぶん、见ることができたなら、谁もがそれを欲しいがあるはずだ。”