Hero Image
艾伦·图灵的一生

年表 19126 月 23 日生于伦敦。父母住在印度。 1926进入舍伯恩寄宿学校。 1930挚友克里斯托弗·莫科姆去世。 1931进入剑桥大学国王学院。 193522 岁当选国王学院院士。 1936写出《论可计算数》。前往普林斯顿。 1938在普林斯顿获得博士学位,回到剑桥。 1939开始在布莱切利园破译恩尼格玛。 1940第一台机电式“炸弹机”投入运行。 1945进入国家物理实验室,设计 ACE。 1948转到曼彻斯特大学。 1950发表关于模仿游戏的论文。 1952发表形态发生理论。因同性恋被定罪。 19546 月 7 日在威姆斯洛去世,终年 41 岁。 ◀ 上一站 沿路线走一遍 下一站 ▶ 1912 伦敦6 月 23 日生于梅达韦尔。父母住在印度,他由英格兰南部的一户寄养家庭抚养长大。 1926–1931 舍伯恩在寄宿学校结识克里斯托弗·莫科姆。这位朋友 1930 年的去世,使他开始思考心灵与物质的关系。 1931–1936 剑桥在国王学院学习,22 岁成为院士,写出《论可计算数》。 1936–1938 普林斯顿在阿隆佐·丘奇门下读博士。丘奇曾经由另一条路得到了同样的结果。 1939–1945 布莱切利园战争期间领导破译德国海军恩尼格玛的小组,并设计了机电式“炸弹机”。 1945–1947 特丁顿在国家物理实验室设计 ACE,一台存储程序计算机。 1948–1954 曼彻斯特为最早的计算机之一编程,提出模仿游戏,研究形态发生。1954 年 6 月 7 日在附近的威姆斯洛去世。 请启用 JavaScript 以查看地图。各站列在下方。 从伦敦到曼彻斯特,途经普林斯顿和布莱切利园。 地图:© OpenStreetMap 贡献者

Hero Image
序数:由空集构成的数

二十世纪初,数学家们想从一个唯一的概念,即集合,出发构建整个数学。可是在这种语言里,数 $3$ 是什么?格奥尔格·康托尔谈到过“序数”,也就是度量队列中位置的数:第一、第二、第三,在所有有限的序数之后,还有第一个无穷序数 $\omega$。所缺的是说清这些数作为集合究竟是什么。 1923 年,19 岁的冯·诺依曼发表了一篇短文《论超限数的引入》,给出的答案如此简洁,以至于成了标准定义。 每个数都是它前面那些数的集合 规则只有一条:一个序数就是所有比它小的序数构成的集合。从空无开始: $$0 = \varnothing,\qquad 1 = \{0\} = \{\varnothing\},\qquad 2 = \{0, 1\} = \{\varnothing, \{\varnothing\}\},$$$$3 = \{0, 1, 2\} = \{\varnothing, \{\varnothing\}, \{\varnothing, \{\varnothing\}\}\}.$$一般地,一个数的后继就是这个数本身再加上它自己: $$n + 1 = n \cup \{n\}.$$这个定义白送了三样东西: 数 $n$ 恰好有 $n$ 个元素:$3$ 的元素是 $0$、$1$ 和 $2$。数到 $n$,就是把 $n$ 的元素过一遍。 “小于”变成了“属于”:$m < n$ 意味着 $m \in n$。同时也意味着“包含于”:$2 \subset 3$。 一切都从空集造出来。不必假定数的存在:它们是用花括号制造出来的。 无穷之外 同一条规则继续适用。全体自然数的集合 $$\omega = \{0, 1, 2, 3, \ldots\}$$是第一个无穷序数:它是所有比它小的序数构成的集合,和前面那些完全一样。接下来是 $\omega + 1 = \omega \cup \{\omega\}$,然后是 $\omega + 2$,依此类推,直到 $\omega \cdot 2$、$\omega^2$、$\omega^\omega$……康托尔描述过这座阶梯;冯·诺依曼给每一级台阶都提供了具体的构造。

