布尔、弗雷格与皮亚诺:把推理写下来
直到十九世纪,数学记号都是用来写量以及量之间的运算的。还缺少一种书写,用来记录数学家时时刻刻都在做、却从不写下来的事:推理。“如果这样,那么那样”;“对所有的数”;“存在一个数,使得”。这些话仍然要用拉丁文、法文或德文,夹在一个公式和另一个公式之间说出来。这篇文章讲的是推理本身如何得到了符号。
思维的代数
十九世纪,数学开始向内审视:什么是数?什么是证明?要回答这些问题,就需要一种书写,不仅能写量,还能写命题以及命题之间的推导步骤。
1854 年,英国人乔治·布尔出版了《思维规律》,把推理当作代数来处理。如果 $x$ 代表“白色的东西”,那么 $x\cdot x$(白色的东西中白色的那些)就是 $x$ 本身。于是有了布尔代数中那条奇怪的定律:
$$x^2=x,\qquad\text{也就是}\qquad x(1-x)=0,$$布尔把它读作“任何东西都不能同时具有又不具有某种性质”。一个世纪以后,这种只有 $0$ 和 $1$ 两个值的代数,成了计算机电路的基础。
1879 年,德国人戈特洛布·弗雷格走得更远。在《概念文字》(Begriffsschrift)一书中,他创造了一套完整的逻辑语言,能够一步一步地表达任何数学证明。这是了不起的成就,但这种书写是二维的:命题挂在横线和竖线上,像一棵横躺着的树的枝杈。一个简单的公式就要占半页纸。同时代的人觉得它无法阅读,几乎没有人读这本书。
∈、∃ 和 ∀
我们今天使用的逻辑符号,有很大一部分要归功于皮亚诺。1889 年,为了表示一个元素属于一个集合,他用了希腊字母 epsilon,取自希腊语 estí(“是”)的首字母:$3\in\mathbb{N}$ 读作“$3$ 是一个自然数”。1897 年,为了表示存在一个具有某种性质的元素,他用了一个反转的 E:$\exists$。“对所有”的 $\forall$ 是最年轻的:1935 年,德国人格哈德·根岑仿照 $\exists$,把 A(德语 alle,“所有”)倒过来,创造了它。
有了这些符号,“每个实数的平方都大于或等于零”这句话就变成了
$$\forall x\in\mathbb{R},\quad x^2\ge 0.$$看起来只是缩写,但这种书写让日常语言所隐藏的东西变得可见:量词的顺序。比较:
$$\forall x\ \exists y:\ y>x \qquad\text{和}\qquad \exists y\ \forall x:\ y>x.$$第一个说:对每个数,都存在一个比它大的数,这是对的。第二个说:存在一个比所有数都大的数,这是错的。在日常语言里,两者都可以塞进一句含糊的话:“总有一个更大的数”。在逻辑书写中,区别就在符号的位置上,一眼就能看出来。
本章说明了什么
从印度的零到根岑的量词,数学书写中每一次重要的变化都开辟了一条新路。位值制把计算变成纸上的工作;韦达的字母把算法变成了对象;纳皮尔的对数把乘法换成加法;莱布尼茨的 $d$ 让链式法则自己写出来;欧拉的 $f(x)$ 给了函数一个名字;伽罗瓦和凯莱的表把运动变成了符号,矩阵把一个方程组当作一个整体;吉布斯和亥维赛的向量把麦克斯韦方程化成四行;量词让命题的结构显现出来。
并非每一种新的书写都站住了脚。用于计算的罗马数字、物理学之外的牛顿的点、拜恩的颜色、弗雷格的树,都是记录得很好、却没有引人前进的书写。记号的历史也是这些选择的历史:一个共同体试用各种符号,留下管用的,忘掉其余的。在下一章,我们将只看一个符号,追问究竟是什么使它成为一个符号。
练习:否定这个命题
考虑 $\forall x\in\mathbb{R},\ x^2>0$。否定时把 $\forall$ 换成 $\exists$,并否定性质:$\exists x\in\mathbb{R},\ x^2\le 0$。这个否定是真的,因为 $x=0$ 满足 $0^2=0\le0$。所以原命题是假的:实数的平方总是大于或等于零,而不是严格大于零。
练习:交换顺序
读下面两个关于自然数的命题:
$$\text{(a)}\ \forall n\ \exists m:\ m>n \qquad\qquad \text{(b)}\ \exists m\ \forall n:\ m\ge n.$$(a) 说每个自然数都有一个比它大的自然数:对,取 $m=n+1$ 即可。(b) 说存在一个大于或等于所有自然数的自然数,一个“最后的数”:错,因为 $m+1$ 会比它大。同样的符号,换一个顺序,说的就是相反的事。