你在这里

实数、超实数和博弈游戏:数学的结构之美

(一)一个博弈游戏
让我们来玩一个游戏。下面有五行石子,白色的石子都是我的,黑色的石子都是你的。我们轮流拿走一个自己的石子,并且规定如果一个石子被拿走了,它后面的所有石子都要被扔掉。谁先没有拿的了,谁就输了。

○●●○●●○●●○
●○○●○●●○●
○○○○
●●●○●●●

比如说,如果你先走的话,你可以把第四行的第三个石子拿走,按规定第四行将会只剩下前面两个石子:

○●●○●●○●●○
●○○●○●●○●
○○○○
●●

现在轮到我走了。我可以拿走第二行倒数第二个石子,于是整个棋局变成了这样:

○●●○●●○●●○
●○○●○●●
○○○○
●●

现在,假如说你拿走了第二行中的第一个石子(于是第二行就没了),那么我就赢定了。我可以拿走第一行中的第一个石子,从而让整个棋局只剩下后面三行:

○○○○
●●

这三行中有四个白石子,有三个黑石子,并且每一行都是同种石子。于是整个局面完全变成了一个拼石子个数的游戏,我只需要一个一个地拿走白色石子,你必然将会率先无路可走。受此启发,我们自然地想到了一种刻画棋局的方式:把每个白色石子记作 +1 ,把每个黑色石子记作 -1 。于是 ○○○○ + ●● + ● = 4 – 2 – 1 = 1 ,结果是一个正数,这就表明该局面下我将必胜,即使此时轮到我先走。
你会发现上面的说法很有道理。毕竟白色的石子越多,对我越有利,给我带来的效用为正;而黑色的石子会减小我获胜的希望,当然应该给它赋上一个负的值。四白三黑算出来的结果为正 1 ,直观意义就是我能以一步的优势获胜。如果棋局是这样:

○○
●●●●

那么 ○○ + ●●●● = 2 – 4 = -2 ,是一个负数,这就意味着不管谁先走,你都能必胜,因为你能比我多走两步。我们不妨把一个棋局对应的数叫做棋局的“特征值”。特征值为正,就表明不管谁先走我都能必胜;特征值为负,就表明不管谁先走你都能必胜;而特征值的绝对值,则直观地量化了胜负的悬殊。现在,考虑下面这个棋局:

○○
●●

那么 ○○ + ●● = 2 – 2 = 0 ,这表明此时的情形介于“我必胜”和“你必胜”之间。事实上也是这样——如果我先走你后走,你就赢定了;如果你先走我后走,我就赢定了。这是因为,这个棋局的特征值为 0 ,双方能够走的步数相同,当然谁后走谁就赢定了。
真正有趣的事情出现了。考虑下面的棋局:

○●

它的特征值应该是多少呢?容易看出,它的特征值是一个正数,因为不管谁先走,显然我都能赢。同时,它的特征值也应该比 1 小,因为只有一个 ○ 要比 ○● 赢得更爽一些。事实上,单看 ○● 黑方确实无论如何都会输,但在某些场合下, ○ 后面的这个 ● 能让黑方喘上一口气。比如下面这个棋局:

○●

如果我先走,显然你必胜无疑。如果你先走呢?先走的人获胜的难度更大,你可要好好想想策略。你可以拿走那个单独成行的 ● ,但当我拿走 ○ 之后,你就得眼睁睁地看着自己剩下的那个 ● 被一并收走。此时,你或许会意识到,你本来还能多走一步的,可惜这一步被浪费掉了。因此,你更好的做法就是,一上来先拿走 ○ 后面的 ● 。运用这种策略,显然你也会必胜无疑。可见,不管是我先走还是你先走,整个棋局对于你来说都是必胜的,从而有 ○● + ● = ○● – 1 < 0 ,这再次说明了 ○● 是一个小于 1 的数。那么, ○● 是否等于 1/2 呢?
答案是肯定的,考虑下面这个棋局:

○●
○●

如果我先走,本质上不同的走法只有一种,并且局面将会立即变成刚才那种你必胜的情形,因而你将必胜。如果是你先走呢?拿走那个单独成行的 ● 会让你提前锁定败局,更好的选择则是像刚才一样,先拿走某个 ○ 后面的 ● ,为自己多赢得一步。现在,石子只剩下了 ○● 、 ○ 、 ● 这么三行。那么,我应该拿走哪一个 ○ 呢?拿走那个单独成行的 ○ 会让局面再次变回刚才那种你必胜的情形,更好的选择则是拿走后面有 ● 的 ○ ,这样我便能让你损失一步。掌握了这个技巧后,我就能做到必胜了。综上所述,整个棋局是一个谁后走谁就赢定了的局面。于是 ○● + ○● + ● = 0,也就是 ○● + ○● – 1 = 0 ,可以解得 ○● 等于 1/2 。也就是说,在 ○● 中,我将以半步的优势获胜。对应地, ●○ 就等于 -1/2 ,此时你将以半步的优势获胜。
注意,目前并没有任何理论告诉我们,这么加减是合理的。不过我们却发现,这么加减出来的结果真的是对的。比如说, ○● + ○● + ○● + ● = 1/2 + 1/2 + 1/2 – 1 = 1/2,而棋局

○●
○●
○●

对于我来说真的就是必胜的局面!
这背后一定有一个更深层次的原因:棋局之间的加减和数与数之间的加减一定存在着某些共通的地方。也就是说,为了解释“为什么棋局的加法和数的加法如此之像”,我们需要证明,两者具有完全相同的代数结构。我们需要建立一个从棋局到实数的映射法则,然后说明全体棋局(或者全体棋局的一部分)与全体实数(或者全体实数的一部分)是同构的。
正如 Poincaré 所说,诗歌的艺术在于给相同的东西取不同的名字,数学的艺术在于给不同的东西取相同的名字。两个看似毫不相关的东西竟然是同构的,这在数学中是最令人激动的事情之一。
 
(二)熟悉而又陌生的算术
为了说明棋局就是算术,我们首先要定义,什么是算术。我们需要站在系统之外,对算术的本质做一个描述。算术,就是对一些数做加减乘除的运算。这似乎对我们完全没有帮助——什么是数,什么是加减乘除?其实,数,就是一些具有大小关系的元素,这些元素可以按照它们的大小关系串成一根链条。这意味着,首先,任意两个数都是可以比较大小的,并且对于两个不同的数 x 和 y 来说, x 要么大于 y ,要么小于 y 。然后,大小关系必须具有传递性,如果 x 小于 y , y 又小于 z ,那么 x 一定小于 z 。形式化地说,我们要求元素之间存在某种暂且记作 ≤ 的关系,使得它们满足:

  1. 完全性:对于任意的 x 和 y ,x ≤ y 和 y ≤ x 当中至少有一个成立。
  2. 反对称性:对于任意的 x 和 y ,如果 x ≤ y 和 y ≤ x 同时成立,那么 x 和 y 一定是同一个元素。(今后我们用符号 x = y 表示 x 和 y 是同一个元素,注意这个新符号和 ≤ 的区别:前者是一个真实的符号,它用来表达“是同一个元素”这个概念;后者则是我们假想的一种抽象符号,它不见得有什么具体的意义。)
  3. 传递性:对于任意的 x 、 y 和 z ,如果 x ≤ y 和 y ≤ z 同时成立,那么一定有 x ≤ z。

这样的话,所有的元素都被 ≤ 穿成了一条绳子。我们就说,这些元素构成了一个“全序关系”。
我们还需要元素之间的“加法”和“乘法”满足一系列的性质:

  1. 对加法封闭:对于任意的 x 和 y , x + y 也仍然是某一个元素
  2. 对乘法封闭:对于任意的 x 和 y , x · y 也仍然是某一个元素
  3. 加法交换律:对于任意的 x 和 y , x + y = y + x
  4. 乘法交换律:对于任意的 x 和 y , x · y = y · x
  5. 加法结合律:对于任意的 x 、 y 和 z , (x + y) + z = x + (y + z)
  6. 乘法结合律:对于任意的 x 、 y 和 z , (x · y) · z = x · (y · z)
  7. 乘法对加法的分配律:对于任意的 x 、 y 和 z , x · (y + z) = x · y + x · z
  8. 存在加法单位:存在某一个特殊的元素,通常记作 0 ,使得对于任意的 x ,都有 x + 0 = x
  9. 存在乘法单位:存在某一个特殊的元素,通常记作 1 ,使得对于任意的 x ,都有 x · 1 = x
  10. 存在加法逆元:对于任意的 x ,总能找到某一个特殊的元素,通常记作 -x ,使得 x + (-x) = 0
  11. 存在乘法逆元:对于任意不为 0 的 x ,总能找到某一个特殊的元素,通常记作 x-1 ,使得 x · x-1 = 1
  12. 对于任意的 x 、 y 和 z ,如果 x ≤ y ,那么一定有 x + z ≤ y + z
  13. 对于任意的 x 、 y ,如果 0 ≤ x 和 0 ≤ y 同时成立,那么一定有 0 ≤ x · y