Hero Image
图灵机:用铅笔、纸带和规则来计算

1936 年还没有任何计算机。英语里的 computer 指的是一个人:以计算为职业、用铅笔和纸在保险公司、天文台和政府部门里做算术的人。图灵就从这个人出发。他问:一个人在计算时真正在做什么?然后把一切不重要的东西都去掉。 计算的人还剩下什么 图灵在《论可计算数》中的推理,几乎就是一串简化: 纸可以换成一条分成格子的纸带,因为方格纸上的计算可以一格一格地抄到一行上。 每格里放一个符号,取自一张有限的清单:数字、字母、空白。 计算的人每次只看少数几格。看一格就够了:看几格,就是先看一格,再看它旁边那格。 计算的人有一种心理状态,比如“我在做加法”或“我在进位”。这样的状态只有有限多个。 每一步只取决于当前状态和正在读的符号。这一步就是写下一个符号、向左或向右移动一格、改变状态。 剩下的就是一台机器:一条纸带、一个能读能写的头,以及一张规则表。表的每一行说:“在某某状态下,读到某某符号,就写下这个,移到那边,进入某某状态”。 一台加 1 的机器 我们来造一台把二进制数加 1 的机器。手算 $1011+1$ 时,从右往左:最后一个 1 变成 0,“进一”;倒数第二个 1 也变成 0,再进一;接下来的 0 变成 1,计算结束。结果是 $1100$,也就是 $11+1=12$。 机器做的正是这件事,只需要一个状态“加”,外加终止状态“停机”。读写头从最后一位开始: 状态 读到 写下 移动 下一状态 加 1 0 向左 加 加 0 1 不动 停机 加 空白 1 不动 停机 第一行就是进位:把 1 换成 0,继续向左。第二行在遇到 0 时结束计算。第三行处理所有数字都是 1 的情形,比如 $111+1=1000$:读写头走到数字左边的空白处,在那里写下新的 1。 请启用 JavaScript 以使用这个交互图形。完整的推理见正文。 为什么这么简陋? 图灵机看上去简陋得可笑。它不能一次把两个数相加,除了纸带之外没有记忆,每次只走一格。但这种简陋是有意为之。图灵想要一个关于“机械计算”的定义,它要简单到没有人会怀疑一个人能执行它,同时又要普遍到涵盖任何计算。

Hero Image
停机问题:没有机器能回答的问题

1928 年,德国人大卫·希尔伯特提出了一个挑战,他称之为 Entscheidungsproblem,即“判定问题”:找到一种机械程序,对任何用逻辑语言写出的数学命题,都能在有限时间内回答它是真是假。如果这样的程序存在,数学就会变成一条流水线:只要写下问题,摇动手柄即可。 希尔伯特相信答案是肯定的。八年后,图灵和美国人阿隆佐·丘奇各自用不同的方法证明,答案是否定的。 一个更简单的问题 图灵没有正面进攻希尔伯特的问题。他先找到一个更朴素、却没有任何机器能回答的问题。今天人们这样讲述它: 给定一个程序和一个输入,这个程序终究会停机,还是会永远运行下去? 有时候很容易知道。把一个数加 1 的程序立刻就停。一个毫无出口地数 $1,2,3,\ldots$ 的程序永远不停。但有些很短的程序,谁也不知道答案。例如下面这个程序,它检验著名的哥德巴赫猜想——每个大于 2 的偶数都是两个素数之和: 从 $n=4$ 开始。 如果 $n$ 不是两个素数之和,就停机。 否则,把 $n$ 加 2,回到第 2 步。 这个程序停机当且仅当猜想不成立。知道它会不会停,就等于解决一个自 1742 年以来悬而未决的问题。一种判定程序是否停机的通用方法,可以一举解决这个问题以及许多其他问题。 证明 用反证法,假设存在一台机器 $P$ 能完成这项工作。它接收一个程序 $M$ 的描述和一个输入 $x$,并且总能在有限时间内回答: $$P(M,x)=\begin{cases}\text{“停机”}&\text{若 }M\text{ 在输入 }x\text{ 上停机},\\ \text{“不停机”}&\text{若 }M\text{ 永远运行}.\end{cases}$$有了 $P$,再造一台新机器——唱反调的 $D$。它接收一个程序 $M$ 的描述,然后这样做: 问 $P$:当 $M$ 收到它自己的描述作为输入时会怎样; 如果 $P$ 说“停机”,$D$ 就进入无限循环; 如果 $P$ 说“不停机”,$D$ 就停机。 致命的问题来了:当 $D$ 收到它自己的描述时,会怎样? 如果 $D(D)$ 停机,那么 $P$ 对 $D(D)$ 的回答是“不停机”,$P$ 错了。 如果 $D(D)$ 不停机,那么 $P$ 的回答是“停机”,$P$ 又错了。 两种情况下 $P$ 都出错。所以机器 $P$ 不存在。$\blacksquare$

