√2 ∀ ⇒ ∃ ¬ ■
计算机科学的数学 · CHAPTER 1

什么是证明?

What is a Proof?

证明不是反复验证,也不是举一堆例子,而是一场从公理出发、无人能反驳的推理。 这一章可以“玩着”读完:你会亲手抓反例、给推理当法官、在六人派对里逃无可逃、再审结 √2 这桩千古名案。

⏱ 约 40 分钟🧩 11 个互动装置🎬 2 段 Manim 短片⚖️ 终局自测 × 6 📖 译写自 MIT 6.042 讲义
00

开场:数学靠什么宣布“真相”

Truth, kinds of

“真相”这个词,在不同领域由不同的东西说了算:

法庭法律真相由陪审团对呈堂证据的裁决决定。
公司权威真相由老板或可信机构拍板。
物理 / 生物科学真相由实验确认。
统计概率真相由样本数据的分析建立。
哲学哲学真相靠一系列“听起来很有说服力”的论证——比如笛卡尔的“我思故我在”。但沿着这条路再推几步,就能“证出”一位无限仁慈的上帝。这类论证可靠性有限。
数学唯一承诺“永远成立“的真相:靠证明。
定义 DEFINITION

一个命题的数学证明(mathematical proof)是:从一组公理(axioms)出发,经由一连串逻辑演绎(logical deductions),最终抵达该命题的链条。

三个关键词——命题 proposition、逻辑演绎 deduction、公理 axiom——就是本章的三大主角。

💡
对计算机科学家来说,证明最重要的用途之一是验证程序和系统的正确性:测试只能证明“有 bug”,永远不能证明“没 bug”;而证明可以。领先的 CPU 厂商已经例行用证明来避免芯片设计中的重大失误。
1.1

命题

Propositions
定义 DEFINITION

命题(proposition)是一个或真或假的陈述(statement)。

听起来要求很低?看两个最简单的例子——前者为真,后者为假,但它们都是命题:

命题 1.1.1.  2 + 3 = 5   ✅   命题 1.1.2.  1 + 1 = 3   ❌

但这个定义确实排除了一类句子:疑问句(“罗密欧啊罗密欧?”)、祈使句(“给我个 A!”),以及真假随情境变化的句子(“现在是五点钟”、“明天股市会涨”)。

还有一件微妙的事:命题不要求我们知道它的真假。判断一个句子是不是命题,只问“它是否客观上或真或假“,不问”你是否知道答案“。

互动 ①

🧑‍⚖️ 命题判官

下面 8 句话,请判断哪些是命题。规则只有一条:它是否“或真或假”。

进度 0 / 8

经典陷阱验证 39 次全对,第 40 次崩塌

断言 CLAIM 1.1.3

对每个非负整数 n,p(n) ::= n2 + n + 41 都是素数。

动手试试——一个一个代入 n,看看这个“看起来非常靠谱”的断言能撑多久:

互动 ②

🎯 反例猎人:p(n) = n² + n + 41

拖动滑块逐个检查,或点“自动连检”。绿色 = 素数。这个断言能活到 n = 几?

当前 n = 0
p(0) = 41
🎬 动画影院

Manim 短片 · 断言的葬礼:40 格素数绿灯逐个亮起,n = 40 一声闷响——“40 个例子 ≠ 证明,1 个反例 = 推翻”。剧本在 manim/scenes.py,可自己改了自己渲。

💡
有限个例子永远不能证明“对所有 n 成立”——哪怕查了 1018 个。但一个反例就足以推翻。这正是“举例”与“证明”的本质区别。

历史上真有被单个反例杀掉的“铁律”:欧拉曾猜想 a4+b4+c4 = d4 无正整数解,挺了 218 年,最后被 Elkies 用

958004 + 2175194 + 4145604 = 4224814

一举推翻。更狠的是:313(x3+y3) = z3 的最小反例超过 1000 位数字——想靠“试”来证伪都够不着。

名人堂三个“命题资格”各不相同的著名例子