有几点需要注意。我们虽然只说了加法单位满足 x + 0 等于 x ,但其实由于加法交换律, 0 + x 也等于 x 。乘法单位也是如此。我们说“存在加法单位”,而没说“存在唯一的加法单位”,这是因为加法单位最多只能有一个,如果存在,必定唯一。假如 a 和 b 是两个加法单位的话,你会发现因为 a 是加法单位,所以 a + b 等于 b ,又因为 b 是加法单位,所以 a + b 等于 a ,因而 a = b 。我们说“存在加法逆元”,而没说“存在唯一的加法逆元”,也是因为同一个元素的加法逆元最多只能有一个,如果存在,必定唯一。假设 a 有两个加法逆元 b 和 c ,那么就有 b = b + 0 = b + (a + c) = (b + a) + c = 0 + c = c ,因此 b 其实就是 c 。乘法单位和乘法逆元也是如此。
这基本上刻画出了作为一个算术系统所有需要满足的性质。第 4 条和第 5 条告诉了我们,加法和乘法并没有那么玄妙,它们不过是从元素对到元素的映射。第 6 条到第 10 条列举了加法和乘法的基本性质。第 11 条和第 12 条定义了 0 和 1 这两个特殊的数。第 13 条中出现了“加法逆元”一词,不过“相反数”一词或许会更亲切一些。第 14 条中出现了“乘法逆元”一词,不过“倒数”一词或许也会更亲切一些。第 13 条和第 14 条实际上定义了减法和除法。减去 x ,就相当于加上 -x ;除以 x ,就相当于乘以 x-1 。这两条性质保证了,我们可以自由地做减法,我们可以自由地做除法,得到的数也仍然是一个合法的元素,不会出现不够减、不允许减、不够除、不允许除的情况(除以 0 除外)。因为,每一个元素都有相反数,每一个非 0 元素都有倒数。
等等,这些性质就能刻画算术系统了?似乎漏掉了不少其他关键的性质吧。比如, 0 乘以任何数都等于 0 ,这条性质哪儿去了?其实,剩下的没有写出的性质,包括 (-1) · x = -x 、 0 ≤ 1 、 0 ≤ x · x 等等,都是已有性质的推论。我们可以从已有性质出发,完全不关心它们的实际意义,抽象地证明出算术系统应该具有的其他性质。例如,为了证明 0 · x = 0 ,只需要注意到:

0 · x = (0 + 0) · x = 0 · x + 0 · x

两边同时加上 0 · x 的加法逆元,等式仍然成立(这是因为,如果 a = b ,那么加法运算将会把 a + c 和 b + c 映射到同一个数):

0 · x + (- 0 · x) = (0 · x + 0 · x) + (- 0 · x)
0 = 0 · x + (0 · x + (- 0 · x))
0 = 0 · x + 0
0 = 0 · x

同时满足第 4 条到第 14 条的话,这些元素就构成了一个“域”。如果还满足第 15 条和第 16 条(当然还有第 1 条到第 3 条),这就是一个“有序域”。最小的有序域是有理数域。如果把上面所说的元素想成是全体有理数,把小于等于、加法和乘法解读为我们平常所说的小于等于、加法和乘法,那么整个系统满足上面所有 16 条性质。实数域则是一个更“大”的有序域,而有理数域只是它的其中一个“子有序域”。当然,还有一些有序域,它里面的元素根本不是常规意义上的数,它们之间的大小关系、加法乘法也根本不是常规意义上的大小关系和加法乘法。不过,人们已经证明了,任何一个有序域里一定都包含有一个子有序域,它和有理数域同构——它里面的一切都和有理数一样,只是各个元素的名字不一样罢了。也就是说,在任何一个有序域中,我们都可以从加法单位和乘法单位出发,把全部的或者部分的、本来有可能并不是数的元素看成是一个个的数,得到一个与有理数等价的系统:加法单位就是 0 ,乘法单位就是 1 ,等于 1 + 1 的那个元素就是 2 , 等于 2 + 1 的那个元素就是 3 , 2 的加法逆元就是 -2 , 2 的乘法逆元就是 1/2 ,等等,而且这些元素确实是不同的元素,它们之间的小于等于、加法乘法的运算结果也确实符合有理数之间的运算结果。正因为这样,我们才说,这 16 个有序域条件比较完整地描述了算术系统的要素,足以刻画算术系统了。
这里,我们突然有了一个非常激动人心的问题:一个有序域有没有可能比实数域更大(实数域只和它的某个子有序域同构)?有理数域已经封闭了,但加进去一系列新的元素之后,我们有可能得到一个封闭的、更大的实数域;那么,能否在实数域里面也加进去一些新的元素,让实数域进一步扩张成某个更大的有序域?不不不,答案没有“复数域”那么简单——复数域不是有序域,因为它不是有序的。也就是说,我们无法为所有复数安排 ≤ 关系,使得它能满足有序域的全部条件。在这个比实数域更大的有序域中,我们不但能继续加减乘除,还要能继续做大小比较,每一个新的数和每一个原有的实数之间都有一个确定的大小关系。直观上,这似乎是不大可能的,因为实数已经把那根“线”填满了。
 
(三)外星人的数学
对算术结构的形式化,让我想起了一些更折磨人的哲学问题:我们的数学体系为什么是这样的?一个文明的数学体系一定是这个样子的吗?比方说,如果人类没有视觉这种感官,我们还会创立几何这门学科吗?同时,人类是否会因为缺乏某种独特的感官,而没能建立起一个更加神奇的数学分支?
同样地,我们总会认为,自然数是最自然的概念,是每一种文明都不可避免会遇到的概念。是这样吗?会不会有某一种外星文明,他们也有一套自己的算术系统,虽然也有加减,虽然也有乘除,虽然跟我们正在使用的算术系统是同构的,但其直观意义和表示方法都跟我们完全不同。或许,在我们这里很难表达的数,在他们那里看来几乎是平凡的;或许,在我们这里很直观很自然的数,在他们的体系里却需要异常复杂的记号来表示。
作为一个科幻迷,我甚至马上想到了,这应该是一个绝佳的科幻素材:数学家发现了地外生命的某种全新的数学系统,并且一步一步尝试去解读它。为此,数学家们必须抛弃任何已有的假设,忘掉什么是自然数,什么是零,什么是加减,什么是乘除,从一片空白开始,尝试理解外星算术系统,逐渐搭建起外星数学的大厦。《你一生的故事》的数学版,多么激动人心的一件事情啊!
这样的小说已经有了。你猜谁写的? Donald Knuth !第一次听说这个时,第一反应除了膜拜还是膜拜: Knuth 简直是太牛了,他竟然写过一本小说!这本 100 多页的小说叫做 Surreal Numbers (中译《研究之美》,电子工业出版社 2012 年 1 月出版,顺便吐槽中译名),中文意思大致就是“超现实的数”。我打算直接把它叫做“超实数”——正如“实数”就是“现实的数”一样,“超实数”也就是“超现实的数”了(其实,不得不说的是,“超实数”这个译名有一个很大的弊端:它可能会与另一个叫做 hyperreal numbers 的概念发生混淆)。小说的副标题则是 How Two Ex-Students Turned on to Pure Mathematics and Found Total Happiness 。小说讲述了 Alice 和 Bill ,一对年轻男女,逃到一个漂亮的孤岛上“寻找自我”。他们在岛上发现了一块古老的石板,石板上用希伯来语写着一些数学公理。然后,我们将跟随 Alice 和 Bill 的思路,逐渐探索这些公理的意义,期间会走不少的弯路,历经一些失败的尝试,到最后终于成功恢复出了一个完整的算术系统。根据 Wikipedia 的描述,一个全新的数学概念竟然首先出自于一本小说,这是极罕见的例子。
在下面的讨论中,时刻记住:我们在学习外星数学。我们不能有任何先入为主的概念。请忘记“数”的概念,忘记“小于等于”的概念。下面所说的“数”是某种全新的物体,它可能与我们熟知的数有某种对应的关系,也可能与我们熟知的数没有任何关系。“小于等于”也是一种全新的概念,这四个字整个儿是一个新词,它不是由“小于”和“等于”合成的。它的意思有可能和我们的小于等于相吻合,也有可能和我们的小于等于不吻合,甚至有可能根本就没有什么合理的“意思”。“大于等于”只是一个与“小于等于”对称的说法。如果 x 小于等于 y ,我们就说 y 大于等于 x 。偶尔我们会用 ≤ 代替“小于等于”,用 ≥ 代替“大于等于”,不过也请假装这些符号对你来说是完全陌生的。
石板上的公理只有两个。

  1. 每个数都是用两个(由已有的数构成的)集合表示的,其中左边集合里不存在这样的数,它大于等于右边集合里的某个数。假如 a 、 b 、 c 、 d 、 e 都是已经构造出来的数,并且从 a 、 b 里任取一个数,从 c 、 d 、 e 里任取一个数,前者都不会大于等于后者,那么把 a 、 b 放入左边的集合,把 c 、 d 、 e 放入右边的集合,我们就能得到一个新的数,比如 f 。我们把它记作 f = {a, b | c, d, e} 。
  2. 一个数小于等于另一个数,当且仅当前者的左集合里不存在大于等于后者的数,并且后者的右集合里不存在小于等于前者的数。比如,如果 x = {a, b | c} , y = {d | e} ,那么 x 小于等于 y ,当且仅当 a 、 b 都不大于等于 y ,并且 e 不小于等于 x 。