Hero Image
可计算数:几乎每个数都无法计算

1936 年那篇论文的标题说的不是机器,而是数:《论可计算数》。图灵这样定义它们:如果存在一台机器,能一位接一位地写出一个实数的所有数字,而且永远不写错,这个实数就是可计算的。 哪些数是可计算的 学校里出现的数几乎都是可计算的。 分数: $\frac17=0.142857142857\ldots$ 机器做长除法,永远重复这个循环。 根式: $\sqrt2=1.41421356\ldots$ 为了找出下一位,机器从 0 试到 9,看哪个最大的数字添上之后,所得的数平方仍不超过 2。 $\pi$ 和 $e$: 有些级数能把它们逼近到任意精度,例如 $e=1+\frac1{1!}+\frac1{2!}+\frac1{3!}+\cdots$,借助这些级数,机器迟早能写出任何一位数字。 看起来,似乎每个“真正的”数都是可计算的。惊人之处就在这里:几乎没有一个是。 机器可以数得过来 每台图灵机都由一张有限的规则表描述。这张表可以用固定的字母表写成一段文字,因而也可以写成一个整数,图灵称之为描述数。只要把每个符号换成一个数字即可。 于是机器可以排成一张清单:描述数最小的那台,下一台,依此类推。许多数不描述任何机器,许多机器也不写出任何数,但这无关紧要。要紧的是:可计算数可以排成一张清单 $c_1,c_2,c_3,\ldots$ 用术语来说,它们是可数的。 实数数不过来 1891 年,格奥尔格·康托尔证明了实数不能排成一张清单。证明用的就是对角线。假设有一张列出 0 到 1 之间全部实数的清单: $$\begin{aligned} r_1&=0.\underline{5}\,1\,3\,9\ldots\\ r_2&=0.2\,\underline{7}\,0\,4\ldots\\ r_3&=0.8\,8\,\underline{1}\,6\ldots\\ r_4&=0.3\,0\,2\,\underline{2}\ldots \end{aligned}$$改动对角线上的数字来构造一个数 $d$:遇到 5 就写 6,遇到其他数字就写 5。这里 $d=0.6555\ldots$ 这个 $d$ 在第一位与 $r_1$ 不同,在第二位与 $r_2$ 不同,在第 $n$ 位与 $r_n$ 不同。它不在清单上。所以没有任何清单能包含全部实数。 把两个事实放在一起:可计算数能排成清单,实数不能。于是有实数落在所有机器之外,而且它们占了绝大多数。如果你随机挑一个实数,它是可计算数的概率为零。 一个能定义却算不出来的数 可以给一个不可计算的数起名字。写下 $0.d_1d_2d_3\ldots$,其中如果清单上的第 $n$ 台机器在空白纸带上会停机,就令 $d_n=1$,否则令 $d_n=0$。这个数定义得清清楚楚。但如果有一台机器能写出它的各位数字,它就解决了停机问题,而这是不可能的。这是一个存在着、却永远没有人能写出来的数。 练习:用一用对角线清单开头是 $0.1234\ldots$、$0.5555\ldots$、$0.9090\ldots$、$0.3141\ldots$。用“5 变 6,其余变 5”的规则,写出对角线数的前四位。 对角线是 $1,5,9,1$。改动后:$1\to5$,$5\to6$,$9\to5$,$1\to5$。这个数是 $0.5655\ldots$,它在对角线那一位与这四个数各不相同。