四色定理任何地图只需 4 种颜色,就能让相邻区域不同色。1976 年被证明 ✓
证明依靠计算机检查近两千种构形,曾因“太大无法人工复核”引发争议。
费马大定理xn + yn = zn 在 n > 2 时无正整数解。1994 年被证明 ✓
费马说他有证明但“页边太窄写不下”——357 年后才由 Wiles 补上。
哥德巴赫猜想任何大于 2 的偶数都是两个素数之和。至今未知 ?
已验证到 1018,但“验证到再多个”也代替不了证明。

注意:哥德巴赫猜想真假未知,但它仍然是一个如假包换的命题——它在 1.1 节的判官游戏里也出现了。

1.2

谓词

Predicates

谓词(predicate)可以理解为“真相悬而未决的命题”:它的真假取决于变量的取值。书里的例子:

定义

P(n) ::= “n 是完全平方数”。于是 P(4) 为真(4 = 2²),P(5) 为假。给 n 填上具体值,谓词就“升级”为命题。

⚠️ 别混淆:谓词 P(n) 的值是真/假;普通函数 p(n) = n² + 1 的值是数。记号长得像,本质两码事。

那“带变量的句子”怎样才能变成命题?两条路:代入具体值,或者用量词(quantifiers)∀(对所有)和 ∃(存在)把它“绑定”起来。下面亲手感受这两条路——以及它们在证明中的不对称性:

互动 ③

🎚️ 谓词开关:P(n) ::= “n 是完全平方数”

先拖滑块,看谓词如何随 n 真假翻转;再用 ∀ / ∃ 把它压成命题,看“证明”和“证伪”有多不对称。

P(1):1 = 1² → 真
试着先拖滑块,再按上面的按钮。
观察点:证伪全称命题只需一个反例(扫描在 n=2 就会戛然而止);证明存在命题只需一个见证。这个不对称性是后面一切证明方法的底层逻辑。
1.3

公理方法

The Axiomatic Method

公元前 300 年左右,亚历山大城的欧几里得想出一套流传两千多年的“立真流程”:先立下少数几条不容置疑的假设——比如“任意两点之间可以连一条线段”——然后只靠逻辑推导建立其余一切。

术语

公理(axiom):被直接接受为真的命题。
证明(proof):从公理和已证命题出发的一串逻辑演绎,以待证命题收尾。

已证明的命题按“戏份”不同有几个名字:定理(theorem)是重要命题;引理(lemma)是为证后面命题铺路的前置命题;推论(corollary)是从定理几步之内就能跟出来的命题。这些界线并不严格——有时一个好引理比它服务的定理还重要。

欧几里得这套做法至今仍是数学的地基,被称为公理方法(axiomatic method)。现代版本里,一组叫 ZFC(Zermelo–Fraenkel 集合论公理 + 选择公理)的公理,加上几条推理规则,几乎足以推出全部数学。

🤯
“几乎全部数学”听着很省?实际上在 ZFC 里形式化证明 2 + 2 = 4 需要 两万多个步骤。所以本书不从 ZFC 起步,而是把整个高中数学设为公理,换取快速起跑。原则只有一条:对你用了什么假设保持坦诚。
1.4

逻辑演绎

Logical Deductions

光有公理不够,还需要从旧命题合法地制造新命题的规则——推理规则(inference rules)。其中最根本的一条是假言推理(modus ponens):有了 P,又有了 “P ⇒ Q”,就得到 Q。写成规则的样子:

P,  P ⇒ QQ    P ⇒ Q,  Q ⇒ RP ⇒ R    ¬P ⇒ ¬QQ ⇒ P

可靠性 SOUNDNESS

一条推理规则是可靠的(sound),当且仅当:无论 P、Q…取什么真值,只要横线以上的前提都真,横线以下的结论就必然真。全用可靠规则 + 真公理 ⇒ 证出的一切都真。

注意第三条规则:从 ¬P ⇒ ¬Q 合法推出的是 Q ⇒ P(逆否)。很多人会顺手写成 P ⇒ Q——那是非法的。这个坑太常见,原书专门把它标成 “Non-Rule”。来,坐上法官席亲自断案:

互动 ④

⚖️ 推理法庭:这条推理可靠吗?

