前言
事到如今,我们已经学习了太多的数系,自然数、有理数、实数、复数等等,我们能够熟练运用各种运算法则,交换律、分配律。但是似乎我们并没有严格定义过、推导过这些数系与运算法则。第二章第一个内容,就是关于自然数,重新认识自然数,以一种更为严格、抽象的方式去看待。
一、自然数的传统定义
印象中,小学的时候学习自然数的时候,老师会很直观地、形式化地告诉我,自然数就是 { 0 , 1 , 2 , 3 , 4... } \{0,1,2,3,4...\} {0,1,2,3,4...}。到了高中,学了集合以后,我们会把它定义成一个自然数集,自然数就是该集合中的元素,这个集合由从0开始无限往下数下去的所有数构成。
然而这还是不够,暂且不论我们定义自然数是否必须引入集合的概念,其次是这种定义仍然不够清晰地描述(我们希望)自然数集有的性质。如书(《陶哲轩实分析》)中所说,一方面我们无法保证这样一直数下去不会循环回到1,另一方面这个定义不涉及运算,我们仍然无法建立自然数的运算,更别说其他的运算法则。这种形式化,或者说构造化的定义只能形象地描述自然数是什么,但是无法体现其性质。
因此,一个好的自然数定义,我们希望能体现其该有的性质。于是有了Peano公理,它公理化的定义了什么是自然数。这种公理化的定义的好处是,它不需要借助于将数学中的概念和客观真实世界进行对应,自然数不需要指代物体的数量等等具体的事物,而单纯抽象成为一种数学的研究对象。
此外,公理化的定义带来的好处是,让我们放弃直观地认为某个东西就是什么样子。即满足定义的东西,无论多么抽象,多么反直觉,它就是这样。而直观上认为成立的东西,如果没有经过严格证明,也应该心存怀疑。
二、Peano公理
2.1 数零与增长运算
Peano公理定义了自然数应该满足怎样的条件,这些条件决定了自然数的性质。下面我们依次介绍并尝试理解Peano公理的具体五条内容。
公理2.1: 0是一个自然数
公理2.2: 若 n n n是一个自然数,则 n n n++是一个自然数
2.1直接给出了一个数零0,就像道学说的,道生一,一生万物。我们得先给自然数一个“1”作为基础元才能往后发展不是。2.2则是涉及到自然数的运算,这里 n n n++是一种基础的增长运算,它表示数 n n n增长得到另一个数 n n n++。
由2.1和2.2就可以看出,我们想要的自然数,是由一个基础元“0”,通过不断的做增长运算得到的。即:
0 , 0 + + , ( 0 + + ) + + , . . . 0,0++,(0++)++,... 0,0++,(0++)++,...
为了标记方便,我们定义了一些符号去表示这些增长运算得到的数, 1 : = 0 + + , 2 : = ( 0 + + ) + + , . . . 1:=0++,2:=(0++)++, ... 1:=0++,2:=(0++)++,...,(":="表示定义为)并称增长后得到的数为增长前的数的后继。通过公理2.2,可以证明 “2是自然数”,只需要重复利用公理2.2,从0增长到1,再增长到2即可。
2.2 循环回归
从公理2.1,2.2可以看出,我们希望给一个数零,然后定义一个封闭的增长运算,从而生成所有的自然数。然而这还是不够的,因为我们没有办法避免增长运算循环回归到0的问题。最极端的反例是,我们可以定义增长运算为 0 + + = 1 , 1 + + = 0 0++=1,1++=0 0++=1,1++=0。显然这个数系是满足公理2.1和2.2的。然而我们不希望自然数是如此这样循环往复的,(根据上述定义,可以得到 2 : = 1 + + 2:=1++ 2:=1++为0, 3 : = 2 + + 3:= 2++ 3:=2++为0)这样的自然数未免太过无聊。于是有了第三条公理:
公理2.3: 0不是任何自然数的后继,即对每个自然数 n n n,都由 n n n++ ≠ 0 \neq 0 =0
有了公理2.3,就可以证明不会再出现循环回归了。例如,可以通过公理2.1和2.2证明3和4是自然数,再通过公理2.3,由4=3++可知 4 ≠ 0 4 \neq 0 4=0 (自然数不都等于0),即不会循环回归到0。
然而这还不够,虽然公理2.3杜绝了回归到0的可能性,但是回归到1其他数呢?比如 0 + + = 1 , 1 + + = 2 , 2 + + = 1 0++=1,1++=2,2++=1 0++=1,1++=2,2++=1呢?容易验证这个数系满足公理2.1-2.3。它带来的问题还是一样,我们会得到诸如3=2++=1,4=3++=2这类看似荒唐的结论。因此,我们重新审视这个循环回归问题,除了先前讨论的后继为0的情况,其实就是增长运算增长到某个数的时候,又得到了之前已经得到过的数,即有不同的自然数拥有相同的后继。因此,有了第四条公理:
公理2.4: 不同的自然数必有不同的后继。
有了这两个公理,我们就再也不用担心循环回归的问题了。也就可以证明 “ 6 ≠ 2 6\neq 2 6=2”(即自然数各不相同)了。通过反证法,可得 5 + + = 1 + + 5++=1++ 5++=1++,由公理2.4可知矛盾,从而得证。
2.3 清除多余“增长支路”
通过公理2.1-2.4,其实我们已经基本上获取了我们熟悉的各不相同,前仆后继的自然数们了。但是,还有一个问题,就是增长支路的问题。可以肯定,我们定义公理2.1和2.2的时候,希望自然数是由0和对其重复增长运算得到的。但是这种定义并不能够杜绝其他的增长支路。例如如下数系:
0 , 0.5 , 1 , 1.5 , . . . 0,0.5,1,1.5, ... 0,0.5,1,1.5,...,其中 0.5 + + = 1.5 , 1.5 + + = 2.5 , . . . . 0.5++=1.5, 1.5++=2.5,.... 0.5++=1.5,1.5++=2.5,....
虽然这里我们还没引入小数,但是我们可以简单将其理解为由0重复增长得到的数之外的数。可以看到,这个数系是无法通过公理2.1-2.4开除自然数集的,因为我们公理2.1只是给了0作为基础元,但是没有说0.5就不是基础元,它增长得到的数就不是自然数。因此,为了清除干净这些奇奇怪怪的数,回归我们最初的目的——自然数由0及其重复增长运算得到,有了第五条公理:
公理2.5(数学归纳原理): 设 P ( n ) P(n) P(n)为自然数的一个性质,假设 P ( 0 ) P(0) P(0)为真,并假设若 P ( n ) P(n) P(n)为真,则 P ( n + + ) P(n++) P(n++)也为真。那么对于每个自然数 n n n, P ( n ) P(n) P(n)均为真。
理解“并假设若 P ( n ) P(n) P(n)为真,则 P ( n + + ) P(n++) P(n++)也为真”可能稍微有点不直观,其实这句话想说的就是,假设这个性质对于自然数及其后继有某种可归纳性。所有公理2.5的意思就是,如果对于某个性质,该性质对0是真的,且该性质具有可归纳性,那么就可以推导到对所有自然数该性质都为真。
公理2.5 其实是一个公理框架,不同的性质P可以产生无数个公理。这个公理提供了一个证明某个性质P对所有自然数都为真的方法,即我们熟知的数学归纳法。我们回到我们的目标,清除奇怪的数。通过我们上面的理解,可以知道由0及其重复增长得到的数,可以通过 P ( 0 ) P(0) P(0)为真以及可归纳性,去保证这些数都能满足 P ( n ) P(n) P(n)为真。然而,其他的奇奇怪怪的数就无法从这两条假设中推导出P为真。因为他们不是0的后继,也不在0的后继增长支路上。
然而这只能说明多余的增长支路没法保证公理2.5成立,而不是其他支路存在会导致公理2.5一定不成立,这个逻辑需要理清楚。所以我们还是需要通过公理2.5推导出其他支路不存在。
通过书中给出的思想,可能的证明思路如下:
1)对于某个其他增长支路,我们可以定义性质P为:n不是该增长支路上的数。
2)通过公理2.5可知
P
(
0
)
P(0)
P(0)为真,而且若
P
(
n
)
P(n)
P(n)为真,则
P
(
n
+
+
)
P(n++)
P(n++)也为真,(因为0及其增长得到是数,不会和其他增长支路相交,由公理2.4可以保证这一点。)
3)因此,由公理2.5,得P对每个自然数都为真。由此,其他增长支路上的数不是自然数。(否则P无法保证对每个自然数都为真,从而导致公理2.5不成立。)
三、自然数的新定义
有了Peano公理,我们就可以重新定义自然数,但是由于现在还有许多东西还为定义,如集合等概念,我们可以先给一个简单的定义,即对于一个数系N,我们称其中的数为自然数,如果Peano公理对这个数系成立。
总结
通过一条条拆解Peano公理,我们也理解了自然数是怎么一步步构建出来的。就像抽丝剥茧一样,只保留其最本质的性质,进行准确地描述。有了自然数的定义,我们就可以进一步丰富自然数上的运算,其实也是对增长运算做延展,得到我们数学的运算,并推导出他们的运算法则。