Hero Image
通用机:程序也是数据

每台图灵机只做一件事。加 1 的机器就加 1;写 $\frac17$ 的机器就写 $\frac17$。要做别的计算,就得换一台机器。在 1936 年,这是常态:机械计算器、穿孔卡片制表机和潮汐预测机都是为一项任务而造的,换任务就意味着换机器或重新接线。 在同一篇论文里,图灵证明了这并非必要。 读机器的机器 任何机器的规则表都可以作为文字写在纸带上。于是图灵描述了一台特殊的机器 $U$——通用机,它这样工作: 在纸带上接收一台机器 $M$ 的描述,后面跟着一个输入 $x$。 在描述中查找与 $M$ 当前状态以及 $M$ 正在读的符号相对应的规则。 在代表 $M$ 的纸带的那部分上执行这条规则,记下新状态,回到第 2 步。 这样,只要收到任何一台机器的规则表,$U$ 就能一步一步地模仿它。用符号写: $$U(\langle M\rangle,x)=M(x)\quad\text{对每台机器 }M\text{ 和每个输入 }x.$$代价是慢:$M$ 的每一步,$U$ 都要用许多步去查找和抄写。但 $U$ 能算的,恰恰是所有机器合起来能算的。 程序放进内存 实际的推论就是存储程序的思想。不必为每项任务造一台机器,只造一台,任务作为数据输入,放在存数字的同一个内存里。换任务就变成了换文字。你在手机上打开一个应用时正是如此:设备总是那一台,变的是它读的描述。 更进一步:如果程序是数据,一个程序就可以读、写、修改别的程序。编译器和操作系统做的就是这件事;从某种意义上说,停机问题证明中那台接收自身描述的机器 $D$ 也是如此。 Pilot ACE,图灵设计的缩小版,在国家物理实验室建成,1950 年投入运行。它现在陈列于伦敦科学博物馆。Philafrenzy · Wikimedia Commons · CC BY 2.0 从纸上到金属 战后,1945 至 1946 年,图灵在国家物理实验室写出了一台存储程序计算机——ACE(自动计算引擎)——的完整设计。这个设计很大胆:用水银延迟线做内存,每秒一百万个脉冲,甚至设想机器可以编程修改自己的指令。官僚作风和工程师的短缺拖慢了建造。缩小版的 Pilot ACE 直到 1950 年才运行起来,有一段时间它是世界上最快的计算机之一。 与此同时,在曼彻斯特,弗雷德里克·威廉姆斯和汤姆·基尔伯恩于 1948 年 6 月 21 日,在一台绰号**“宝贝”**的机器上运行了第一个存放在电子内存中的程序。几个月后图灵来到曼彻斯特,参与了此后几台机器的工作。

Hero Image
Calculemus:用计算来推理