可以看出,所有的数,包括它们之间的 ≤ 、 ≥ 关系,都是递归地表达出来的。不过,我们每次都需要用已有的数来定义新的数,那我们从什么地方开始呢?答案是,我们从空集开始。左集合和右集合都为空,记作 { | } ,这是我们能够得到的第一个数。再次提醒,这个数或许能被等价地理解为我们世界中的某个数,或许不能。我们暂时不做这些假设。我们把这个数记作 α 。也就是说, α = { | } 。容易看出, α ≤ α ,因为 α 的左集合里确实没有哪个数大于等于 α ,并且 α 的右集合里确实没有哪个数小于等于 α (事实上 α 的左集合里和右集合里根本就没有数)。既然 α ≤ α ,反过来看,也可以说成是 α ≥ α 了。在接下来的过程中时刻记住, α 既小于等于自己,又大于等于自己。
接下来,我们可以构造两个新的数 { | α} 和 {α | } ,不妨把它们俩分别叫做 β 和 γ 。注意, {α | α} 是不合法的,它违反了公理 1 :左集合里的数不能大于等于右集合里的数。可以验证, β ≤ α ,而 α ≤ γ 。另外, β 也是小于等于 γ 的,不过请注意,这并不是根据“小于等于”的传递性推出的,而是根据“小于等于”的定义直接验证的。我们还不知道“小于等于”满足传递性。事实上,我们还不知道“小于等于”有什么直观意义。

x 小于等于 y 当且仅当 x 的左集合里不存在大于等于 y 的数,并且 y 的右集合里不存在小于等于 x 的数
β = { | α} , α = { | } ⇒ β 小于等于 α ,或者说 α 大于等于 β
α = { | } , γ = {α | } ⇒ α 小于等于 γ , 或者说 γ 大于等于 α
β = { | α} , γ = {α | } ⇒ β 小于等于 γ , 或者说 γ 大于等于 β

接下来,我们完全不理会 ≤ 背后有何直观意义,而是纯粹利用刚才的两个公理来证明,刚才看到的传递现象其实并不是巧合。换句话说,在这个神秘的算术系统中,如果 x ≤ y ,并且 y ≤ z ,那么 x ≤ z 。证明的基本方法是数学归纳法。
我们对三元组 (x, y, z) 施加归纳。假设传递性对于更早产生的三元组都是成立的。根据定义,如果 x ≤ y ,那么对于 x 的左集合中的任意一个元素 xL 来说, y ≤ xL 都不成立。这立即表明, z ≤ xL 是绝对不可能发生的,因为我们已经有了 y ≤ z ,如果还有 z ≤ xL 的话,根据归纳假设,就会有 y ≤ xL ,矛盾。于是我们知道了, x 的左集合里不存在大于等于 z 的元素。用类似的方法可以推出,不可能出现 zR ≤ x 的情况,其中 zR 是 z 的右集合中的任意一个元素。理由和刚才相仿:如果 x ≤ y 和 zR ≤ x 同时成立,由归纳假设就会得到 zR ≤ y ,这与 y ≤ z 相矛盾。于是我们知道了, z 的右集合里不可能出现小于等于 x 的数。综合上述两条便有 x ≤ z 。
由于超实数所具有的递归本质,在研究超实数的性质时,最基本的方法就是数学归纳法。为了证明某个结论对任意一个数 x 都成立,我们通常会假设这个结论对所有可能的 xL 和 xR 都已经成立了;类似地,为了证明某个结论对任意一个二元组 (x, y) 都成立,我们通常会假设这个结论对所有可能的 (xL, y) 、 (xR, y) 、 (x, yL) 、 (x, yR) 都已经成立了。让我们来做几个练习吧。首先,让我们试着用数学归纳法来证明,对于任意一个数 x 都有:

  1. x ≰ xL ,其中 xL 是 x 的左集合中的任意一个元素
  2. x ≱ xR ,其中 xR 是 x 的右集合中的任意一个元素
  3. x ≤ x

证明过程并不复杂。假设这几条性质对于更早产生的数都成立。为了证明对于任意 xL 都有 x ≰ xL ,我们只需要说明,在 x 的左集合中存在一个大于等于这个 xL 的数即可。这样的数是显然存在的,因为由归纳假设, xL ≤ xL 或者说 xL ≥ xL 始终成立。证明对于任意 xR 都有 x ≱ xR 的方法也是类似的。好了,既然 xL 都不大于等于 x ,并且 xR 都不小于等于 x ,就说明 x ≤ x 了。我们不妨把这三个结论分别叫做补充性质 1 、补充性质 2 和补充性质 3 。我们今后会反复用到这三个补充性质。
有人或许会说:x ≰ xL,岂不意味着 x ≥ xL 吗?为什么要说得那么麻烦呢?别急,别急,我们目前还不知道 x ≰ y 能否推出 x ≥ y 呢。不过,不管怎么说, x ≥ xL 还真是成立的。我们可以证明这一点,基本思路仍然是数学归纳法。为了证明对于任意 xL 都有 x ≥ xL ,我们只需要说明,这个 xL 的左集合里不存在大于等于 x 的数,并且 x 的右集合里不存在小于等于这个 xL 的数。根据公理 1 的规定,后者显然是成立的。前者的正确性则不太容易看出来:根据归纳假设,这个 xL 大于等于它的左集合里的所有元素,如果这个 xL 的左集合里存在大于等于 x 的数,由传递性便可推出 xL ≥ x ,与刚才的补充性质 1 矛盾。类似地,补充性质 2 也有一个推论,即对于任意 xR 都有 x ≤ xR 。证明方法几乎完全相同: x ≤ xR 的意思就是 x 的左集合里不存在大于等于 xR 的数,并且 xR 的右集合里不存在小于等于 x 的数,两者可以分别由公理 1 和归纳假设推出。
补充性质 1 和补充性质 2 拥有这样的推论,这使我们开始猜测:会不会在任何情况下,由 x ≰ y 都能推出 x ≥ y 呢?的确是这样,而且证明过程很简单。 x ≰ y 意味着某个 xL 大于等于 y ,或者某个 yR 小于等于 x 。如果有某个 xL 大于等于 y ,但刚才我们证明了 x 大于等于一切 xL ,两者结合便有了 x ≥ y ;如果有某个 yR 小于等于 x ,但刚才我们证明了 y 小于等于一切 yR ,两者结合也能推出 x ≥ y 。所以,不管是哪种情况, x ≥ y 都是成立的。
或许有人会无比兴奋地说:这个结论太有用了,之前很多别扭的说法这下都能大大简化了。例如,公理 1 原本说的是,一个数是合法的,当且仅当它的左集合里的每一个数都不大于等于右集合里的每一个数。现在,我们是不是就能把它重新叙述为,一个数是合法的,当且仅当它的左集合里的每一个数都小于等于右集合里的每一个数?且慢!我们目前只知道 x ≰ y 可以推出 x ≥ y ,但并不知道 x ≥ y 能否反过来推出 x ≰ y ,因而也就不知道 x ≰ y 和 x ≥ y 是否是完全等价的说法。对已有的数进行试验,你会觉得 x ≥ y 似乎真的能够推出 x ≰ y 。之前我们验证过 β ≤ α 、 α ≤ γ 和 β ≤ γ ,你会心安地发现,它们反过来真的都不成立。

x 小于等于 y 当且仅当 x 的左集合里不存在大于等于 y 的数,并且 y 的右集合里不存在小于等于 x 的数
α = { | } , β = { | α} ⇒ α 不小于等于 β ,或者说 β 不大于等于 α
γ = {α | } , α = { | } ⇒ γ 不小于等于 α ,或者说 α 不大于等于 γ
γ = {α | } , β = { | α} ⇒ γ 不小于等于 β ,或者说 β 不大于等于 γ

但是,如果再多生成一些数,问题就出来了。考虑这个数 {β | γ} ,由于 β 确实不大于等于 γ ,因此这个数是合法的。把这个数叫做 δ 。现在,考虑 δ 和 α 的大小关系:

x 小于等于 y 当且仅当 x 的左集合里不存在大于等于 y 的数,并且 y 的右集合里不存在小于等于 x 的数
α = { | } , δ = {β | γ} ⇒ α 小于等于 δ ,或者说 δ 大于等于 α
δ = {β | γ} , α = { | } ⇒ δ 小于等于 α ,或者说 α 大于等于 δ

结果, α ≤ δ 和 α ≥ δ 同时成立。这说明,虽然 x ≰ y 可以推出 x ≥ y ,但是 x ≥ y 不能推出 x ≰ y ,两者并不是等价的。换言之, x ≤ y 和 y ≤ x 不可能都不成立,但却有可能同时成立。
现在,让我们来回顾一下“小于等于”这个关系所满足的性质。它满足传递性,即 x ≤ y 和 y ≤ z 可以推出 x ≤ z 。它满足完全性,即 x ≤ y 和 y ≤ x 至少有一个成立。但是,它不满足反对称性。反对称性的意思是,如果 x ≤ y 并且 y ≤ x ,那么 x 和 y 必然是同一个元素。然而,我们刚才已经看到了, α = { | } 和 δ = {β | γ} 互相之间都具有 ≤ 关系,但它们并不是同一个元素。我们刚才反复强调,这里的“小于等于”是一个全新的概念,不要把它想象成我们熟知的那个小于等于;现在看来,这是一个无比正确的决定——这里的“小于等于”就是不能看成是我们熟知的那个小于等于。这里的“小于等于”不满足反对称性,但我们熟知的那个小于等于却得满足这一点。
先别管它。我们继续。在 Knuth 的小说中, Alice 和 Bill 又发现了一块新的石板,石板上定义了一种叫做“加法”的二元运算,用符号 + 表示。也请暂时不要和大家熟知的加法联系在一起。定义 x + y 的结果是一个新的数:它的左集合是由 x 的左集合的所有元素分别加 y ,以及 x 分别加上 y 的左集合的所有元素构成的;它的右集合是由 x 的右集合的所有元素分别加 y ,以及 x 分别加上 y 的右集合的所有元素构成的。如果把 x 的左集合和右集合分别记作 L(x) 和 R(x) ,把 y 的左集合和右集合分别记作 L(y) 和 R(y) ,那么 x + y 的左集合 L 和右集合 R 分别是