四场听审。每场给你若干“已证前提”,判断结论是否必然成立(标准:存在前提真而结论假的取值吗?)。

1.5

证明一个蕴含

Proving an Implication

“若 P 则 Q” 型命题叫蕴含(implication)。证明它有两个标准模板。

方法 #1:直接证明

要证 P ⇒ Q:
1. 写下 “假设 P 成立”;
2. 推出 Q。

例 1.5.1先乱算,再干净地证明

定理 THEOREM 1.5.1

若 0 ≤ x ≤ 2,则 −x3 + 4x + 1 > 0。

书里诚实展示了“草稿”:先代几个数,感觉不等式成立,但“感觉”不算数。关键一步是把麻烦的部分因式分解:

−x3 + 4x = x(2 − x)(2 + x)

啊哈!现在拖动滑块,看三个因子的符号如何在 [0, 2] 上“合谋”保证总和为正:

互动 ⑤

📈 符号合谋:f(x) = −x³ + 4x + 1

阴影区是定理管辖的范围 [0, 2]。拖动 x,观察三个因子的符号——它们的乘积从不为负。

x = ? 2 − x = ? 2 + x = ?
f(1) = 4.000

x ≥ 0、2 − x ≥ 0、2 + x > 0 ⇒ 三者乘积 ≥ 0 ⇒ f = 乘积 + 1 > 0。“感觉成立”变成了“必然成立”。

方法 #2改证逆否命题

方法 #2:逆否命题(contrapositive)

“P ⇒ Q” 与其逆否命题“¬Q ⇒ ¬P”逻辑等价——证谁都是证谁,而后者有时顺手得多。

定理 THEOREM 1.5.2

若 r 是无理数,则 √r 也是无理数。

原命题长着两个“不”(“r 不是两整数之比 ⇒ √r 不是两整数之比”),绕。改证逆否:若 √r 有理,则 r 有理——一下就顺了:

证明(逆否版)

设 mn = √r(m, n 为整数)⇒ 两边平方 ⇒ r = m2n2。 m²、n² 都是整数 ⇒ r 有理。 ■

⚠️
逆否命题 ≠ 逆命题。“P ⇒ Q” 的逆命题是 “Q ⇒ P”,二者毫不等价——这正是 1.4 节 Non-Rule 的坑:“¬P ⇒ ¬Q” 恰好是 “Q ⇒ P”(逆否,合法),而不是 “P ⇒ Q”(逆,非法)。
1.6

证明“当且仅当”

Proving an “If and Only If”

“P 当且仅当 Q”(iff,记作 P ⇔ Q)要求双向都成立。两种标准打法:

方法 #1

分别证明 “P ⇒ Q” 和 “Q ⇒ P” 两个蕴含。

方法 #2:链式 Iff

构造 P ⇔ R₁ ⇔ R₂ ⇔ … ⇔ Q 的等价链,每环都成立,首尾即等价。有时需要更多巧思,但成果可以又短又漂亮。

书里的例子非常贴近生活。标准差(standard deviation)衡量一组数的离散程度,而:

定理 THEOREM 1.6.1

一组数 x₁, …, xn 的标准差为 0,当且仅当所有数都等于平均值 μ。
翻译:全班成绩的标准差是 0 ⇔ 每个人都恰好考了平均分。

原书用一条四环的等价链搞定。下面把链条拆开——每一环都靠一个你熟悉的数学事实来保证“⇔”,你来把每个环扣上:

互动 ⑥

⛓️ 链式 Iff:把四个环扣上

每个环问一句“这一步凭什么双向等价”。选对才解锁下一环。

1.7

分类讨论

Proof by Cases

把复杂证明拆成若干情形(cases)逐一击破,是最常用的策略之一。唯一的要求:情形必须穷尽所有可能。书里选的例子是组合数学的一颗明珠——

定义

任给两个人,要么他们认识,要么不认识。若一群人两两认识,叫一个俱乐部(club);若两两不认识,叫一群陌生人(strangers)。

定理

任意 6 个人中,必存在 3 人互相认识(三人俱乐部),或 3 人互不相识(三人陌生组)。