纠正我们推理的唯一方法,是让它们像数学家的推理一样具体可感,使我们一眼就能发现错误;而当人们发生争论时,我们只需说一声:让我们来计算吧!不必多费口舌,就能看出谁是对的。 — 莱布尼茨,《发现的艺术》(1685) 莱布尼茨是律师、外交官和哲学家。他一生目睹了无数永无休止的争论:宗教之间、国家之间、哲学流派之间。而数学家不会争论 $2+2$ 是否等于 4,只会去算。如果推理也能像数字一样被计算呢? 思想的字母表 这个计划分为两部分。 第一部分是一种通用语言,莱布尼茨称之为 characteristica universalis(普遍文字)。在这种语言里,每个简单观念都有一个符号,复杂观念则是这些符号的组合,就像单词由字母组合而成。莱布尼茨 20 岁时在 1666 年的《论组合术》中就开始构思它。 第二部分是一种推理演算,即 calculus ratiocinator:一套操作符号的规则,让人像做加法一样机械地得出正确结论。在那样的世界里,争论可以用纸和笔来解决。 把概念当作质数 莱布尼茨真的尝试过一个用数字的版本。想法是:给每个简单概念分配一个质数,给每个复合概念分配其组成部分的质数之积。 例如,按照经典定义,“人是理性的动物”。如果动物 $=2$,理性 $=3$,那么人 $=2\times3=6$。 于是,“所有人都是动物”这句话就变成一个算术问题:**2 能整除 6 吗?**能,所以这句话为真。那“所有动物都是人”呢?**6 能整除 2 吗?**不能,所以为假。关于概念的推理变成了一道除法题。 这个系统有严重的问题,它处理不好否定和“有些”这类句子。莱布尼茨知道这一点,并不断尝试其他形式。但核心思想——逻辑可以是代数——已经提出来了。 用今天的记号举例 今天我们用逻辑符号书写推理。考虑关于一个图形的三个命题: $P$:这个图形是正方形; $Q$:这个图形是矩形; $R$:这个图形的两条对角线等长。 如果 $P\Rightarrow Q$(所有正方形都是矩形)且 $Q\Rightarrow R$(所有矩形的对角线都相等),那么 $P\Rightarrow R$。结论来自论证的形式,根本不需要去想正方形。这正是莱布尼茨想要的:只看符号就能检验推理。 但符号不会创造奇迹。如果前提是错的,计算再正确,结论也可能是错的。而颠倒蕴含关系是常见的错误:由“所有正方形都是矩形”推不出所有矩形都是正方形。 组合不等于解释 三个命题,每个或真或假,共有 $2^3=8$ 种组合:000、001、010、011、100、101、110、111。注意,这正是 0 到 7 的二进制写法。逻辑与 0、1 构成的数之间的联系,莱布尼茨已有所察觉,两个世纪后它将成为核心。 部分实现的梦想 莱布尼茨关于逻辑的著作几乎全部未发表,直到 19 世纪。尽管如此,这个想法又回来了: 1854 年,乔治·布尔出版《思维规律》,把逻辑变成了一种只有 0 和 1 的代数。 1879 年,戈特洛布·弗雷格创造了一套完整的逻辑符号语言,与莱布尼茨的设想非常接近。 1936 年,艾伦·图灵描述了一种抽象机器,能执行任何用规则描述的计算。 然而在 1931 年,库尔特·哥德尔证明了:没有任何规则系统能判定数学中的所有真理。莱布尼茨完整的梦想是不可能实现的。但其中可能的那一部分就存在于每台电脑里:一个按规则操作符号的机械装置。

Hero Image
艾伦·图灵的遗产