L = { u + y | u ∈ L(x) } ∪ { x + v | v ∈ L(y) }
R = { u + y | u ∈ R(x) } ∪ { x + v | v ∈ R(y) }

例如,若 x = {a, b | c} , y = {d, e, f | g, h} ,那么 x + y 就是 {a + y, b + y, x + d, x + e, x + f | c + y, x + g, x + h} 。显然,加法也是递归地定义出来的。在研究加法所具备的性质之前,我们必须要先做一件事情:证明如此加出来的数一定是满足公理 1 的,换句话说加出来的一定都是合法的数。这个证明是很有必要的,它直接关系到加法运算的封闭性。然而,这件事情却很容易被人忽略。 Knuth 的书中有一段情节我非常喜欢,讲的就是 Alice 和 Bill 突然意识到自己忘了做这件事情。在第 12 章《灾难》的开头, Alice 说:“一小时前我醒来,发现我们昨天的证明有一个很大很大的漏洞,就是我们忘了证明 x + y 是一个数了。”听了这话之后, Bill 说:“开玩笑吧,这是两个数之和,当然是一个数咯!等等,我想想……哦,我们还要检查它是否满足公理 1 。”接下来的 11 页则都是 Alice 和 Bill 对这个问题的探究,可见证明这件事还真不容易。这里,我们略去证明。
这么定义加法,效果如何呢?还是用我们刚才的那些数来做试验: α = { | } 、 β = { | α} 、 γ = {α | } 。容易看出:α + α = α , α + β = { | α + α} = { | α} = β , α + γ = {α + α | } = {α | } = γ 。利用数学归纳法不难证明,事实上, α 加上任意一个数 x 都仍然等于 x 。如果 x = {a, b | c} ,那么 α + x 就等于 {α + a, α + b | α + c} ,根据归纳假设,这就是 {a, b | c} 。根据同样的道理,任意一个数 x 加上 α 也都仍然等于 x 。如果 x = {a, b | c} ,那么 x + α 就等于 {a + α, b + α | c + α} ,根据归纳假设,这就是 {a, b | c} 。也就是说,假如我们这里所说的“加法”真的符合我们现实意义中的加法的话, α = { | } 其实就应该是那个 0 !
在我们给出 α + x = x 始终成立的结论后,立即又说 x + α = x 也是始终成立的,这并不是废话,因为我们并不知道这里的加法是否满足交换律。那么,这里的加法是否满足交换律呢?让我们试着比较一下 β + γ 和 γ + β 的结果,来做一番探究吧。由于任何数加上 α 都不变,并且 α 加上任何数也都不变,因而:

β + γ = { | α} + {α | } = {β + α | α + γ} = {β | γ} = δ
γ + β = {α | } + { | α} = {α + β | γ + α} = {β | γ} = δ

这样看来,这里的加法似乎是满足交换律的。
再次利用数学归纳法,我们可以很快得出,这里的加法就是满足交换律的。若 x = {a, b | c} , y = {d, e, f | g, h} ,那么 x + y 就是 {a + y, b + y, x + d, x + e, x + f | c + y, x + g, x + h} ,而 y + x 就是 {d + x, e + x, f + x, y + a, y + b | g + x, h + x, y + c} ,根据归纳假设,两个数内部的组成元素是完全一致的。
同样是利用数学归纳法,我们还可以得出,这里的加法也是满足结合律的。 (x + y) + z 的左集合,归根结底是由以下三类数组成: (xL + y) + z 、 (x + yL) + z 、 (x + y) + zL 。而 x + (y + z) 的左集合,则是由以下三类数组成: xL + (y + z) 、 x + (yL + z) 、 x + (y + zL) 。根据归纳假设,你会发现, (x + y) + z 的左集合和 x + (y + z) 的左集合本质上是一样的。类似地, (x + y) + z 的右集合和 x + (y + z) 的右集合本质上也是一样的,因而 (x + y) + z = x + (y + z) 始终成立。
这里的加法还满足有序域条件列表中的第 15 条,即 x ≤ y 可推出 x + z ≤ y + z 。事实上,我们会证明一个更强的结论: x ≤ y 当且仅当 x + z ≤ y + z ,两者互相之间都是可推导的。事实上,我们会证明一组比这还要强的结论:

  1. 若 x ≤ y ,并且 z ≤ w ,则 x + z ≤ y + w
  2. 若 x + z ≤ y + w ,但是 z ≥ w ,则 x ≤ y

就像之前证明那三个补充性质一样,我们会把这两个结论捆绑到一块儿,共同施加数学归纳法。首先,我们来证明结论 1 ,即已知 x ≤ y 和 z ≤ w 可推出 x + z ≤ y + w 。根据加法的定义, x + z 的左集合由所有可能的 xL + z 和 x + zL 组成, y + w 的右集合由所有可能的 yR + w 和 y + wR 组成。别忘了,一个数小于等于另一个数,当且仅当前者的左集合里不存在大于等于后者的数,并且后者的右集合里不存在小于等于前者的数。因此,如果 x + z ≤ y + w 不成立,这就意味着 xL + z ≥ y + w 、 x + zL ≥ y + w 、 yR + w ≤ x + z 、 y + wR ≤ x + z 这四种情况当中至少会有一种出现。结果你会发现,这四个式子中的任何一个式子都会引出矛盾。例如,在第一个式子当中, xL + z ≥ y + w ,但我们有 z ≤ w ,根据结论 2 的归纳假设便有 xL ≥ y 。但是我们还有 y ≥ x ,由传递性便得到 xL ≥ x ,这与之前的补充性质 1 矛盾。类似地,从后面三个式子出发,可以分别得出 zL ≥ z 、 yR ≤ y 和 wR ≤ w ,这都与之补充性质相矛盾。
接下来,让我们看看结论 2 ,即已知 x + z ≤ y + w 和 z ≥ w 可推出 x ≤ y 。如果 x ≤ y 不成立,这就意味着 xL ≥ y 和 yR ≤ x 这两种情况当中至少会有一种出现。结果你会发现,这两个式子中的任何一个式子都会引出矛盾。例如,在第一个式子当中, xL ≥ y ,但我们有 z ≥ w ,根据结论 1 的归纳假设便有 xL + z ≥ y + w ,这与已知的 x + z ≤ y + w 矛盾。类似地,从第二个式子出发,可以得出 yR + w ≤ x + z ,这也与已知的 x + z ≤ y + w 矛盾。
让我们来回顾一下,这里定义的加法和我们熟知的那个加法究竟有多少差距。这里定义的加法满足加法交换律、加法结合律。这里定义的加法还满足 x ≤ y ⇒ x + z ≤ y + z 。这里定义的加法甚至存在加法单位。我们刚刚引入加法时就发现了, α = { | } 就是加法单位,任何数加上它的结果都不变。不过,我们目前还不知道的是,是否每个元素都存在加法逆元?换句话说,是否对于每一个数,我们都能找出一个相应的数,使得两者相加等于那个加法单位?结果你会发现,这是根本不可能的。除非两个加数都是 α ,否则根据加法的定义,两数之和的左右集合不可能都是空的,自然也就不可能等于加法单位 α 了。
此时,又该轮到谜一般的石板登场了。 Alice 和 Bill 发现,石板上还写有 x 的“逆元”的定义。递归地定义 x 的“逆元”为,将 x 的左右集合颠倒,并把集合里的每个数都变为“逆元”所得的新数。如果把 x 的左右集合分别记作 L(x) 和 R(x) ,把 x 的“逆元”记作 -x ,那么 -x 的左右集合就应该是:

L = { -u | u ∈ R(x) }
R = { -u | u ∈ L(x) }