换句话说:你想给 6 人之间的 15 条“关系线”涂上红(认识)/蓝(不认识),却永远躲不开一个同色三角形。不信?亲自试试逃:

互动 ⑦

🎉 六人派对:逃无可逃

点击两条人之间的连线把它涂成红(认识)/蓝(不认识)。目标:涂满全部连线且不出现任何同色三角形。

已涂 0 / 15 条边
认识 不认识 未涂
先随便点几条边试试手感。
证明(两情形,穷尽):任取一人 x,其余 5 人按“与 x 认识 / 不认识”分成两堆——5 只鸽子进 2 个巢,必有一堆 ≥ 3 人。
情形 1:至少 3 人认识 x。 这 3 人内部:①若两两不认识 ⇒ 他们构成 3 人陌生组,完事;②若某两人认识 ⇒ 这两人连同 x 构成 3 人俱乐部,完事。
情形 2:至少 3 人不认识 x。 这 3 人内部:①若两两认识 ⇒ 3 人俱乐部,完事;②若某两人不认识 ⇒ 这两人连同 x 构成 3 人陌生组,完事。
两情形穷尽(认识 x 的要么 ≥3 要么 <3),每种子情形都命中目标。■
💡
这个定理的肩膀上站着一整个分支:拉姆齐理论(Ramsey theory)——“足够大的混乱里必然出现结构”。而 6 是这条定理的第一个门槛(记作 R(3,3) = 6):5 人局你找到了逃生路线,6 人局必败。
1.8

反证法

Proof by Contradiction

反证法(proof by contradiction / indirect proof):假设命题 P 为假,然后推出一个已知为假的事实(逻辑矛盾)——既然“P 为假”会引爆矛盾,P 就只能为真。

模板

1. 宣布“用反证法”;2. “假设 P 为假”;3. 推出矛盾;4. “矛盾!故 P 为真”。

用它审的第一桩大案,是数学史上最有名的判决之一:

定理 THEOREM 1.8.1

√2 是无理数(不能写成两个整数之比)。

下面是原书的完整证明,一行一行来。别划走——中间有两道关卡,答对才放行:

互动 ⑧

🏛️ √2 审判庭(逐步推进 + 两道关卡)

每一行先自己想“这步为什么成立”,再展开注解;遇到关卡必须作答。

矛盾!假设不成立 —— √2 是无理数。∎

整个证明的灵魂藏在第一行的“最简分数”三个字里——最后引爆的矛盾(n、d 都含因数 2)全靠它。光读不够,亲手找找那个“不存在的分数”:

互动 ⑨

🔍 格点猎手:a² = 2b² 有解吗?

√2 = a/b 意味着 a² = 2b²。点击格子(横轴 a,纵轴 b)逐个审问:左边大?右边大?还是恰好相等?

a² < 2b² a² > 2b² 相等?!
点一个格子开始审问。
历史最佳逼近:还没有记录

绿色格子(a² = 2b²)一个都不存在——你现在找不到,把格子放大到 1000×1000 也找不到。这不是运气差,是定理。

🎬 动画影院

Manim 短片 · 无限逼近,永不重合:a² 与 2b² 两条 bar 从 (1,1) 追到 (17,12),差距始终是 1——最接近 √2 的分数们,恰好都是"差一点"。

🤔
为什么不用同样的方法“证”√4 无理?试一下就知道:√4 = 2 = 2/1,假设它有理推不出矛盾——因为它真的是有理数!反证法的矛盾不是变魔术变出来的,它来自命题本身为真。

诚实声明:证明第三行用了“n² 是偶数 ⇒ n 是偶数”(原书习题 1.15 引导你自证);“n² 是 4 的倍数 ⇒ 2d² 是 4 的倍数 ⇒ d² 是偶数”同理。这正是 1.3 节说的:用高中数学当公理,但用在哪要坦诚。

1.9

好证明的实践

Good Proofs in Practice

机械上无误的证明可以长得像天书;但数学要有人懂才算数。好证明 = 正确 + 清晰,而且清晰会反过来保护正确——错误更难藏。原书给了九条写作建议(把证明当程序来写:长证明拆引理,就像长程序拆函数),做成卡片,先猜再翻:

互动 ⑩

🃏 九条心法:先猜后翻

实战假证明诊所(Bogus Proofs)

原书 Throughout 都埋着假证明(bogus proofs):看着像证明,其实某一步偷换了不合法的操作。抓虫能力 = 自查能力。两桩悬案,你来指出第一处出错的行:

互动 ⑪

🐛 悬案一:1 = −1 ?

点选你认定“第一次犯错”的那一行。

🐛 悬案二:若 a = b,则 a = 0 ?

同一规则:点出第一处出错的行。

悬案三(原书习题 1.5):均值不等式的“倒推证明”哪里不对?

要证 (a+b)/2 ≥ √(ab),有人这样“证”:

(a+b)/2 ≥ √(ab)  ⇐  a+b ≥ 2√(ab)  ⇐  a² + 2ab + b² ≥ 4ab  ⇐  (a−b)² ≥ 0 ✓

最后一行确实为真,可这不是证明:箭头方向反了。每一行只是“能推出上一行“(⇐),从真命题倒着推回来,等于什么也没证——除非你逐行声明”此步可逆“并把箭头翻成正向。这是”由果溯因“草稿最经典的翻车姿势。

🚨
抓虫不只是数学审美。1980 年代的 Therac-25 放射治疗仪因软件竞态条件给病人开出过量辐射;2004 年 8 月,一个故障指令让美国航空和全美航空的整个机队集体停飞。“算法大体上没问题”和“算法被证明正确”之间,隔着的可能就是这些事故。证明式思维是每个工程师的防弹衣。
⚖️

终局自测

Final Check

六题,覆盖全章。答错不扣分——每题都有讲解。

🥚

彩蛋与课后挑战

Easter Eggs & Problems
惊喜测验悖论(原书习题 1.1)

Albert 向学生宣布:下周某天会有一场“惊喜测验”。学生们推理:不可能是周五——若周四还没考,周五就成了“必然”,毫无惊喜;于是周五被划掉。照此逻辑周四、周三……直到周一也全被划掉。学生们安心了:Albert 在虚张声势。然后 Albert 在周二发卷,所有人都傻眼:这确实是个惊喜。

学生那段听起来天衣无缝的“证明”到底哪里不对?(习题 1.6 的提示:这是哲学问题,不是数学问题——“惊喜”没有精确的数学定义,公理方法管不到它。)

无字证明:毕达哥拉斯定理(原书习题 1.2)

四份全等直角三角形(直角边 a、b,斜边 c)+ 一个正方形,两种摆法,面积总量不变:

c×c 大正方形 (b−a)² a² b²

左图总面积 = 4·(ab/2) + (b−a)² = c²;右图 = 4·(ab/2) + a² + b²。面积在重排中不变,两者相等 ⇒ a² + b² = c²。习题接着追问:这个“证明”隐含使用了哪些未声明的假设?(比如:重排前后形状真的能对齐吗?a = b 时还成立吗?)——这正是 1.3 节“对假设保持坦诚”的练习。

课后挑战(均出自原书习题,可来找我判卷)
  • 1.9 存在无理数 a、b 使 ab 为有理数。提示:对 √2√2 分类讨论(你会撞上一次美妙的“不知道也无妨”)。
  • 1.17 把 √2 无理性的证明推广到 √3、√5……哪些 k 行,哪些不行?
  • 1.18 / 1.21 / 1.22 证明 log₄6、log₉12、log₁₂18 是无理数。
  • 1.25 2009 年《美国数学月刊》上 √2 无理性的另一种证明:取使 (√2 − 1)q 为非负整数的最小正整数 q……(这预告了第 2 章的良序原理)
  • 1.26 证明:不存在非常数整系数多项式能只产出素数(解释了互动 ② 里 n²+n+41 的宿命)。
本章路线图
00 · 四种“真相”1.1 · 命题1.2 · 谓词 1.3 · 公理方法1.4 · 逻辑演绎1.5 · 证明蕴含 1.6 · 证明 Iff1.7 · 分类讨论1.8 · 反证法 1.9 · 好证明的实践⚖️ · 终局自测🥚 · 彩蛋与挑战