作者按:笔者在学时学习了自然数,中学知道了有理数实数,大学基本上了解了复数。但似乎总感觉差点意思:这些东西是怎么得出来的?自然数是如何构造的?有理数是怎么从自然数定义出来的?以此类推。虽然笔者并非数学专业,所学习的东西和这些关系也不大,但却也对这些问题颇感兴趣。另一方面,上学期学习了代数基础这么一门课,对这个问题也有了些自己的想法,也稍微有了些能力探讨一下这个问题。这系列文章大概也能作为对问题集中第三个问题的部分回答。那么,就斗胆准备写这么一系列的文章,从无开始,经过自然数、有理数、实数,最终到“已经完全”了的复数。

那么,首先,让我们来看看自然数。

一. 皮亚诺公理(Peano Axioms, PA)

关于如何构造自然数,最常见的也是最广为人知的方式就是通过皮亚诺公理(PA)。在通常的版本(非形式化的版本)里,PA包含下列五条公理:

(1) 0是自然数;

(2) 每个自然数a有且仅有一个作为后继的自然数,记作a'(不引起歧义的情况下通常简称后继);

(3) 0不是任何自然数的后继;

(4) 不同自然数的后继不同;

(5) (归纳公理,数学归纳法)若S是自然数集\mathbb{N}的子集,且满足 a. 0\in S; b. a\in S \Rightarrow a'\in S,就有S=\mathbb{N}

这五条公理的作用十分清晰:PA1(第一条皮亚诺公理,后面类似)保证了自然数的存在性:至少0是自然数吧;PA2给出了一个有着与直观上的自然数非常类似的结构,也和后面的公理一起使得我们可以在自然数上定义一个与直观相同的序结构,即a<a';PA3则防止出现一个后继的循环结构,如考虑集\{0, 1\},二者互为后继;PA4则防止了某数是自己的后继这样的情况;虽然看上去不那么明显,但PA5实际上隐含了这样的真命题,即只有由PA1和PA2给出的才是自然数。

关于上一段的最后一个命题,这里做一点小小的解释和延申。由PA1和PA2,我们可以产生出一个自然数的子集S,它由0及其后继及其后继的后继……组成。那么由PA5,我们显然看到S=\mathbb{N}。在以上证明过程中,我们看到,我们实际上是先验的给出了一个集合\mathbb{N}(或者说先有了自然数的观念),并称其为自然数集。然后再通过PA3-5排除了其他符合PA1-2但不符合我们心中自然数的观念的情况。PA实际上是给出了一个具象的、我们日常认知的、可以用以计数的自然数的定义,而非给出了一个抽象的自然数的定义。简单地说,上述PA并非一个抽象系统(抽象自然数)的公理而是一个客体系统(具体自然数,0,1,2,……)的公理。

如果没有例子,上面一段阐述的问题可能不太好理解。但没有进一步的介绍之前,例子也不是很好介绍。因此,如果读者仍然没法理解上一段说了什么的话,不妨先接着阅读以下两节,然后看一看第四节的举例。

二. 从集合论的角度的构造

即使抛开上述讨论不谈,PA也给人一种奇怪的感觉,仿佛是先有了一大堆元素,从里面挑选出一些元素组成一个满足PA的集合,然后称这个集合为自然数集。如果读者有此感受,不妨看一看这一个构造方法。它虽然稍微抽象了一些,但本质上和PA没有什么不同,并且避开了上述问题。

首先,考虑一切集合,在这些集合中最自然的和最特殊的集合显然是空集\varnothing。我们就从空集开始定义自然数。当然,也可以选择其他集合,但这不那么自然,而且也可能会导致后面出现冲突。定义后继运算如下:若A是一个集合,那么它的后继是\{\{A\},A\}(这里如果定义后继是\{A\}似乎也可以,但并不那么方便,毕竟数有多少个A要比数括号方便)。于是,我们得出如下两条归纳的定义:

(1) \varnothing是自然数;

(2) 若A是自然数,那么A'是自然数。

从这里开始,自然数已经不是通常意义上的0,1,2……了,而是一种更为抽象的、具有具体自然数特征的客体。如果不理解的话,请读者将自然数看成一个符号即可。我们可以验证,通过上述方法定义的自然数与PA给出的自然数是同构的。例如,如果A\neq B,那么他们的后继A'B'显然是不一样的。在PA的五条公理中,似乎只有归纳公理不那么好对应。我们只需要注意到,在这种构造方式下,归纳公理(现在更应该称之为数学归纳法而不适宜用公理称呼)实际上是上述归纳定义的直接结果。数学归纳法应当叙述为:

若有关自然数A的命题P(A)满足:

(1) P(\varnothing)成立;

(2) 若P(A)成立,则P(A')成立;

那么P对所有自然数成立。这是因为,所有的自然数都是通过归纳定义得出的,因此对于任意自然数A,我们可以从\varnothing开始,一步一步利用(2)抵达A

为了直观起见,读者可以将\varnothing认作0,\{\{\varnothing\},\varnothing}认作1,等等。

读者可能会有疑惑,为什么PA有5条才能完全给定自然数,而这里似乎只需要两条归纳定义就足够了呢?这是因为这里的后继运算定义的非常好。换句话说,在PA中,后继运算的的不明确性导致了PA3和PA4两条公理被运用于对后继运算的限制;而这里则通过给出了具体的后继运算,而将PA3和PA4包括于后继运算的定义中。给出自然数的归纳定义的方式则隐含了”只有通过如下归纳定义得出的才是自然数“这一命题,从而和归纳定义一起得出了数学归纳法,即PA5。

三. (X, x, f)型系统

看了上面两种定义,我们可以给出一个更为抽象的、更让人满意的”自然数“了。一般的说,自然数可以抽象成一个(X, x, f)型系统。 一个(X, x, f)型系统是说:

(1) X是一个非空集合,x\in Xf是从XX的单射。

如果限制f是单射非满射,那么X就只能是无穷集合(无穷集合的一个定义是,该集合与自己的真子集等价)。如果进一步要求x\notin f(X),那么我们可以证明,此时这个(X,x,f)系统满足PA1-PA4(在进行必要的修改后),即:

(1) x\in X,这是显然的。

(2) X中的每个元素a有且仅有一个f(a)与之对应。这也是显然的。为了与PA对照,我们可以将这个f(a)称为a后继元素,而f可以称为后继运算。

(3) x不是任何元素的后继。这是因为,x不在f(X)中,那么x自然不能是任何元素的后继。

(4) X中不同元素的后继不同。这是因为f是单射。

我们看到,现在X已经非常类似于自然数集\mathbb{N}了。为了补上最后的数学归纳法,我们可以要求该系统具有如下的性质:

(2) 若A\subset Xx\in Aa\in A\Rightarrow f(a)\in A,就有A=X

可以看到,这与PA5是一致的。总结起来,我们可以将直观上的自然数形式化为满足以下条件的(X, x, f)系统:

(1) f是单射,x\notin f(X)

(2)(数学归纳法) 若A\subset Xx\in Aa\in A\Rightarrow f(a)\in A,就有A=X

反过来,我们也可以将任何满足以上条件的 (X, x, f)系统称之为(抽象的)自然数。在数学上,这样的(X, x, f)系统则被称为戴德金-皮亚诺结构。

四. 一些例子

我们首先看一个具体自然数的例子,然后看几个(X, x, f)系统的例子,来具体看看戴德金-皮亚诺结构中两条要求的作用。

1. 具体自然数

我们暂且大胆一点,略去相关细节,看一下十进制下的自然数,或者说我们用以计数的自然数。很显然,0,1,2,3,……满足PA1-PA5。但是,如果我们考虑一个与\mathbb{N}无交的集合A,它和\mathbb{N}之间存在一个一一映射。那么,我们(在PA的体系下)显然不会将A中的元素也称为自然数,即使他们到目前为止同构,也能在未来通过这个一一映射构造两者之间的同构映射。例如,如果A=\{0.5, 1.5, 2.5, ...\},他与自然数很明显是同构的,但0\notin A,因此A中的元素不是自然数。这也是之前说(非形式化的)PA给出的是一个客体系统而非抽象系统的原因。

2. 如果f(X)=X

我们可以构造这样一个例子,X=\{a, b, c\},满足f(a)=b, f(b)=c, f(c)=a。此时,我们看到,数学归纳法仍然满足,而f不仅是单射还是双射。但这显然不满足我们对自然数的认识。但这个例子也有它本身的意义。再一次,我们先略去一些会在后面阐述的细节,考虑a=0, b=1, c=2,此时的X被称为模3剩余系。换句话说,X可以被看做自然数除3后的余数构成的集合,可以在上面通过自然数的加法和乘法定义加法和乘法。

3. 如果f不是单射

一个很简单的例子,X=\{a, b, c\},而f(a)=b, f(b)=c, f(c)=c。哦豁,完蛋。

4. 如果不满足数学归纳法

不满足数学归纳法带来的问题比较隐蔽,这里考虑两个例子。

首先,考虑X={a, b, c, 0, 1, 2,...},即X=\mathbb{N}+\{a, b, c\}。我们定义f作用在\mathbb{N}上时和通常的后继运算一样,同时f(a)=b, f(b)=c, f(c)=a。那么,f依然是单射非满射,0依然不是任何数的后继,但是在X中则出现了一个与“线性”的自然数不相交的“圈”的结构。

其次,一个类似的例子就作为练习,考虑(X, x, f)型系统,f是单射,如果f(X)=X\setminus{x, b},其中b\in X时会发生什么?

5. 其他

最后来一个作者在《元数学导论》上看到的很喜欢的例子。

有的牛奶盒会以某明星拿着该牛奶盒的图案作为装饰。虽然在物理上不可能,但如果我们假设这个图案是完全精确的,那么这样的牛奶盒也可以看作一个戴德金-皮亚诺结构的具体例子。当然,在计算机上也存在这样的例子:人见人嫌的无穷递归。

五. 二元运算

作为数学归纳法的应用,我们可以在自然数集(更抽象的说,戴德金-皮亚诺结构上)上定义加法和乘法。首先来看看加法。

1. 加法

在自然数集上,我们如下定义加法:\forall a, b\in \mathbb{N}

(1) 0+a=a

(2) a'+b=(a+b)'

用映射的语言说,加法就是满足(1)f(a,0)=a(2)f(a', b)=(a+b)'的一个二元映射。从加法的定义可以看到,加法的结果仍然是自然数,因此按如上的定义,加法对自然数集封闭。

作为例子,我们首先证明1+1=2a+1=a',然后证明加法结合律和加法交换律。

(1) 1+1=2

1+1=0'+1=(0+1)'=1'=2.

(2) 1+a=a'

1+a=0'+a=(0+a)'=a.

(3)加法结合律

\forall b, c\in \mathbb{N},当a=0时,有(0+b)+c=b+c=0+(b+c)

若当a=n时结合律成立,则(n'+b)+c=(n+b)'+c=(n+b+c)'=(n+(b+c))'=n'+(b+c)

综上,由数学归纳法加法结合律成立。因此a+b+c=(a+b)+c=a+(b+c)

(4) 加法交换律

首先证明a+0=a。当a=0时,0+0=0=0+0,从而成立。

如果a=n时满足n+0=n,那么a'+0=(n+0)'=(0+n)'=n'=a',从而成立。

由数学归纳法, a+0=a

然后证明a+1=a'。当a=0时,显然有0+1=1=0';若a=n时有n+1=n',那么n'+1=(n+1)+1

由数学归纳法,a+1=a'

\forall b\in \mathbb{N},当a=0时,加法交换律显然成立。

若当a=n时加法交换律成立,那么就有a'+b=(a+b)'=(b+a)'=b'+a=b+1+a=b+(1+a)=b+a'

综上,由数学归纳法,加法交换律成立。

回过头看上面的证明,我们可以发现,证明过程中出现的01虽然看上去是具体自然数,但如果我们将0替换为x,将1替换为x的后继f(x),那么我们立刻就能看到这实际上是戴德金-皮亚诺结构上的加法。换句话说,01是什么不重要,“0不是任何数的后继,10的后继”这样的结构才重要。

2. 乘法

乘法按如下规则定义:

(1) m\cdot 0=0;

(2) m\cdot n'=m\cdot n+m.

利用定义、加法的封闭性和数学归纳法,我们同样可以证明乘法对自然数集封闭,这里就不详细写了,读者可以自己证明。因此乘法也是自然数集上的一个二元运算。由此出发,我们可以通过数学归纳法证明分配律,结合律和交换律。但是与加法的情形类似,我们需要首先证明0\cdot m=01\cdot n=n\cdot 1=nn'\cdot m=n\cdot m+m。首先是0\cdot m=0

m=0时,有0\cdot 0=0;如对m=n0\cdot n=0,那么0\cdot n'=0\cdot n+0=0。从而由数学归纳法,有0\cdot m=0

然后是 1\cdot n=n\cdot 1=n

n\cdot 1=n\cdot 0'=n\cdot 0+n=n;对前者则要复杂一些:

n=0时,1\cdot 0=0;如n=m时等式成立,那么当n=m'时,1\cdot m'=1\cdot n+1=n+1=n'。由数学归纳法1\cdot n=n

最后是 n'\cdot m=n\cdot m+m

\forall n\in\mathbb{N},m=0时,有n'\cdot 0=0=n\cdot 0+0

若取m=l时等式成立,则当m=l'时,n'\cdot m'=n'\cdot m+n'=n\cdot m+m+n+1=n\cdot m+n+m'=n\cdot m'+m'。综上,由数学归纳法有 n'\cdot m=n\cdot m+m

(1)乘法分配律

\forall b, c\in \mathbb{N},当a=0时,有0\cdot(b+c)=0=0\cdot b+0\cdot c(b+c)\cdot0=0=b\cdot 0+c\cdot 0

若当a=n时分配律成立,那么a=n'时:

a\cdot(b+c)=n'\cdot(b+c)=n\cdot(b+c)+(b+c)=n\cdot b+n\cdot c+b+c=n'\cdot b+n'\cdot c

(b+c)\cdot a=(b+c)\cdot n'=(b+c)\cdot n+b+c=b\cdot n+c\cdot n+b+c=b\cdot n'+c\cdot n'

综上,乘法分配律成立。

(2)乘法结合律

\forall b, c\in \mathbb{N},当a=0时,有(0\cdot b)\cdot c=0\cdot c=0=0\cdot(b\cdot c)

若当a=n时结合律成立,那么就有a=n'时,(a\cdot b)\cdot c=(n\cdot b+b)\cdot c=n\cdot b\cdot c+b\cdot c=n\cdot(b\cdot c)+(b\cdot c)=n'\cdot(b\cdot c)

综上,乘法结合律成立。

(3)乘法交换律

完全类似的,我们还是使用数学归纳法。\forall b\in \mathbb{N},当a=0时,a\cdot b=0\cdot b=0=b\cdot 0

若当a=n时交换律成立,那么当a=n'时,有:n'\cdot b=n\cdot b+b=b\cdot n+b=b\cdot n'

综上,乘法交换律成立。

现在,我们已经定义好了自然数上的两大运算:加法和乘法,也看到它们的性质和我们所熟知的完全一致。这个一致性来自于定义的巧妙。从加法的定义上可能不太明显,但从乘法的定义上我们很容易就能看到分配律的影子。为了进一步贴近日常使用的习惯,在不引起误解的时候,\cdot 将省略。

六. 自然数集上的代数结构

既然定义好了加法和乘法,那么很自然的我们就能想到自然数集上的代数结构如何。回顾一下,目前在自然数集上我们存在以下三种运算:(1)后继;(2)加法;(3)乘法。由于我们证明,后继运算可以以加法的形式表达,因此我们只需要考虑加法和乘法带来的代数结构。

为了行文方便起见,在这里插入一点关于代数的知识。按复杂程度(特殊性、包含关系等)从低到高,一个集合上的代数结构分为半群(semi-group)、群(group)、环(ring)、域(field)、模(module)等。我们马上要用到半群的概念,因此在这里先列出半群的定义,至于其他的等用到在说:一个集合G对于G上的一个二元运算 \cdot 是半群,如果该二元运算在G上满足结合律。进一步的,如果在G中存在元素e,使得\forall g\in G,有eg=ge=g,那么称e为幺元(单位元),称(G, \cdot )为含幺半群。

我们看到,由于在上一节中我们已经知道\mathbb{N}对加法和乘法都封闭,同时加法和乘法分别满足结合律,因此\mathbb{N}对加法和乘法分别构成加法半群(\mathbb{N}, +)和乘法半群(\mathbb{N},\cdot )。此外,由于0+a=a+0=a1a=a1=a,因此这两个半群还是含幺半群。这就很让人浮想联翩了:如果能引入加法逆元和乘法逆元,就能将它升格为加法群和乘法群;又由于加法和乘法同时存在于自然数集上,乘法对加法还有分配律,因此这样的操作还有机会将其变成域,这样就非常好了。但无论如何,饭要一口口吃,下一篇文章,我们就先引入加法逆元,得到一个漂亮的整数加法群。