因此,如果 x = {a, b | c} ,那么 -x 就等于 {-c | -a, -b} 。可以证明,一个合法的数的“逆元”一定是满足公理 1 的,换句话说,一个合法的数的“逆元”一定也是合法的数。这里略去证明。容易看出, α 的“逆元”就是它本身。 { | α} 的“逆元”为 {-α | } ,也就是 {α | } ; {α | } 的“逆元”为 { | -α} ,也就是 { | α} 。这表明,我们刚才的 β 和 γ 互为“逆元”。这里,我们给所有的“逆元”一词都加上了引号,因为它并不是真正的逆元,不满足加法逆元的要求。如果这里的“逆元”是真正的逆元,那么 β + γ 应该等于 α ,但实际情况却并不是这样。翻翻前文你会发现,之前我们算过 β + γ ,它等于 {β | γ} ,也就是后来被我们记作 δ 的数。此时,一件非常有趣的事情出现了: β + γ 的结果虽然不等于 α ,但却和 α 之间有一个极其特别的关系——它既小于等于 α ,又大于等于 α 。
事实上,我们可以证明,任何一个数加上它的“逆元”后,都既小于等于 α ,又大于等于 α 。我们先来证明这个结论的前半部分,即 x + (-x) 一定是小于等于 α 的。再次回想一下,一个数小于等于另一个数,当且仅当前者的左集合里不存在大于等于后者的数,并且后者的右集合里不存在小于等于前者的数。反证,如果 x + (-x) 不小于等于 α ,这就意味着, x + (-x) 的左集合里有大于等于 α 的元素,或者 α 的右集合里有小于等于 x + (-x) 的元素。由于 α 的右集合是空的,因此上述两种可能性中,后者显然是不可能的,我们只需要考虑前者即可。根据加法的定义, x + (-x) 的左集合是由所有可能的 xL + (-x) 和 x + (-x)L 构成,但很容易看出,它们也都不可能大于等于 α 。以 x = {a, b | c} 为例,根据定义有 -x = {-c | -a, -b} 。把所有可能的 xL + (-x) 和 x + (-x)L 都列出来,就是 a + (-x) 、 b + (-x) 、 x + (-c) ,而它们显然都不可能大于等于 α ,因为它们的右集合里都存在小于等于 α 的数—— a + (-x) 的右集合里有一个 a + (-a) , b + (-x) 的右集合里有一个 b + (-b) , x + (-c) 的右集合里有一个 c + (-c) ,根据归纳假设,它们都小于等于 α 。这样,我们就证明了 x + (-x) 必然小于等于 α 。同样的方法可以证明 x + (-x) 一定也是大于等于 α 的:否则, x + (-x) 的右集合里将会存在小于等于 α 的元素,即所有可能的 xR + (-x) 和 x + (-x)R 当中存在小于等于 α 的数,但这是不可能的,因为这些数的左集合里总会有形如 a + (-a) 、 b + (-b) 、 c + (-c) 的数,根据归纳假设,它们都是大于等于 α 的。
这个算术世界中的数没有真正的加法逆元,只有与之相加之后既小于等于加法单位,又大于等于加法单位的数;同时,回想我们之前曾经说过的,正是这种一个数既能小于等于另一个数,又能大于等于另一个数的特性,才使得这里的“小于等于”与我们现实生活中的小于等于不符。此时,一个神奇的想法突然冒了出来:如果我们把任意两个互相之间都存在 ≤ 关系的数视为同一个元素,上面两个问题不就一并解决了吗?
更具体地说,如果 a 和 b 同时满足 a ≤ b 和 b ≤ a ,我们就说 a 和 b 是同一类数。补充性质 3 告诉我们对于任意一个数 x 都有 x ≤ x ,因而一个数一定和自己同类;由于 ≤ 满足传递性,因而如果 a 和 b 同类, b 和 c 同类,则 a 和 c 也一定同类。于是,这个算术世界里的所有数就被划分成了一个一个不交叉的类。站在类上来看,刚才的一切都和我们现实生活中的算术系统相符了,仅有的两点区别也被消除了:对于任何一个类 A ,都存在另一个类 -A ,使得两者之和等于加法单位类;任何两个不同的类 A 和 B 不但满足 A ≤ B 和 B ≥ A 至少有一个成立,而且还满足,它们不可能同时成立(否则它们就不是不同的类了)。既然这样,我们何不把每一个类当作一个元素,把之前那些运算全都搬到类上,从而得到一个更合我们意的算术系统呢?
呃……我们可以这么做吗?且慢,这里面有个问题:究竟如何把之前那些运算全都搬到类上?这个“搬”字用得太随意了,我们要严谨地刻画一下。当然,我们可以规定,为了得出 A 和 B 两个类的运算结果,只需要从 A 中选一个 a ,从 B 中选一个 b ,看看 a 和 b 的运算结果在哪个类里。但是,你怎么知道,不同的选法一定对应相同的结果呢?
好在,利用小于等于的传递性以及 x ≤ y ⇔ x + z ≤ y + z 的性质,我们可以证明,这种事情是不会发生的。大家可以自己试着证明下面这些事实:如果 a 和 b 是同类的数,那么 -a 和 -b 也是同类的数,a + (-a) 、 b + (-b) 、 a + (-b) 、 (-a) + b 也都是和 α 同类的数;如果 a 和 b 是同类的数,并且 c 和 d 也是同类的数,那么 a ≤ c 就一定意味着 b ≤ d , a + c 和 b + d 也一定是同类的数。事实上,在任何一个由 ≤ 、 ≥ 、 + 、 – 组成的表达式中,把某些数替换为与之同类的数,表达式都仍然是正确的。也就是说, ≤ 、 ≥ 、 + 、 – 都可以应用在类的级别上,都可以变成类与类之间的运算,不会出现有矛盾、有冲突的情况。这个以类为元素的结构完全符合有序域的定义中所有涉及到小于等于和加法运算的条件,包括之前不成立的小于等于的反对称性和加法逆元的存在性!
为了完成这个有序域的构造,我们只需要定义一个满足有序域条件的乘法就行了。这件事是可以办到的。规定 x 和 y 的乘积 x · y 的左集合 L 和右集合 R 分别是:

L = { u · y + x · v – u · v | u ∈ L(x), v ∈ L(y) } ∪ { u · y + x · v – u · v | u ∈ R(x), v ∈ R(y) }
R = { u · y + x · v – u · v | u ∈ L(x), v ∈ R(y) } ∪ { u · y + x · v – u · v | u ∈ R(x), v ∈ L(y) }

这里,“ – u · v ”是一种简写记号,它表示的是“加上 u · v 的‘加法逆元’”。如果 x = {a, b | c} , y = {d, e, f | g, h} ,那么 x · y 的左集合就是下表中所有红色区域里的数,右集合就是所有黄色区域里的数。可以证明,这种乘法的定义满足交换律、结合律以及对加法的分配律,这里我们略去证明。

  d e f g h
a a · y + x · d – a · d a · y + x · e – a · e a · y + x · f – a · f a · y + x · g – a · g a · y + x · h – a · h
b b · y + x · d – b · d b · y + x · e – b · e b · y + x · f – b · f b · y + x · g – b · g b · y + x · h – b · h
c c · y + x · d – c · d c · y + x · e – c · e c · y + x · f – c · f c · y + x · g – c · g c · y + x · h – c · h

容易看出, α 乘以任意数都还是 α 。再来试试 β 乘以 γ ,它应该是 { | α} · {α | } = { | α · γ + β · α – α · α} = { | α + α – α} = { | α} = β 。事实上,用数学归纳法很容易证明,用任何一个数 x 来乘以 γ ,结果都仍然是 x :让 x = {a, b | c} 去乘以 γ = {α | } ,将会得到 {a · γ, b · γ | c · γ} ,根据归纳假设它就是 {a, b | c} 。于是, γ 就成为了乘法单位。最后,我们还可以证明,对于任意的 x 、 y 都有,若 α ≤ x 和 α ≤ y ,则 α ≤ x · y 。“乘法逆元” x-1 的公式则是:

L = { 0 } ∪ { (1 + (u – x) · v) / u | u ∈ R(x), v ∈ L(x-1) } ∪ { (1 + (u – x) · v) / u | u ∈ L(x), v ∈ R(x-1)}
R = { (1 + (u – x) · v) / u | u ∈ L(x), v ∈ L(x-1) } ∪ { (1 + (u – x) · v) / u | u ∈ R(x), v ∈ R(x-1)}

其中“ / u ”也是一种简写记号,它表示“乘以 u 的‘乘法逆元’”。可以证明,每个数的“乘法逆元”都是一个合法的数,两者相乘都既小于等于 γ ,又大于等于 γ 。类似地,我们可以把它们全都搬到类上,可以证明,这么做不会产生冲突。这些证明冗长而乏味,我们都略去了。这样一来,外星数学的数类,以及它们之间的小于等于、加法运算、乘法运算,就完全符合有序域的 16 个要求了。外星算术系统就是一个有序域!根据之前提到的结论,我们世界里的有理数运算可以被放进这个外星系统当中, α 所在的类就是那个 0 , γ 所在的类就是那个 1 。
这种“把类当作元素”的算术结构建立方法并不怪异。其实,我们世界中的有理数域也是用这种方法建立起来的。有理数可以看作是一个一个的整数对。不妨用 a 、 b 、 c 、 d 来表示整数,用 0 、 + 、 – 、 · 、 ≤ 来表示整数世界里的零、加法、减法、乘法、小于等于,那么规定 (a, b) 加上 (c, d) 的结果为 (a · d + b · c, b · d) ,规定 (a, b) 乘以 (c, d) 的结果为 (a · c, b · d) ,再规定 (a, b) 小于等于 (c, d) 当且仅当 (0 ≤ b · d ∧ a · d ≤ b · c) ∨ (b · d ≤ 0 ∧ b · c ≤ a · d) ,其中 ∧ 和 ∨ 分别表示“并且”和“或者”。这种定义会带来很多问题,比如两个不同的元素可能互相之间都存在小于等于的关系,比如不是所有元素都有加法逆元,不是所有元素都有乘法逆元。然而,如果我们定义 (a, b) 和 (c, d) 同类当且仅当 a · d – b · c = 0 (这里的 · 、 – 、 = 、 0 也都取它们平常的意义),那么所有元素就会被划分成一个一个的类,这些类以及它们之间的运算就满足有序域的条件了。
由于这个外星有序域是建立在数类之上的,因此严格地讲,我们不能说 α 相当于我们世界中的 0 ,而只能说 α 所在的类相当于我们世界中的 0 。为了叙述简便,我们今后就用上横线来表示“所在的类”, x 意即 x 所在的类。有了这个记号,我们就可以这么说了: α 对应于我们世界中的 0 , γ 对应于我们世界中的 1 。之前已经说过, β 和 γ 互为加法逆元,看来 β 就应该对应于我们世界中的 -1 了吧。因此, β · β 与 γ 就应该是同一个数类咯?简单验证一下,嘿,还真是!事实上,不但 β · β 与 γ 属于同一个数类,而且它们是同一个数: β · β = { | α} · { | α} = {α · β + β · α – α · α | } = {α + α – α | } = {α | } = γ 。其实,我们完全不必担心算着算着会出现不一致的现象,因为我们已经知道了,外星系统中的加减乘除与我们的数域是相吻合的(至少在有理数的范围内是相吻合的)。因此,接下来,我们就直接使用 0 、 -1 、 1 来代表 α 、 β 、 γ 了。
{1 | } 相当于我们的什么数呢(注意,现在的以及接下来将会出现的所有构造,都是符合公理 1 的)?它相当于我们的 2 ,因为 {1 | } = 1 + 1 。 {0, 1 | } 相当于我们的什么数呢?它也相当于我们的 2 ,因为可以验证, {0, 1 | } 既小于等于 {1 | } ,又大于等于 {1 | } ,两者所在的类是同一个数类。接下来,我们会直接使用 2 来代表 {1 | } 。类似地, {2 | } = 2 + 1 ,因而它所在的类相当于我们的 3 ;可以验证, {1, 2 | } 和 {0, 1, 2 | } 所在的类也都是这个类,它们也都相当于我们的 3 。 { | -1} 则相当于我们的 -2 ,你有很多种不同的方法看出这一点来: { | -1} = (-1) + (-1) ,同时也确实是 2 的相反数。 {0 | 1} 呢?它相当于我们的 1/2 ,可以验证,拿 {0 | 1} 和它自身相加,或者拿 {0 | 1} 乘以 2 ,都将会得到一个既小于等于 1 又大于等于 1 的数。很容易想到, {-1 | 0} 当然也就相当于我们的 -1/2 了。
进一步了解外星有序域之后,为了让接下来的叙述更加简洁,我们将彻底省略“所在的类”的提法,并放宽各种运算符号的用法。其实,在我们的世界里,我们也是这么做的。我们不会说 1/2 所在的类和 2/4 所在的类是同一个数类,而是说 1/2 和 2/4 是同一个数的两种不同的表示方法,并以 1/2 = 2/4 记之。类似地,我们今后也认为, {1 | } 和 {0, 1 | } 是同一个数的两种不同的表示方法,并以 {1 | } = {0, 1 | } 记之。另外,我们世界里的符号和外星世界里的符号之间的界限也将越来越模糊。数字 2 既可以代表我们世界里的数,也可以代表外星世界里对应的数,还可以代表这个数的任何一种特定的表示方法。这样,我们便能方便地给出更多的例子,来揭示两个世界之间的联系:

{0 | 1/2} = {0 | 1/2, 1} = {0 | 1/2, 1, 2} = {-1, 0 | 1/2} = 1/4
{0 | 1/4} = {0 | 1/4, 1/2} = {0 | 1/4, 1} = {-1, 0 | 1/4} = 1/8
{1/2 | 1} = {0, 1/2 | 1} = {1/2 | 1, 2} = {0, 1/2 | 1, 2} = 3/4
{1 | 2} = {0, 1 | 2} = {3/4, 1 | 2, 3} = {0, 1/2, 1 | 2, 3} = 3/2
{1 | 3/2} = {0, 1 | 3/2, 2} = {1/4, 1/2, 1 | 3/2, 2, 3} = 5/4
{0 | 2} = {1/2 | 2} = {3/4 | 3} = {0, 1/2 | 5/4, 3/2, 2} = 1

由之前证明过的补充性质 1 和补充性质 2 可知,用左右集合表达出来的数,其数值一定大于左集合里的最大数,小于右集合里的最小数。事实上,可以证明,这个数值一定就是下图所示的树里所有大小夹在左右集合之间的数中最上层的那一个。图中所示的树只画了前面几层,实际上这棵树会无穷伸展下去。

大家或许会敏锐地发现,这里面漏掉了好多数。比如说, 1/3 到哪里去了?既然外星系统是一个有序域,它里面包含有理数域,那应该有 1/3 呀?为了得出 1/3 的表达式,我们不妨把 3 = {2 | } 代入到之前给出的 x-1 的公式里去。由于 {2 | } 的左集合只有一个 2 ,右集合是空的,因此代入后的式子并不复杂:

L = { 0 } ∪ { (1 + (u – x) · v) / u | u ∈ R(x), v ∈ L(x-1) } ∪ { (1 + (u – x) · v) / u | u ∈ L(x), v ∈ R(x-1)} = { 0 } ∪ { (1 + (2 – 3) · v) / 2 | v ∈ R(1/3)}
R = { (1 + (u – x) · v) / u | u ∈ L(x), v ∈ L(x-1) } ∪ { (1 + (u – x) · v) / u | u ∈ R(x), v ∈ R(x-1)} = { (1 + (2 – 3) · v) / 2 | v ∈ L(1/3) }

等等,这不对呀?怎么 1/3 的表达式里面还有 1/3 呢?其实,第一次介绍 x-1 的公式时,我们有意没提这件诡异的事情,也不知道大家是否已经注意到了。实际上,这个公式的含义是需要另作说明的。它并不是什么循环定义,而是让我们从 {0 | } 开始,根据规则不断地迭代下去。刚开始 L 里只有 0 ,而 R 里什么都没有。把 L 中的这个 0 代入 R 中的 (1 + (2 – 3) · v) / 2 ,于是得到 1/2 ,它便成了 R 里的成员;再把 R 中的 1/2 代入 L 中的 (1 + (2 – 3) · v) / 2 ,于是得到了 1/4 ,它便成了 L 里的新成员;再把 L 中的 1/4 代入 R 中的 (1 + (2 – 3) · v) / 2 ,于是得到了 3/8 ,它便成了 R 里的新成员……你会很快意识到,这样迭代下去是没个完的。因而,最后得到的结果当中,左右集合里都有无穷多个项。如果非要把它写出来,那大致就是 {0, 1/4, 5/16, 21/64, … | 1/2, 3/8, 11/32, 43/128, …} 。当然,这只是 1/3 的其中一种表示方法罢了,不过大家可以立即看到其原理,本质上就是把已有的小于 1/3 但越来越接近 1/3 的数放在左边,把已有的大于 1/3 但越来越接近 1/3 的数放在右边,就像 Dedekind 分割那样。根据刚才提到的结论,如此得来的数将夹在左集合的最大数和右集合的最小数之间,它就只能是 1/3 了。注意,左集合和右集合内含有无穷多个元素,这是允许的,而且也是必须允许的,不然这将使系统不符合封闭性条件。假如左集合最多只允许有 p 个数,那么 {0, 1, 2, …, p – 1 | } 加上 {0 | 1} 后,得数的左集合将超过 p 个数,从而打破了封闭性。
允许集合里有无穷个数,这不得了。我们可以用同样的方法产生包括无理数在内的所有实数。可以证明这些实数的行为与我们通常所说的实数也是一致的。因此,实数域也是外星系统的一个子有序域。同时,我们还能构造出一系列更匪夷所思的数。比如, {0, 1, 2, 3, … | } 等于多少?根据公理 1 ,这是一个合法的数。根据刚才的结论,它的数值大于左集合里的所有数。因此, {0, 1, 2, 3, … | } 将会是实实在在等于无穷大的一个数!不妨把它记作 ω 。故事远没到此结束。 ω 只是第一个比所有数都更大的数。你可以利用 ω 构造出 {ω | } 。它等于多少呢?你会发现,它等于 ω + 1 。你可以根据加法的定义写出 ω + 1 的结果,并检验它和 {ω | } 互相之间的 ≤ 关系,从而证实 {ω | } 和 ω + 1 的确是同一个数。类似地, {ω, ω + 1 | } 将会是 ω + 2 , {ω, ω + 1, ω + 2 | } 将会是 ω + 3 。等到 ω + 4 、 ω + 5 也都有了之后,接下来或许该考虑的就是 {ω, ω + 1, ω + 2, ω + 3, … | } 了,它应该等于 ω + ω ,也就是 ω · 2 !类似地, {ω · 2 | } 就是 ω · 2 + 1 , {ω · 2, ω · 2 + 1 | } 就是 ω · 2 + 2 ,而 {ω · 2, ω · 2 + 1 , ω · 2 + 2, … | } 就是 ω · 3 了。等到 ω · 4 、 ω · 5 也都有了之后,接下来或许该考虑的就是 {ω, ω · 2, ω · 3, … | } 了,它应该等于 ω · ω ,也就是 ω2 !你不妨想象一下 ω3 、 ω4 的构造过程,等你想好了之后,我们便有了 {ω, ω2, ω3, … | } ,它就是 ωω !
熟悉序数理论的朋友可能知道,这里的 ω 借用自第一个极限序数符号。但是,和序数里的 ω 不一样,这里的 ω 是一个实实在在的数。在序数理论中, 1 + ω 和 ω + 1 是不同的, ω · 2 和 2 · ω 也是不同的;但在这里,我们有 1 + ω = ω + 1 ,并且 ω · 2 = 2 · ω 。因为,这里的 ω 是一个实实在在的数,它仍然满足加法交换律、乘法交换律等一切有序域应该具有的性质。
更奇怪的则是 {0, 1, 2, 3, … | ω} ,它将等于 ω – 1 ;而 {0, 1, 2, 3, … | ω, ω – 1} 则等于 ω – 2 。那么, {0, 1, 2, 3, … | ω, ω – 1, ω – 2, … } 呢?它将等于 ω/2 。而 {0, 1, 2, 3, … | ω, ω/2, ω/4, ω/8, … } 将会带来 √ω 。当然,从另一个方向上看,我们还有 { | 0, -1, -2, … } ,它显然应该等于 -ω 。别忘了,作为一个有序域,每个数不但都有自己的相反数,还有自己的倒数。 {0 | 1, 1/2, 1/4, 1/8, …} 将等于 1/ω ,直观地说也就是无穷小量。 {0 | 1/ω} 则等于 1/(ω · 2) ,而 {1/ω | 1, 1/2, 1/4, 1/8, … } 则等于 2/ω 。我们刚才创造的所有数都是合法的,它们确实都是一个个的数,它们依旧能比较大小,依旧能参与运算。不过,它们明显超出了实数的范围。看来,一个有序域完全有可能比实数域更大。