图灵相信机器会思考。图灵和男人睡觉。所以机器不会思考。 — 艾伦·图灵,致诺曼·劳特利奇的信(1952) 这个苦涩的三段论,是图灵在被定罪后不久写给一位朋友的,它概括了他的一生:一个用逻辑思考的人,被不理解他的人审判。然而,他留下的成果无处不在。 在计算机科学中 图灵机仍然是“计算”的正式定义。当计算机科学家说一个问题“没有算法”时,意思是没有图灵机能解决它;当他们说一个问题“难”时,数的是图灵机需要走多少步。 从这种计数中产生了这个领域最著名的问题——P 与 NP:每个解很容易验证的问题,是否也都很容易找到解?拼一幅拼图很难;检查一幅拼好的拼图很容易。没有人知道这种差别是真实存在的,还是只是我们不够聪明。克雷研究所悬赏一百万美元,奖给回答这个问题的人。 自 1966 年起,美国计算机协会每年颁发图灵奖,它被视为计算机领域的诺贝尔奖。 在密码学和统计学中 对恩尼格玛的战争表明,一种密码的安全不在于密钥的数量,而在于没有能一下子排除大部分密钥的缺陷。现代密码学就诞生于这个教训。而分班经由 I. J. 古德,帮助把贝叶斯统计带回了科学的中心。 在生物学和人工智能中 形态发生的方程是一整个领域——图案的数学生物学——的基础。而模仿游戏在机器已经能够对话的今天,仍是任何关于机器能否思考的讨论的参照。 曼彻斯特萨克维尔公园里的图灵雕像,2001 年揭幕。他坐在长椅上,手里拿着一个苹果。David Dixon · Wikimedia Commons · CC BY-SA 2.0 补偿 几十年里,图灵在战争中的工作是国家机密,他的定罪则是不被提起的话题。1983 年,数学家安德鲁·霍奇斯写的传记出版,情况开始改变。随后有了: 2001 年,在大学旁边的一座公园里,竖起了曼彻斯特的雕像; 2009 年,英国政府的道歉; 2013 年的王室赦免,以及 2017 年赦免其他被定罪者的法律; 印有他头像的 50 英镑纸币,于 2021 年 6 月 23 日——他的生日——发行。 要记住的 1936 年:图灵机定义了什么是计算,通用机预示了存储程序计算机。 1936 年:停机问题表明有些问题没有机器能回答,可计算数表明几乎每个实数都遥不可及。 1939–1945 年:恩尼格玛的计数与缺陷、炸弹机,以及带着分班的班伯里法。 1950 年:模仿游戏用一个测试取代了“机器会思考吗?”这个问题。 1952 年:形态发生解释了扩散如何产生图案。 练习:验证很容易有人说 $8633=89\cdot97$。验证它要花多少功夫?如果没有提示,要找到这两个因数又要花多少功夫? 验证只需一次乘法:$89\cdot97=89\cdot100-89\cdot3=8900-267=8633$。寻找则要试除到 $\sqrt{8633}\approx93$ 为止:从 2 到 89 一共 24 个素数,只有最后一个成功。对于几百位长的数,验证仍然瞬间完成,寻找却变得不可行。互联网的密码学就建立在这种不对称上。

Hero Image
一句话里的两种语言:数学语域

