第一篇 古老的起源
第1章 从史前数学到希腊数学
数学史往往是从公元前5世纪的希腊开始讲起的。毕达哥拉斯创立了算术,泰勒斯和阿那克西曼德创立了几何,奠定了古代数学的两大分支。算术和几何的创立,无疑是数学史上的重大突破。然而,这样的讲法却忽略了一个重要的时代,也就是所谓的“史前”数学。人们并没有等到公元前5世纪才开始解决数学问题,特别是那些日常面临的具体数学问题。
会计师和土地测量师
“数学”活动最古老的痕迹之一是在美索不达米亚发现的一块泥板,它可以追溯到公元前2500年。这块泥板记录了这样一个计算:如果一个谷仓里有1152000份粮食,每个人分得7份,一共可以分给多少人呢?不出所料,结果是164571人,即用1152 000除以7得到的结果。看来,美索不达米亚的会计师在算术“诞生”之前很久就知道怎么做除法了。甚至,书写完全有可能就是为了记账才发明的——虽然这些事情很难说得准,但若真是如此,数字就比字母发明得还要早了。有些人也许不愿意接受这种推测,但我们所有的书写文化,很可能都要归功于不怎么浪漫的会计行当呢!
美索不达米亚和埃及的会计师不仅会做乘除法,而且掌握了许多其他的运算,比如解二次方程等。土地测量师则会计算矩形、三角形、圆形的面积。
“无穷”的闯入
会计师和土地测量师创造的技法构成了史前的算术和几何。那么,公元前5世纪的希腊到底发生了什么特别的事情,独独让这个时刻成为了数学史的开端呢?想要搞清楚这一点,让我先举个例子吧。毕达哥拉斯有个学生,姓名已然不可考了,但他解决了这样一个问题:比如以米为单位,要找出一个等腰直角三角形,让三条边的长度都是自然数。因为三角形是等腰的,两条短边的长度一样,我们就设这个长度为x,然后设长边,也就是斜边的长度为y。因为这又是一个直角三角形,根据毕达哥拉斯定理, y2就等于x2+x2。这个问题最终归结为:找出两个自然数x和y,使得2×x2=y2。让我们来试试4以内所有x和y的可能性吧(见表1.1)。
表1.1 4以内x与y的所有可能性
在所有这些情况里,2×x2都不等于y2。我们还可以在更大的数字范围里继续寻找,事实上,毕达哥拉斯学派很可能寻找了很久,却没能找到解。后来,他们终于相信这个解不存在。他们是怎么说服自己这个解不存在的呢?显然不是试遍了所有的数对,因为这样的数对有无穷多个。你就算试到1000甚至100万,证实没有数对能满足条件,可你还是没法保证在更大的数字里面不可能有解……让我们来重新构建一个思路吧,也许毕达哥拉斯学派就是由此得出这个结论的。
首先,在找解的时候,我们只要在x和y至少有一个是奇数的情况里找就行了。因为比方说x =202, y =214是一组解,那么把两个数都除以2就可以得到另一组解x=101, y=107。所以,至少要有一个数是奇数。再推广一点,我们任取一组解,把两个数反复除以2,总归会得到一组至少有一个数是奇数的解。如果这个问题有解,就必然存在x和y中至少有一个是奇数的解。
第二个想法是把数对分成4类:
● 两个数都是奇数;
● 第一个数是偶数,第二个数是奇数;
● 第一个数是奇数,第二个数是偶数;
● 两个数都是偶数。
有了这两个想法,我们就可以分4种情况证明,但这4种情况中没有一个能够构成x和y至少有一个是奇数的解,所以这个问题就没有至少有一个数是奇数的解,也就是说,这个问题根本没有解。
我们先从第一类开始:x和y都是奇数的解不存在。因为如果y是奇数,则y2也是奇数。它不可能等于2×x2,因为后者必然是偶数。这一论证也同样适用于第二类,即x是偶数而y是奇数。第四类本身就不成立,因为根据定义,数对中的两个数不可能都是偶数。现在只剩下第三类,即x是奇数而y是偶数。但在这种情况下,2×x2的一半是奇数,而y2的一半却是偶数——这两个数不可能相等。
一个平方数不可能是另外一个平方数的两倍——这个由毕达哥拉斯学派在2500多年前得到的结果,迄今在数学上仍占有重要地位。它证明了,如果你画一个短边长度为1米的等腰直角三角形,那么以米为单位的话,斜边的长度是。这个数稍大于1.414,却无法通过两个自然数y和x相除得到。由此,几何揭示了一些不能通过自然数的四则运算,即加、减、乘、除得到的数。
几个世纪之后,这个发现启发数学家们构造出了新的数——实数。但毕达哥拉斯学派没有走到这一步,他们还没有准备好放弃自然数这个基本观念。对他们而言,这个发现更像一场灾难,而不是前进的动力。
这个问题的革命性不仅仅在于它对未来数学的巨大影响,还在于它本身的性质及其解决的方法。首先,与美索不达米亚泥板上铭刻的把1152000份粮食除以7份的问题相比,毕达哥拉斯学派的问题更为抽象:美索不达米亚的会计师关注的是粮食的份数,而毕达哥拉斯学派的问题仅涉及数字本身。同样,这个问题的几何形式并没有谈到三角形的田地,而就是三角形这个形状。从三角形的田地到三角形,从粮食的份数到数字,迈向抽象这一步的意义不可小觑。田地的面积无非有几平方千米。如果这个问题说的是三角形的田地而不是抽象的三角形,我们挨个尝试x和y小于10000的所有数字,或许就能解决问题了。然而,抽象的三角形和田地不同,它的面积可以轻易大到上百万甚至上亿平方千米。
公元前5世纪的重大革命,就是抽象的数学对象与自然中的实际物体之间的分离,即使数学对象本身就是从实际物体中抽象出来的也不例外。
数学对象与自然物体之间的分离,让一些人认为数学不适合描述自然物体。这种看法一直活跃到伽利略的时代(公元17世纪),直至数学物理的成就将其打消。然而直到今天,一些人的脑海里还残留着数学与人文科学毫无关系的观点。用玛丽娜·雅盖洛的话来说,数学在语言学中的作用就是“将语言学作为‘人文科学’故而本质上就不精确的那一面掩藏在数学公式里”。
自这场革命之后,数学研究的对象不再是必须与实际物体相关的几何图形和数字。研究对象性质的变化,最终引发了解决数学问题的方法的革命。让我们再来比较一下美索不达米亚泥板上的问题和毕达哥拉斯学派的问题各自的解决方法吧:第一个问题是通过计算解决的——做一个简单的除法就行了,而要解决第二个问题,就需要进行推理了。
要做除法,我们在小学里学过的算法就够用了,美索不达米亚人也会做类似的计算。然而,要进行毕达哥拉斯学派的推理,没有任何算法会教你把数对分成四组。毕达哥拉斯学派应该是发挥了想象力才得到了这个思路。也许有一个门徒明白了数字y不能是奇数;过了几个星期或者几个月,另一个门徒又取得了一些进展,发现x也不能是奇数;然后,几个月甚至几年都卡在这里,直到又有一个门徒有了新想法。美索不达米亚人在做除法时,他知道自己会得到什么样的结果,甚至事先预知这个除法要算多久。反过来,当毕达哥拉斯学派的门徒面对算术问题时,他不可能知道要花多少时间才能找到一种能够解决问题的推理,甚至不确信是不是有找到答案的那一天。
学生们有时会抱怨数学太难学——数学需要想象力,而且没有系统化的方法来解决所有问题。这种说法确有其道理。数学对于专业数学家来说就更难,有些问题要花几十年甚至几百年才能解决。面对数学问题束手无策并不稀奇,数学家们也会在难题面前“卡壳”,有时甚至要到很久之后才能找到答案。但是,如果做个除法也要“卡壳”好几个钟头,这就说不过去了——因为只要应用一个人所共知的算法就行了。
研究对象性质的变化是如何引发解决问题的方法发生变化的呢?换句话说,古希腊数学是如何完成从计算到推理的标志性转变的呢?毕达哥拉斯学派的问题为什么就不能用计算解决呢?我们再来和美索不达米亚泥板上的问题比较一次吧。泥板上的问题针对的是一个特定的物品,即装满了粮食的谷仓,谷仓的体积是已知的。而在毕达哥拉斯学派的问题中,三角形是未知的——这正是我们需要去求解的对象。这个问题说的不是某个特定的三角形,而是会涉及所有可能的三角形。而且,由于三角形的尺寸没有限制,问题会同时涉及无穷多个三角形。因此,在数学对象的性质发生变化的同时,“无穷”闯入了数学——方法的改变势在必行,要用推理来代替计算。我们在前面已经提到,如果这个问题仅涉及有限个三角形,比如所有边长小于10000米的三角形,那还是可以依靠计算来尝试所有不超过10000的数对。当然,手动计算起来无疑十分麻烦,但问题还是可以有条不紊地得到解决。
在公元前5世纪的希腊发生的这场从计算到推理的转变,被视为数学的诞生。
最初的推理规则:哲学家与数学家
那么,到底什么是推理呢?如果我们知道所有的松鼠都属于啮齿目,所有的啮齿目动物都是哺乳动物,所有的哺乳动物都是脊椎动物,所有的脊椎动物都是动物,我们就可以推导出一个结论:所有的松鼠都是动物。推理让我们得到了这个结论,这背后是一套连续的推导:所有的松鼠都是哺乳动物,因此所有松鼠都是脊椎动物,因此所有的松鼠都是动物。
这个推理简单得不能再简单了,但它的结构和数学推理在本质上并无二致。无论哪种推理,都是由一系列命题构成的,每个命题都是用先前的命题通过逻辑得出的,也就是按照“演绎推理规则”构造的。在此情况下,我们把同一个规则连用了三次:如果我们已经知道所有的Y都是X,所有的Z都是Y,就可以推导出所有的Z都是X。
古希腊的哲学家为我们总结了最初的演绎规则,它可以让推理进行下去,也就是从已证的命题演绎出新的命题。例如,上述这条规则要归功于亚里士多德,他提出了一套叫作“三段论”的规则。三段论的另一种形式是“有些……是……”:如果知道所有的Y都是X,有些Z是Y,我们就可以演绎出有些Z是X。
亚里士多德并不是唯一一位对演绎规则感兴趣的古代哲学家。公元前3世纪的斯多葛学派提出了另一套规则。例如,如果有命题“如果A,那么B”和命题A,则有一条规则可以演绎出命题B。
这两派总结演绎规则的尝试,正值从计算转向推理的方法论革命之后,古希腊算术和几何的蓬勃发展时期。因此我们可以想见,古希腊的数学家会使用亚里士多德或者斯多葛的逻辑来进行推理。比如,在证明一个平方数不可能是另一个平方数的两倍时,就可以用到三段论。奇怪的是,事实并非如此,尽管古希腊哲学家和数学家很显然是志同道合的。比如,在公元前3世纪,欧几里得写了一篇专著,综合了他那个时代的几何知识。他的专著结构完全是演绎式的,其中提到的每一件事都给出了推理证明,但欧几里得却从来没有用到过亚里士多德或斯多葛的逻辑。
有几种假设可以来解释这件事。最可能的一种假设是说,数学家没有使用亚里士多德或斯多葛的逻辑,是因为它们太粗糙了。在斯多葛的逻辑中,可以用来推理的是“如果A,那么B”形式的命题,其中A和B是所谓的“原子命题”,表述了一个简单事实,比如“苏格拉底必死”或者“天亮了”。于是,斯多葛逻辑的命题就是用“如果……那么……”“和”“或”等连词联系起来的一些原子命题。这是一种非常贫乏的语言设计,里面只有两种语法类别——原子命题和连词。它并没有考虑到原子命题,比如“苏格拉底必死”可以拆分成主词“苏格拉底”和谓词(或属性)“必死”。
亚里士多德的逻辑和斯多葛不同,它承认了“谓词”的概念。推理中出现的X、Y、Z表达就恰恰是谓词——松鼠、啮齿目、哺乳动物……然而,亚里士多德的逻辑中并没有“专有名词”,即指代个人或物体的名词,比如“苏格拉底”。这是因为,对于亚里士多德来说,科学并不关心苏格拉底这样的特定个人,而是仅仅关心广义的概念,比如“人”“必死”……所以,人们常常用来举例的三段论——“所有人都是必死的,苏格拉底是人,所以苏格拉底是必死的”——并不会出现在亚里士多德的逻辑中。对他来说,三段论应该是:“所有人都是必死的,所有哲学家都是人,所以所有哲学家都是必死的。”所以说,在亚里士多德的逻辑中,命题并不是由主词和谓词构成的,而是由两个谓词和一个泛指代词“所有”或“某些”构成的。直到中世纪末,亚里士多德的逻辑才得到拓展,加入了专有名词“苏格拉底”等单称项。然而,即使有了这样的拓展,亚里士多德的逻辑对于表达某些数学表述来说还是太粗糙了。有了单称项“4”和谓词“偶数”,我们当然可以构造命题“4是偶数”,但它却没有办法构造命题“4比5小”,因为“偶数”只作用于单个对象,而谓词“比……小”与之不同,它要作用于两个对象,即“4”和“5”,并让两者形成一个关系。同理,它也没有办法构造命题“直线ℓ穿过了点A”。
我们现在明白了,为什么古希腊的数学家没有使用同时代哲学家提出的逻辑来进行新生的算术和几何推理——因为这些逻辑不够丰富,做不到。在非常长一段时期内,如何构造一套丰富的、足以支撑数学推理的逻辑这一问题似乎并没有引起多少人的兴趣。除了个别人的几次尝试之外,比如17世纪莱布尼茨所做的研究,直到19世纪末的1879年,戈特洛布·弗雷格才重新拾起了这个问题,并提出了一套逻辑。但是,一直等到阿尔弗雷德·诺思·怀特海与伯特兰·罗素在20世纪初提出类型论,并且大卫·希尔伯特在20世纪20年代提出了谓词逻辑之后,这些工作才取得了具体的成果。
不过,我们还是先继续看看古希腊的数学吧。虽然没有显式的演绎规则来构造数学推理,但这并没有让数学止步不前。直到19世纪,数学命题的语法和演绎规则只不过不那么明确而已。这种情况在科学史上屡见不鲜——在缺乏工具的时候,人们就会想方设法对付一下,而这些变通又常常为工具的出现奠定了基础。
不过对于几何而言,欧几里得明确提出了“公理”的概念:这是无需证明的事实,也是构造证明的基础。特别是著名的平行公理,用现代的形式表述是这样的:过给定直线外一点,有且仅有一条直线与之平行。
长期以来,欧几里得的专著《几何原本》一直都被视为数学方法的原型:先提出公理,然后利用显式或隐式的演绎规则,由公理证明定理。从这个角度来看,推理才是解决数学问题的唯一途径,这也反映出古希腊数学家和哲学家对于推理的重视。
古希腊数学家利用公理化方法发现了一种新的数学。也许,他们还曾试图理解这种新的数学是如何从美索不达米亚人和古埃及人更古老数学的发展而来的。如果古希腊人真的这样做了,他们就应该会去思考如何将计算和推理融合起来。然而这并不是他们的目的——相反,他们将过去一抹而净,完全抛弃了计算,而代之以推理。
正因如此,在古希腊之后,计算在数学大厦之中就难有立锥之地了。