所以说,Knuth 才把这个外星系统叫做“超实数”。可以证明,由超实数构成的有序域是最大的有序域,其他所有可能的有序域,都只是超实数域里的一个子有序域。
我们把石板上描述的数学对象解读为了我们熟知的数字(以及我们不熟知的数字),因为两者具有相同的代数结构。但实际上,别忘了,这些数学对象其实可以被我们解读成任何东西,可能是对我们有用的,可能是对我们没用的。
 
(四)并行的棋局
事实上,这个全新的算术系统是 Knuth 从另一位数学大神 John Conway 那儿听来的。 Knuth 对此非常感兴趣,他把 TAOCP 的写作计划搁置了一周,完成了这部 100 多页的小说,并在 1974 年出版。“超实数”这个词是 Knuth 自己杜撰的。 Conway 非常喜欢这个词,并把它用到了他在 1976 年出版的专著 On Numbers and Games 中。这是一本非常有特色,非常 geek 的书。书的内容分成了第零部分 On Numbers 和第一部分 and Games ,全书的第一句是, This book is in two = {zero, one | } parts 。在这本书中, Conway 给出了超实数背后的直观意义:博弈游戏。

 
图 1 图 2 图 3 图 4 图 5

让我们来考虑这样一个游戏,游戏的名字叫做 Domineering 。两个玩家轮流在一个形状不规则的棋盘上放置多米诺骨牌。不妨把这两个玩家分别记作“左玩家”和“右玩家”。左玩家只允许在棋盘上放置竖直的多米诺骨牌,右玩家只允许在棋盘上放置水平的多米诺骨牌。谁先不能放了,谁就输了。显然,有的棋局可能会对左玩家更有利,有的棋局可能会对右玩家更有利。让我们来分析几种局面吧。图 1 显示的是一个“空棋盘”。显然,这是一个“中立棋局”,先走的人直接就输了,后走的人直接就赢了。图 2 所示的棋局虽然与空棋盘不同,但本质上一样——这仍然是一个谁后走谁赢的公平局面。图 3 所示的棋局则明显对右玩家更有利一些,事实上不管谁先走,右玩家一定都会获胜。图 4 所示的棋局则偏向了左玩家,不管谁先走,左玩家都会获胜。
Conway 给出了两个棋局相加的含义。定义两个棋局的和为同时包含这两个棋局的新棋局。如果说有两个棋局,棋局 A 和棋局 B ,那么 A + B 的意思就是两个玩家同时在棋局 A 和棋局 B 上游戏。轮到某个玩家行动时,这个玩家可以选择在 A 上走一步,也可以选择在 B 上走一步,只要 A 和 B 当中至少一个还能走,他就不算输。例如,我们可以让两个玩家同时在图 3 和图 4 上游戏,这个游戏就记作

+

不难看出,它的效果等价于一个空的棋局——谁后走谁赢。
图 5 所示的 L 形棋盘就更有意思了。如果左玩家先行,他有两种走法。其中一种走法将刚好给右玩家留下一步,把自己送上了绝路;更聪明的走法则是把棋盘弄断,从而形成 □ + □ 的局面,让右玩家直接死掉。如果是右玩家先行,他只有一步可走,但走完之后就再也无计可施,而左玩家还能多走一步。因此,不管谁先走,这个 L 形棋盘都是左玩家必胜的。
一个有趣的问题:图 4 的 I 形棋盘和图 5 的 L 形棋盘都是左玩家必胜的局面,都是对左玩家有利的局面,那么哪个局面对左玩家有利一些?换句话说,哪个局面会让左玩家赢得更爽一些?大家或许会说,当然是 I 形棋盘更爽。凭什么这么说?有什么理由吗?注意这里我们实际上在做的事情:我们希望能找出一种(对于左玩家来说)棋局优劣的判断标准。其中一种绝妙的想法是,让 I 和 L 两个棋局同时进行,不过左玩家要在 L 中扮演右玩家的角色。换句话说,考虑这样的复合棋盘:

   

两个玩家仍然轮流放置多米诺骨牌,不过规则稍有修改:在 I 形棋盘上,左玩家仍然竖直地放牌,右玩家仍然水平地放牌;但在 L 形棋盘上,两个玩家的身份颠倒了:左玩家只能放水平的牌,右玩家则改放竖直的牌。此时,左玩家在 I 形棋盘上有优势,右玩家在 L 形棋盘上有优势。最终整个棋局更偏向于谁?这显然是一场赤裸裸的“优势绝对值”之战。不难验证,事实上整个棋局仍然是左玩家必胜,不管谁先走谁后走。这说明,左玩家在 I 形棋盘中具有更大的优势,因而 I 形棋盘比 L 形棋盘更好。
对于一个棋局 A ,如果我们完全交换左玩家和右玩家的地位,得到的新棋局就叫做棋局 A 的“反棋局”,记作 -A 。我们规定,对于棋局 A 和棋局 B 来说,如果棋局 A 和棋局 B 的反棋局同时进行(即游戏在 A + (-B) 上进行),左玩家必胜(不管谁先走),那么对于左玩家来说,棋局 A 比棋局 B 更好,或者说棋局 A 优于棋局 B ;反之,如果右玩家必胜(不管谁先走),那么对于左玩家来说,棋局 A 比棋局 B 更差,或者说棋局 A 劣于棋局 B 。如果 A + (-B) 是一个谁后走谁必胜的中立局面,我们就认为,棋局 A 和棋局 B 对于左玩家来说优劣相同,或者说棋局 A 平于棋局 B 。注意,今后不做特殊说明时,棋盘的优劣都是针对左玩家所说的。
棋局 A 劣于棋局 B 的另一个等价的定义就是,如果棋局 B 优于棋局 A ,我们就说棋局 A 劣于棋局 B 。如果棋局 B 优于棋局 A ,说明 B + (-A) 是左玩家必胜的,因而整个复合棋局的反棋局将会是右玩家必胜的。整个复合棋局的反棋局是什么?就是 B 的反棋局,加上 A 的反棋局的反棋局,也就是 A + (-B) 了。而 A + (-B) 对于右玩家必胜,这正好符合之前给出的 A 劣于 B 的定义。
不过目前,没有任何东西可以向我们保证,这些定义是合理的。按照这个优劣定义,没准会出现 A 优于 B 、 B 优于 C 、 C 优于 A 的荒唐一幕,或者棋局 A 优于棋局 B 但 A + C 劣于 B + C 的悖理情形。不过,或许我们能证明,这些情况都不会出现。至少我们可以证明一些最基本的事实,比如根据上面的定义,一个棋局一定和它自身的优劣程度相同。为此,我们只需要说明棋局 A + (-A) 是一个中立局面即可。其实, A + (-A) 显然是谁后走谁必胜的,因为后走的人有一个绝妙的无敌必胜招数:它只需要完全模仿对方的行为即可。先走的人每走一步,他都能在另一个棋盘上照着走一步,从而永远不可能先无路可走。
左玩家必胜(不管谁先走)的棋局 A 也一定优于任意一个中立棋局。我们也可以证明这一点,只需要说明棋局 A 加上中立棋局的反棋局后,左玩家能必胜即可。他显然是能获胜的,他可以在 A 上该怎么走就怎么走,除非回应右玩家在中立棋局上的行动。反过来,右玩家必胜(不管谁先走)的棋局也就一定劣于中立棋局。
现在开始,就是真正神奇的地方了。我们把左玩家走一步之后可能形成的所有局面构成的集合叫做左集合,把右玩家走一步之后可能形成的所有局面构成的集合叫做右集合。看看图 4 的 I 形棋盘:左玩家无论走哪一步,剩余的棋盘都是图 2 的样子;同时,右玩家没有可以走的空间,右集合是一个空集。一个棋局的左集合和右集合完整地描述了再走一步之后这个棋局所有可能的结果,于是我们可以用这两个集合来刻画该棋局。我们就说:

= { | }

图 1 和图 2 的棋局实质上是相同的:左右集合都是空集。它们都应该表示成 { | } 。图 3 所示的棋盘需要引起额外的注意:“不能走”和“可以走到空棋盘状态”是两个完全不同的概念。因此,图 3 的棋盘应该被表示为

= { | 空棋盘 }

类似地,

= { 空棋盘 | }

图 5 的 L 形棋盘则可以表示为

= { , + | }

下面我们来看看,在这种棋局表示法下,如何形式化地定义棋局的加法、棋局的反棋局以及棋局的优劣。
如果棋局 A 和棋局 B 同时进行,那么左玩家走一步后可以得到的局面,有可能是在棋局 A 当中走一步(同时棋局 B 保持不动)所得,也可能是在棋局 B 当中走一步(同时棋局 A 保持不动)所得;类似的,右玩家能走出的局面,则是由棋局 A 的所有右集合元素都加上棋局 B ,以及棋局 B 的所有右集合元素都加上棋局 A 构成的。如果把棋局 A 的左右集合分别记作 L(A) 和 R(A) ,把棋局 B 的左右集合分别记作 L(B) 和 R(B) ,那么 A + B 的左右集合就应该分别是:

L = { u + B | u ∈ L(A) } ∪ { A + v | v ∈ L(B) }
R = { u + B | u ∈ R(A) } ∪ { A + v | v ∈ R(B) }