一篇用中文写的数学文章,同时是用两种语言写的。一种是符号的语言:$=$、$+$、$x$、$\sqrt{\ }$。另一种看上去是中文,却又不完全是:它用的是日常词语,但意思是数学家们约定好的,两者在同一句话里混在一起。 英国语言学家韩礼德(Michael Halliday)在 20 世纪 70 年代把这种语言变体称为数学语域。语域是与某种活动相联系的说话方式,比如厨房里的(“爆炒”、“勾芡”),或足球里的(“越位”、“定位球”)。数学语域还多一个麻烦:它的许多词在日常语言里早已存在,意思却不同,而意思改变的时候,读者并不会得到提醒。 改变意思的词语 英国数学教育家戴维·皮姆在《说数学》(Speaking Mathematically,1987)一书中收集了许多这样的例子。以下是其中一些: 积是乘法的结果,不是积攒下来的东西。 差是减法的结果;“7 和 3 的差是多少?”要的是 $4$,而不是“两个都是奇数”。 体积量的是空间。 根是正方形的边,就像我们在第1章中看到的,也是使多项式等于零的那个值。 正规、有理和实,并不是指平常、讲理和真实。 平均数可以是算术的、几何的、加权的;报纸上说的几乎总是其中一种。 最大的危险不在名词上,名词可以靠术语表解决。危险在那些小词上。 小词 “或”。 在日常生活里,“咖啡还是茶?”期待的是只选一样。在数学里,“$x > 0$ 或 $y > 0$”在两个都为正时也成立。数学里的“或”是相容的;不相容的那种必须说出来:“二者择一,但不能两个都是”。 “如果……那么……”。 “如果下雨,我就不去”通常会被理解成“不下雨的话我就去”。在数学里,“如果 $n$ 是 4 的倍数,那么 $n$ 是偶数”对那些不是 4 的倍数的数什么也没说:$6$ 是偶数却不是 4 的倍数,而这句话依然成立。要把两方面都说出来,数学用另一种说法,“当且仅当”,和另一个符号,即第4章中的 $\Leftrightarrow$。 “有些”。 “有些学生缺席了”在交谈中暗示并非全部缺席。在数学里,“有些素数是偶数”只是说“至少有一个”,即使全部都是,这句话也仍然成立。 “多几倍”。 “彼得的贴纸比安娜多三倍。”如果安娜有 $10$ 张,彼得有 $30$ 张(安娜的三倍),还是 $40$ 张(安娜的,再加上它的三倍)?词典和写作手册的意见并不一致。数学语域干脆换个说法来避免疑问:是……的三倍。 表示相加的“和”与表示要求的“和” 在“二和三是五”里,“和”是一次加法。在“$x > 2$ 且 $x < 5$”里,它是双重要求:两个条件同时成立,集合变得更小,而不是更大。同一个连词指挥着相反的运算,学习者得从上下文判断是哪一种。 学习语域 数学语域不能靠一纸定义表来学会。它和任何语言一样,要在使用中听到它、说它、被纠正。所以让学生把 $\forall x \in \mathbb{R},\ x^2 \geq 0$ 这样的句子大声读出来(“对所有实数 $x$,$x$ 的平方大于或等于零”)并不是浪费时间:这是从一种语言到另一种语言的过渡,它会显示出阅读在哪里出了问题。

Hero Image
欧拉圆与维恩图

1760 年至 1762 年间,莱昂哈德·欧拉给一位年轻的德国公主——普鲁士国王的侄女——写了两百多封信,教她物理、天文和哲学。这些信从 1768 年起以《致一位德国公主的信》为题出版,成为那个世纪读者最多的科普书之一。在其中几封信里,为了解释逻辑推理,欧拉画了圆。 三句话,三张图 用圆画出两个集合之间的三种关系:“所有 A 都是 B”(A 在 B 里面)、“没有 A 是 B”(两圆分开)和“有些 A 是 B”(两圆相交)。为本书制作的教学示意图。 想法是:每个概念占据一个区域,逻辑语句就变成位置关系: “所有 A 都是 B”:圆 $A$ 在圆 $B$ 里面。 “没有 A 是 B”:两个圆分开。 “有些 A 是 B”:两个圆相交,公共部分里有东西。 现在看看三段论会怎样。“所有 A 都是 B。所有 B 都是 C。”把第一个圆画在第二个圆里,第二个圆画在第三个圆里。不需要再做任何事:结论**“所有 A 都是 C”**已经在图里了,因为 $A$ 已经落在 $C$ 里面,而没有人特意把它放进去。图免费完成了推理。 关系的图像符号 第2章讲过的哲学家查尔斯·桑德斯·皮尔斯解释了这为什么行得通。一个圆既不像猫的集合,也不像哺乳动物的集合。但圆与圆之间的关系——一个在另一个里面——却像集合之间的关系。这是一种关系的图像符号:图复制的是结构,而不是事物。皮尔斯甚至说,一切演绎推理归根结底都是对一张图的观察,这张图或画在纸上,或画在想象里。 欧拉的问题与维恩的解决 欧拉圆有一个缺点:它迫使人在知道之前就决定位置。如果唯一的信息是“有些 A 是 B”,两个圆就得相交;但也许 $A$ 整个都在 $B$ 里面,而图没有办法说“也许”。