前言
在2.1 Peano公理中,我们学习了建立一个自然数需要的条件,其中定义了自然数的基本运算,增长运算。本文进一步对增长运算进行拓展,定义自然数的加法运算,并给出我们习以为常的加法交换律的证明。
一、递归定义
在介绍加法的定义之前,先介绍一个叫递归定义的命题:
设对每个自然数n,都有某个函数 f ( n ) : N → N f(n): N\rightarrow N f(n):N→N将自然数映射成自然数。设c是一个自然数,那么可以给每个自然数n指定唯一的一个自然数 a n a_n an,使得 a 0 = c , a n + + = f n ( a n ) a_0=c,a_{n++}=f_n(a_n) a0=c,an++=fn(an)。
这个命题第一次看可能有点蒙,不知所云。其实就是告诉我们一件事:可以借助自然数去递归地定义序列,而不用担心定义会发生重复冲突。这是因为Peano公理保证自然数不会出现循环回归(详情见2.1),也就不会出现 a n + + a_{n++} an++被重复定义(试想如果有循环回归,会如何导致重复定义?)。此外,多于增长支路上的元素也不会被定义分配 a n a_n an。
有了递归定义,我们可以用递归的方式去看待我们希望加法运算能做的事情。首先,我们明确我们想要定义的加法是对增长运算的重复,比如让5加上3( 3 + 5 3+5 3+5)就是要对5做三次重复的增长运算,如果我们可以把它看成是先对5做两次增长运算,再增长一次,即 ( 2 + 5 ) + + (2+5)++ (2+5)++。如此重复,最后我们会得到
3 + 5 = ( 2 + 5 ) + + = ( ( 1 + 5 ) + + ) + + = ( ( ( 0 + 5 ) + + ) + + ) + + 3+5=(2+5)++=((1+5)++)++=(((0+5)++)++)++ 3+5=(2+5)++=((1+5)++)++=(((0+5)++)++)++
由此可见,让一个自然数m加上任意的另一个自然数n,都可以通过这种递归性,最终都可以变成 0 + m 0+m 0+m的若干次增长的形式。也就说,我们定义一个加法,只需要给出 0 + m 0+m 0+m,以及上述递归性即可。下面给出加法的定义:
设m,n都是自然数,定义m加上零为 0 + m : = m 0+m:=m 0+m:=m。现归纳假设已经定义好了m加上n,则m加上 n + + n++ n++定义为: ( n + + ) + m = ( n + m ) + + (n++)+m=(n+m)++ (n++)+m=(n+m)++。
这里递归性可以看到就是让一个自然数m加上另一个自然数n的后继等于让自然数m加上自然数n的后继。(注意:我们只是需要0+m,而不知道m+0;递归性的定义我们也没有给出3+5=5+3,即交换律并没有包括在加法定义中,而是可以由加法定义推导证明出来的规律。)
有了如上定义,我们就可以进行任意两个自然数的加法运算了,比如
2
+
m
=
(
1
+
m
)
+
+
=
(
(
0
+
m
)
+
+
)
+
+
=
(
m
+
+
)
+
+
2+m=(1+m)++=((0+m)++)++=(m++)++
2+m=(1+m)++=((0+m)++)++=(m++)++。下面我们来证明加法交换律。
二、加法交换律
要证明任意两个自然数做加法都满足加法交换律,容易想到使用归纳法。因此我们要先证明: [ 1 ] : P ( 0 ) 为真: 0 + n = n + 0 [1]: P(0)为真:0+n=n+0 [1]:P(0)为真:0+n=n+0, [ 2 ] : 若 P ( m ) 为真,则 P ( m + + ) 为真 [2]: 若P(m)为真,则P(m++)为真 [2]:若P(m)为真,则P(m++)为真。确认了思路,下面我们先证明[1]。
2.1 证明[1]:0+n=n+0
要证明任何自然数加上0等于0加上该自然数,那么同样会想到使用归纳法(凡是要证明对所有自然数成立的,根据Peano公理第五条,数学归纳原理,容易想到使用归纳法)。首先验证 P ’ ( 0 ) P’(0) P’(0):
0 + 0 = 0 = 0 + 0 0+0=0=0+0 0+0=0=0+0为真
设 P ‘ ( n ) 为真: 0 + n = n + 0 = n P‘(n)为真:0+n=n+0=n P‘(n)为真:0+n=n+0=n,
下证 P ’ ( n + + ) P’(n++) P’(n++)为真:
由 0 + m = m 0+m=m 0+m=m可知: 0 + n + + = n + + 0+n++=n++ 0+n++=n++
由加法定义的递归性可知: ( n + + ) + 0 = ( n + 0 ) + + = n + + (n++)+0=(n+0)++=n++ (n++)+0=(n+0)++=n++
因此, 0 + n + + = n + + = ( n + + ) + 0 0+n++=n++=(n++)+0 0+n++=n++=(n++)+0
证毕
2.2 证明[2]:P(m++)
有了 P ( 0 ) : 0 + n = n + 0 为真 P(0):0+n=n+0为真 P(0):0+n=n+0为真,我们再来证 P ( m + + ) P(m++) P(m++):
设 P ( m ) 为真: m + n = n + m P(m)为真:m+n=n+m P(m)为真:m+n=n+m,
下证 P ( m + + ) P(m++) P(m++)为真: ( m + + ) + n = n + m + + (m++)+n=n+m++ (m++)+n=n+m++
由加法定义的递归性可知: ( m + + ) + n = ( m + n ) + + (m++)+n=(m+n)++ (m++)+n=(m+n)++
由 P ( m ) P(m) P(m)为真可知: ( m + + ) + n = ( m + n ) + + = ( n + m ) + + (m++)+n=(m+n)++=(n+m)++ (m++)+n=(m+n)++=(n+m)++
此时,如果我们再用加法递归性,会得到 ( n + + ) + m (n++)+m (n++)+m,这并不是我们要的 n + m + + n+m++ n+m++。似乎没有办法再证下去了。既然我们想要的是(n+m)++=n+m++,不妨先证明这个式子。
2.3 证明引理:(n+m)++=n+m++
P ′ ′ ( 0 ) : ( 0 + m ) + + = n + + = 0 + n + + P''(0):(0+m)++=n++=0+n++ P′′(0):(0+m)++=n++=0+n++为真
设 P ′ ′ ( n ) P''(n) P′′(n)为真: ( n + m ) + + = n + m + + (n+m)++=n+m++ (n+m)++=n+m++,下证 P ′ ′ ( n + + ) P''(n++) P′′(n++)为真
由加法递归性,有 ( ( n + + ) + m ) + + = ( ( n + m ) + + ) + + ((n++)+m)++=((n+m)++)++ ((n++)+m)++=((n+m)++)++
由 P ′ ′ ( n + + ) P''(n++) P′′(n++)为真,有 ( ( n + m ) + + ) + + = ( n + m + + ) + + ((n+m)++)++=(n+m++)++ ((n+m)++)++=(n+m++)++
再由加法递归性,有 ( n + m + + ) + + = ( n + + ) + m + + (n+m++)++=(n++)+m++ (n+m++)++=(n++)+m++
因此, ( ( n + + ) + m ) + + = ( n + + ) + m + + ((n++)+m)++=(n++)+m++ ((n++)+m)++=(n++)+m++,证毕。
现在,有了这条引理,刚刚 P ( m + + ) P(m++) P(m++)的证明就迎刃而解了,接着上面:
由 P ( m ) P(m) P(m)为真可知: ( m + + ) + n = ( m + n ) + + = ( n + m ) + + (m++)+n=(m+n)++=(n+m)++ (m++)+n=(m+n)++=(n+m)++
由引理: ( n + m ) + + = n + m + + (n+m)++=n+m++ (n+m)++=n+m++可知: ( n + m ) + + = n + ( m + + ) (n+m)++=n+(m++) (n+m)++=n+(m++)
因此: ( m + + ) + n = n + ( m + + ) (m++)+n=n+(m++) (m++)+n=n+(m++), P ( m + + ) P(m++) P(m++)为真,加法交换律得证。
总结
本文给出了自然数的递归定义命题,借此递归地定义了加法。加法定义的本质体现为1)为一个数加上零,2)以及加法是重复递归的增长运算。由此定义的加法,就足以推出我们所熟知的诸多运算律,比如本文证明的加法交换律。可见加法是一种对称的运算,这种对称性是它具有的性质,而不需要在定义中给出。