左玩家在 -A 中的合法移动,也就是 A 的右集合中的元素;右玩家在 -A 中的合法移动,也就是 A 的左集合中的元素。别忘了,移动完之后,双方的决策继续保持反着的状态。如果棋局 A 的左右集合分别记作 L(A) 和 R(A) ,那么 A 的反棋局的左右集合就应该是:

L = { -u | u ∈ R(A) }
R = { -u | u ∈ L(A) }

最后,我们给出“劣于或平于”的形式化描述。如果棋局 A 劣于或者平于棋局 B ,这意味着 A + (-B) 有两种可能:右玩家必胜,或者谁后走谁必胜。总之,左玩家先走是绝不可能有必胜策略的。反过来,如果左玩家先走真的没有必胜策略(从而右玩家后走将必胜),这正好对应着那两种情况:如果此时再已知右玩家先走也没有必胜策略,那就是谁后走谁必胜;如果此时右玩家先走将必胜,那就属于右玩家必胜的情况。因此, A + (-B) 是右玩家必胜或者谁后走谁必胜的,当且仅当左玩家先走没有必胜策略。这等于是说,左玩家不会在 A + (-B) 上走出一种谁后走谁必胜或者左玩家必胜的局面。如果左玩家在 A 上面走一步,结果一定不会优于或平于 B ;同时, A 也一定不会优于或平于左玩家在 -B 上任意走一步(相当于右玩家在 B 上走一步)的结果。换句话说 A 的左集合中的元素不会优于或平于 B,同时 B 的右集合中的元素不会劣于或者平于 A 。至此为止,大家已经发现,棋局的加法运算,棋局的反棋局运算,以及棋局之间的“劣于或平于”关系,完全等同于超实数的公理和定义!为了保证所有的棋局都是超实数,我们强行规定,所有棋局也都必须满足超实数本身的构造限制,即左集合中没有元素优于或平于右集合中的某个元素。换句话说,对于左玩家来说,左玩家走了一步后所得的棋局,局势一定比右玩家走了一步后所得的棋局更险恶。更直观地说,我们这里考虑的都是先走比后走更不利、每多走一步就更接近死亡的游戏。
为了让棋局完全符合超实数,安全地继承所有超实数中的结论,我们可以生硬地、脱离实际意义地定义棋局的乘法:

L = { u · y + x · v – u · v | u ∈ L(A), v ∈ L(B) } ∪ { u · y + x · v – u · v | u ∈ R(A), v ∈ R(B) }
R = { u · y + x · v – u · v | u ∈ L(A), v ∈ R(B) } ∪ { u · y + x · v – u · v | u ∈ R(A), v ∈ L(B) }

这样便能把谁是 1 确定下来。现在,超实数的所有公理和定义,都能用来描述棋局的世界了。于是,超实数的一切定理一切性质,包括小于等于的传递性,加法乘法的交换率,乃至整个系统是一个有序域,也都将适用于棋局。事实上,棋局和超实数将会变得同构,它们之间存在最为深入的对应关系。每一个棋局都将对应一个数,棋局之间的加法就是数与数之间的加法,我们完全不必担心棋局的运算结果不符合数的运算结果。和超实数一样,更准确地说,应该是每一个棋局类都将对应一个数,棋局类之间的加法就是数与数之间的加法。不过,和之前讲超实数时一样,为了简便起见,接下来我们都省去“类”字。
空棋盘 = { | } ,也就是 0 ,我们的中立棋局。根据我们之前的结论,左玩家必胜的棋局都将优于中立棋局,从而对应一个大于 0 的数;右玩家必胜的棋局都将劣于中立棋局,从而对应一个小于 0 的数。因此,看看棋局所对的数是正是负,就能判断棋局究竟对谁有利。举例来说:

= { | 空棋盘 } = { | 0} = -1

这个值比 0 小,说明该棋局中右玩家必胜。而

= { | } = {0 | } = 1

这个值比 0 大,说明该棋局中左玩家必胜。 L 形棋盘

= { , + | } = {-1, 0 + 0 | 1} = {-1, 0 | 1} = 1/2

说明它也是对于左玩家来说必胜的。注意到 I 形棋盘的值大于 L 形棋盘,这说明 I 形棋盘优于 L 形棋盘,是一个左玩家能赢得更痛快的棋局。一个直观意义就是,在 I 形棋盘中,左玩家能以一步领先的优势获胜,这个步数优势比 L 形棋盘更大。在 L 形棋盘上,左玩家只能以半步的优势险胜。注意 1/2 + 1/2 + (-1) = 0 ,而

      

真的就是一个中立棋局!
在我们给出棋局的形式化描述时,我们并没有关心实际的游戏规则。这是一个非常一般的棋局理论,它还可以用到很多其他的游戏中。回到本文最开头最开头的地方。我们当时留下了一个问题。 ○● 真的等于 1/2 吗?我们现在可以很轻易地回答了。如果把白方想成是左玩家,那么 ○● = {空棋盘 | ○} = {0 | 1} = 1/2 。我们之前曾经用 ○● + ○● + ● = 0 的办法推出了 ○● = 1/2 ,这也是完全有道理的。
有了这套理论,我们便能用纯代数的方法对新的棋局进行分析。考虑下面这个问题:对于左玩家来说,棋局 ○● 和 ○●● 相比,哪个的优势更大?为了解决这个问题,我们只需要计算一下 ○●● 的值:

○●● = {空棋盘 | ○, ○●} = {0 | 1, 1/2} = 1/4

而 ○● = 1/2 ,它的优势更大一些。由此可以进一步推出,棋局

○●●
●○

的值为 1/4 + (-1/2) = -1/4 ,即右玩家必胜。而棋局

○●●
○●●
●○

的值则为 1/4 + 1/4 + (-1/2) = 0 ,即这是一个中立棋局,谁后走谁就能必胜。事实上也确实是这样,你可以自己分析一下。
更厉害的是,由于超实数的左右集合都允许有无穷多个元素,因此这里所说的棋局也允许是无限的。例如,我们可以算出 ○●○●○●○●○●… = 2/3 ,而棋局

○●○●○●○●○●…
○●○●○●○●○●…
○●○●○●○●○●…

真的就是一个中立棋局!
这还没结束。由于超实数的值有可能是无穷大量,因而棋局的值也有可能是无穷大量。 ○○○○○… 显然等于 ω ,而 ○○○○○…○ 则等于 ω + 1 。把这样的行加入任何一个原本有限的棋局里,都会使得左玩家必胜。由于超实数的值有可能是无穷小量,因而棋局的值也有可能是无穷小量。 ○●●●●●… 等于 1/ω ,而 ○●●●●●…● 则等于 1/(ω · 2) 。把这样的行加入任何一个原本有限的并且右玩家必胜的棋局里,都不可能使局面发生逆转;但把这样的行加入任何一个中立棋局里,左玩家就会因为获得一个无穷小的步数优势而必胜。
需要补充的是,并不是所有的棋局都能用数来衡量。让我们回到 Domineering 游戏,看一看下图所示的棋盘:

它既不属于左玩家必胜的情况,又不属于右玩家必胜的情况,当然也不是中立棋局。这是一种全新的情况——谁先走谁就赢。那这个棋盘的值是多少呢?答案是,这个棋盘不对应任何数值,因为它被排除在了我们的考虑范围之外。为了让棋局都是超实数,我们规定了棋局左集合的元素不能优于或平于右集合的元素,这将会漏掉很多棋局。事实上,

= { | } = {0 | 0}

大家可以立即看出,它并不是一个合法的数。在 On Numbers and Games 中, Conway 建议用符号 ∗ 来表示这种特殊的棋局 {0 | 0} 。棋局 ∗ 扮演着很重要的角色,例如不难验证等式 ∗ + ∗ = 0 成立。Conway 用符号 ↑ 表示棋局 {0 | ∗} ,容易看出这是一个左玩家必胜的棋局。可以证明,存在等式 {0 | ↑} = ↑ + ↑ + ∗ 。可见,这个里面的水非常地深,继续挖掘下去还大有文章可作。在书中, Conway 还分析了很多其他的游戏以及其他的棋局运算,感兴趣的朋友不妨深入阅读下去。下面这张漂亮的图片来自 Winning Ways for Your Mathematical Plays 一书,直观地展示了各种各样的棋盘及其对应的数。

 
(五)后记
经常听人问,什么是数学之美?最终发现,还是数学大神 Paul Erdős 的回答犀利:“问什么是数学之美,就像问什么是贝多芬第九交响曲之美一样。”没人能给你讲明白,除非你自己去经历它。
几年前,我就对超实数这一话题特别感兴趣,在看到一个个奇迹般的同构时,感觉全身热血沸腾,沉浸在数学的结构之美当中。最近终于下定决心,写完了整个超实数理论的介绍。这可能是我写过的单篇文章中耗时最久的了,期间我曾经纠结了很多细节问题,一次又一次地被搞晕,一次又一次地陷入哲学思考。我希望能够通过这篇长文,把我这段时间学到的和想到的分享给更多的人,让更多的人理解到数学的乐趣。开篇的博弈游戏出自 Hackenstrings, and the 0.999… ?= 1 FAQ (链接已死,但可在 archive.org 上查看),对超实数的描述参考了 Gretchen Grimm 的 An Introduction to Surreal Numbers 和 Claus Tøndering 的 Surreal Numbers – An Introduction ,多米诺游戏的例子出自 On Numbers and Games ,但对棋局的形式化整理来自于自己的思考,这里面可能存在大量不严谨的地方,希望网友们提出。