证明方法全集 — 从直接证明到无穷递降 (A Compendium of Proof Methods)

这份讲义要教会你什么

这是一份证明方法的总纲。它把你最近这串对话里出现的全部 21 种证明手法收进来,不是简单罗列,而是按”逻辑灵魂”归成七大家族,让你看清它们之间的血缘关系。读完之后你应该能:

  • 拿到一道证明题时,先判断它属于哪一类,再调出对应的方法模板;
  • 对每一种方法,能说出它的核心思想、逻辑骨架、一个完整例子、什么时候该用;
  • 理解一个贯穿全篇的元洞察:几乎所有”硬”证明,本质都是在利用某个量的”有限性”或”良序性”;
  • 把这些方法和你的去向(CMU 15-151 / 15-251、竞赛、数论、密码学)对应起来。

覆盖范围:正向构造派、反向否定派、命题形状派、良序归纳大家族、计数派、对角线、数论专精(Vieta 跳跃 / p-adic 赋值)。

怎么用这份讲义

  • 标 ★ 的是必须吃透的主力方法(竞赛和 15-151 高频)。
  • 标 ➕ 的是进阶/专精(超出基础课,但对你的竞赛和未来数论课有价值)。
  • 每个方法都配了 > [!example] 完整例子——别只看结论,要看**“为什么这一步能这么走”**。
  • > [!question] 是自测题,答案是可折叠 callout(在 Obsidian 里点开),请先自己挑方法、自己写,再看解答。
  • 读的时候在脑子里装一个问题:“这个方法的’灵魂’是什么?它靠什么制造结论或矛盾?“

0. 先建立心态:证明到底在干什么

一句话:证明就是把”我相信它对”升级成”任何人按逻辑都无法反驳”。

数学和其它学科最大的不同,在于它的断言是永久成立、无可辩驳的。而把”直觉上对”变成”逻辑上铁”的那座桥,就是证明。学会写证明,本质上是学会一种极度诚实的思维方式:每一步都要有依据,不许偷偷塞进”显然”。

这份讲义最核心的元洞察(请先记住)

表面上这 21 种方法五花八门,但它们的”灵魂”其实只有几种。其中最大的一族——良序归纳大家族——共享同一个底层原理:

的每个非空子集都有最小元。“(良序原理 Well-Ordering Principle)

归纳法正着用它(从小往大造),无穷递降反着用它(从大往小拆),最小反例静态地用它,极值原理在几何/组合里用它。一旦你养成”这道题里什么量是良序的?“的条件反射,你就握住了一整族方法的总开关。

0.1 七大家族地图 ★

先把全景看一遍。下面每一行是一个”家族”,共享同一种逻辑灵魂:

家族灵魂(一句话)包含的方法攻击什么形状的命题
一 · 正向构造顺着定义往前推直接证明、分情况、构造性存在”如果…那么…”、“存在…”
二 · 反向否定从”假设它不成立”借力逆否、反证、非构造性存在难以正面下手的命题
三 · 命题形状拆解命题的逻辑结构双向(iff)、唯一性”当且仅当”、“唯一”
四 · 良序归纳利用某个量的良序性弱/强/结构归纳、良序原理、最小反例、无穷递降、极值原理”对所有 …”、“无解”、“必存在”
五 · 计数派用”数数”和有限性逼出结论鸽巢、双重计数、容斥”必有两个…”、计数等式
六 · 对角线造一个”自我否定”的对象对角线论证”不可数”、“不可判定”
七 · 数论专精给四/五族装上数论引擎Vieta 跳跃、p-adic 赋值丢番图方程、整除/平方判定

怎么读这张表

第四族是整张表的心脏——你那道 用的”无穷递降”就住在这里,而且它和”归纳法”是同一个原理的两面。我们会在第 4 节重点展开。其余六族围绕它展开。


第一族 · 正向构造 (Forward / Direct)

这一族的灵魂

顺着已知条件,沿着定义和逻辑,一步一步往前推到结论。 不绕弯、不假设反面、不偷换。这是所有证明的”默认模式”,也是其它一切方法的底座。

1.1 直接证明 (Direct Proof) ★

核心思想:要证 ,就假设 成立,然后用定义、已知定理、代数运算,直接推出

逻辑骨架:

例:奇数的平方模 8 余 1

命题:若 是奇数,则
证明: 为奇数,写成 )。直接平方:

关键观察: 是两个连续整数之积,必为偶数,记 。代回:

为什么这一步能走:“连续两整数必有一个偶数”是直接证明里最常用的小引理之一。整个过程没有任何假设反面,就是把定义( 奇)代进去硬算。

什么时候用直接证明

永远先试它。 只有当”正面推”明显很别扭(比如结论是”不存在”、“无理”、“无限多”)时,才考虑换成反向或归纳。

1.2 分情况讨论 (Proof by Cases / Exhaustion) ★

核心思想:把论域切成若干互不遗漏的情况,每种情况单独证明。只要每种情况都成立,且情况穷尽了所有可能,命题就成立。

逻辑骨架:

例:整数的平方模 4 只能余 0 或 1

命题:对任意整数
证明:按 的奇偶分两种情况(已穷尽所有整数)。

  • 情况一( 偶):,则
  • 情况二( 奇):,则

两种情况覆盖了全部整数,故

分情况最容易犯的错

漏掉情况(没穷尽),或者情况重叠还不自知。写完一定要自问:“我的情况加起来真的等于全集吗?” 比如分”正/负”漏了零,分”奇/偶”对实数无效。

1.3 构造性存在证明 (Constructive Existence) ★

核心思想:要证”存在满足某性质的对象”,最干脆的办法就是直接把它造出来(或给出造它的方法),并验证它确实满足要求。

逻辑骨架:

例:存在任意长的"连续合数串"

命题:对任意正整数 ,存在 连续的合数(中间夹不进素数)。
证明(构造):考虑下面这 个数:

对其中第 个数 ):因为 ,所以 ,又显然 ,故

,所以它有真因子 ,是合数。这 个数连续排列,全是合数。

妙在哪:它把”素数之间的空隙可以任意大”这个抽象命题,变成了一个能写下来的具体例子。阶乘 是”一口气塞进 所有因子”的魔法。

构造 vs 非构造

构造性证明真的告诉你东西长什么样,所以在 CS 里特别值钱——一个构造性存在证明往往直接对应一个算法。它的反面是”非构造性证明”(只证存在、不告诉你是谁),见 §2.3,那是另一种味道的优雅。


第二族 · 反向否定 (Negation-based)

这一族的灵魂

当正面推太难时,假设”结论不成立”,然后从这个假设里榨出矛盾或可用信息。 否定一个命题,常常比肯定它更容易动手——这是数学最深刻的策略之一。

2.1 逆否命题证明 (Proof by Contrapositive) ★

核心思想: 和它的逆否命题 逻辑等价。如果正面证 别扭,就改证

逻辑骨架:

例:若 是偶数,则 是偶数

命题: 偶。
难点:正面假设” 偶”,很难直接说出 的结构(从平方反推根很别扭)。
改证逆否:” 奇”。这个正面就好走:,是奇数。
逆否成立,故原命题成立。

关键直觉:正向是”从平方往回看”(难),逆否是”从根往前算”(易)。逆否把因果方向翻过来,常常把难走的路换成好走的路。

别和"逆命题"混

逆命题(不等价,证它没用);逆否命题(等价,证它有效)。15-151 第一个月就会反复敲打这个区别,很多人栽在这。

2.2 反证法 (Proof by Contradiction / Reductio ad Absurdum) ★★

核心思想:要证命题 ,先假设 (它的反面),然后推出一个逻辑矛盾(比如 、或同时 又非 )。既然反面导致荒谬,原命题必真。

逻辑骨架:

例:素数有无穷多个(Euclid 的经典反证)

命题:素数有无穷多个。
证明:假设反面——素数只有有限个,全部列出为 。构造

,所以它必有某个素因子 。这个 一定在我们的清单里(因为清单号称是全部素数),即 对某个 。于是 ,又 ,两式相减得

,但素数 ,不可能整除 矛盾。所以素数无穷多。

灵魂:我们没有去”造出所有素数”(造不出),而是假设它们有限,然后造一个清单外的素因子,逼出矛盾

反证法是第二族的"母方法"

注意:逆否、非构造性存在、甚至下一族里的最小反例、无穷递降,骨子里都是反证法的特例——它们都先假设结论为假,再推出荒谬。反证法是它们共同的祖先;后面那些方法只是”反证 + 一个特定的矛盾来源(最小性 / 计数 / 良序)“。

2.3 非构造性存在证明 (Non-constructive Existence) ➕

核心思想:证明”存在满足某性质的对象”,但不指出它具体是谁——往往通过反证(假设它不存在导致矛盾),或通过”二选一必有其一”的论证。

例:存在两个无理数 使得 是有理数

命题: 无理数 使
证明(漂亮的”二选一”):考虑数 。它要么有理,要么无理:

  • 有理:取 (都是无理数),则 有理,命题成立。
  • 无理:取 (此时无理),(无理),则

    命题成立。

两种情况必居其一,无论哪种,所要的 都存在。

诡异之处:证明结束了,我们却不知道到底是哪种情况成立——也就是说,我们证明了 存在,却说不出 究竟是 还是 !(事实上由 Gelfond–Schneider 定理可知 是无理的,但这个证明根本不需要知道这一点——这正是它的魅力。)

我的点评:为什么这个例子让人着迷

它第一次让人意识到:“存在”和”能找到”是两回事。这个区别在 CS 理论里会变得尖锐——很多复杂度/可计算性结论都是”存在但找不到/算不出”。15-151 会用这个例子给你一次思维冲击,值得细品。


第三族 · 命题形状 (Statement Shape)

这一族的灵魂

不靠新技巧,而是看清命题本身的逻辑结构,把它拆成更小的、能分别处理的部分。 “当且仅当”拆成两个方向,“唯一”拆成”假设有两个,证它们相等”。

3.1 双向证明 (Iff / Biconditional Proof) ★

核心思想: 意思是” 成立当且仅当 成立”,它等价于两个单向命题之和:

所以证 iff 必须分别证两个方向(俗称”⟹ 方向”和”⟸ 方向”),缺一不可。

例:

(⟹ 方向)。由 Bézout 定理(裴蜀定理):两个整数的最大公约数总能写成它们的整系数线性组合,且是能取到的最小正值。既然 ,就存在 使
(⟸ 方向) 设存在 使 。令 ,则 ,于是 ,故
两个方向都成立,得证。

注意:两个方向用了不同的工具——⟹ 靠 Bézout(较深),⟸ 靠整除性质(很浅)。这很典型:iff 的两半往往难度不对称。

iff 的头号陷阱

只证了一个方向就以为证完了。 尤其当一个方向”太显然”时,人会偷懒跳过。判分时这是直接腰斩的错误。养成习惯:写 iff 证明,先画两行”(⟹)""(⟸)“占位,逼自己两边都填。

3.2 唯一性证明 (Uniqueness Proof) ★

核心思想:要证”满足某性质的对象唯一”,标准套路是:假设有两个(记作 )都满足性质,然后证明它们必然相等

逻辑骨架:

例:带余除法的商和余数唯一

命题:给定整数 和正整数 ,满足 的整数对 唯一
证明:假设有两组都满足:

两式相减:,即

所以 。但由 一个绝对值小于 的数若被 整除,只能是 。于是 ,代回得 ,因 。两组相同,唯一性成立。

套路提炼:” 整除一个绝对值小于 的数 ⟹ 那个数是 0”是唯一性/整除证明里反复出现的杀招,请记住。

存在 + 唯一 = 良定义

很多定义(如"""逆元""最简分数”)要成立,必须既存在又唯一。所以”存在性证明 + 唯一性证明”经常成对出现,合起来叫良定义性 (well-definedness)。这是 15-151 的高频考点。


第四族 · 良序与归纳大家族 (Well-Ordering & Induction) ★★★

这一族的灵魂(全篇最重要)

利用”某个量是良序的”——即它取值于一个”每个非空子集都有最小元”的集合(典型是 )。 这一族有七个成员,看起来各异,其实是同一个原理穿了七件衣服。你那道 就活在这一族里。

三位一体:归纳 = 强归纳 = 良序

下面三条命题在逻辑上完全等价(可以互相证明),这是 15-151 的核心定理:

  1. 数学归纳法(弱归纳)成立;
  2. 强归纳法成立;
  3. 良序原理( 每个非空子集有最小元)成立。

它们是”同一枚硬币的三面”。理解这一点,你就懂了为什么归纳和递降是对偶的:归纳从最小元出发往上造,递降假设有反例却往下拆到撞穿最小元。

4.1 弱归纳法 (Weak / Ordinary Induction) ★

核心思想:要证”对所有 成立”,只需:

  1. 基础步 (base case):证 ;
  2. 归纳步 (inductive step):假设 成立(归纳假设),证 成立。

像多米诺骨牌:第一张倒(基础),且每张倒会推倒下一张(归纳步),则全倒。

例:前 个奇数之和等于

命题:
证明(对 归纳):

  • 基础步 :左边 ,右边 ,成立。
  • 归纳步:假设 。则加上第 个奇数 :

    这正是 。由归纳法,命题对所有 成立。

几何彩蛋:这个等式有个无字证明——把 的方格按”L 形”一层层剥开,每层恰好是 个格子。这也预告了第五族的”双重计数”。

4.2 强归纳法 (Strong / Complete Induction) ★

核心思想:归纳步里,不只假设 ,而是假设”直到 为止全部成立,再证

什么时候非用强归纳不可:当证 需要回头用到 小得多的、不确定的某一项时,弱归纳(只给你 )就不够了。

例:每个整数 都能写成素数之积(算术基本定理的存在性)

命题:每个 是若干素数的乘积。
证明(强归纳):

  • 基础步 : 本身是素数,是”一个素数的积”。
  • 归纳步:假设所有 都能写成素数之积。考虑 :
  • 素数,它本身就是素数之积,完成。
  • 合数,则 ,其中 ,即 。由强归纳假设 各自都是素数之积,于是 也是素数之积。

由强归纳法,命题对所有 成立。

为什么弱归纳在这里会失败: 分解出的 可能是 这种”跳得很远”的数,不是 。弱归纳只攥着 ,够不着 ;强归纳一次攥住”全部小于它的”,才接得住。这是判断”该用强归纳”的金标准:分解出的子问题大小不可控。

4.3 结构归纳法 (Structural Induction) ★➕

核心思想:把归纳从”自然数”推广到任何递归定义的结构(字符串、列表、树、表达式、语法……)。证明分两步:

  1. 基础步:对递归定义里的基本对象(原子情形)证性质;
  2. 归纳步:假设性质对组成部分成立,证它对由这些部分组装出的更大结构也成立。

例:满二叉树的叶子数 = 内部节点数 + 1

递归定义(“满二叉树”):

  • (基本) 单个叶子节点是一棵满二叉树;
  • (递归) 取一个根节点,给它接上两棵满二叉树作为左右子树,就得到一棵更大的满二叉树(此时根是内部节点)。

命题:对任意满二叉树 ,记 为叶子数、 为内部节点数,则
证明(结构归纳):

  • 基础步: 是单个叶子。,确有 。✓
  • 归纳步: 由根 左子树 右子树 组成。叶子全在子树里,内部节点是两棵子树的内部节点加上新根:

    由归纳假设 ,代入:

为什么这是"CS 味最重"的方法

竞赛几乎不练它,但它在 CMU 15-150(函数式编程)、15-251(理论 CS)无处不在——因为程序里的数据结构(列表、树、AST)和语言的语法都是递归定义的,要证”程序对所有输入正确""所有合法表达式满足某性质”,靠的就是结构归纳。提前练熟它,你后面会省下大量痛苦。 这是我特别建议你重视的方向。

4.4 良序原理 (Well-Ordering Principle) ★

核心思想:(或任何非负整数集)的每个非空子集都有最小元。 用法:把”反例集合”或”满足某条件的集合”拿出来,取它的最小元,再利用”它是最小的”这个性质做文章。

例:不存在严格介于 之间的整数

命题:不存在整数 满足
证明(良序):假设这样的整数存在,令

由假设 ,且 。由良序原理, 有最小元 ,满足 。把不等式 同乘正数 :

于是 也满足 ,即 ;但 比最小元还小——矛盾。所以

灵魂:良序原理保证了”最小元存在”,而""制造出一个更小的成员,直接捅穿最小性。这个”取最小,再造更小”的套路,就是下面最小反例和无穷递降的雏形。

4.5 最小反例法 (Minimal Counterexample) ★★

核心思想:假设命题为假,则反例集合非空;按某个良序量(大小、位数、解的范数……)取一个”最小的反例”,然后证明:这个最小反例要么自相矛盾,要么能造出一个更小的反例——无论哪样,都和”它最小”矛盾。

逻辑骨架:

例:每个正整数都能写成"不同 2 的幂之和"(二进制表示存在性)

命题:每个正整数 都能写成若干个互不相同 的幂之和。
证明(最小反例):假设不能,令 最小的无法这样表示的正整数。
取满足 最大,则 ,于是

分两种情况:

  • :那么 本身就是一个 的幂,可表示——与” 是反例”矛盾。
  • :由于 最小反例, 可以被表示成不同 的幂之和。又因 ,这个表示里用到的幂全都小于 不含 。于是给它补上一个 ,就得到 的一个”互不相同的幂之和”表示——与” 是反例”矛盾。

两种情况都矛盾,故反例不存在。

最小反例 vs 无穷递降:同一灵魂,两种姿态

  • 最小反例静态的:你站在”已经最小”的位置,发现还能更小,一击致命。
  • 无穷递降动态的:你不断造出更小、再更小的解,强调”这个过程能无限进行下去”,而正整数不能无限减小,故矛盾。

两者数学上等价,但写证明时最小反例通常更干净——因为你不必论证”过程真的无限”,只需要一次矛盾。你那道 的标准写法(取 最小)其实就是最小反例的姿态。

4.6 无穷递降 (Infinite Descent) ★★

核心思想(费马的招牌):假设方程有解(或命题有反例),从一个解构造出一个严格更小的解;但解的”大小”是正整数,不能无限变小,矛盾。因此无解。

逻辑骨架:

例: 无非平凡整数解(就是我们一起做过的那道)

命题: 的唯一整数解是
证明(无穷递降 / 最小反例):反设存在 的非平凡解,在所有这样的解里取 最小的一组 (良序原理保证存在)。

第一步:模 5。。模 5 的二次剩余:

要让两边相等,必须落在交集 。故 ;因 是素数(Euclid 引理),

第二步:代入并下降。:

再写 :

第三步:撞穿最小性。 于是 也是解,且因 :

这与” 最小”矛盾。故非平凡解不存在,唯一解为

(已用 Python 在 范围内暴力确认零非平凡解,与结论一致。)

历史与级别

无穷递降是费马的独门武器,他用它证了 无非平凡解。它属于初等数论与竞赛数学的核心技巧:AIME 偶尔出现,USAMO/IMO 是必备。它”初等但不平凡”——每一步高中生都能懂,但想到”取最小反例”这一起手式需要真正的洞察。

4.7 极值原理 (Extremal Principle) ★➕

核心思想:把”取最小/最大”的思想从数论搬到组合与图论。在一个有限(或良序)结构里,总存在某个极值对象(最长路径、最大集合、最近的两点、面积最小的三角形……);利用这个对象的极值性质(它不能再被改进)推出结论或矛盾。

例:最小度 的图必含圈(经典"最长路径"论证)

命题:若一个有限简单图 中每个顶点的度数都 ,则 含有一个圈 (cycle)。
证明(极值:取最长路径):由于 有限,存在一条最长的路径 。考察端点 :

  • 所有邻居都必须落在 。否则,若 有一个不在 上的邻居 ,就能把路径延长成 ,比 更长——与” 最长”矛盾。
  • 的度数 ,所以除了 ,它至少还有另一个邻居 (且 ),这个 也在 上。

于是 构成一个圈(长度 )。

灵魂:良序量从”整数大小”换成了”路径长度”。“最长路径的端点无处可去”这个张力,正是矛盾的来源——和无穷递降”撞穿最小性”是同一种几何。

把第四族当成"一套思维的多种表达"

对竞赛来说,无穷递降 ↔ 最小反例 ↔ 极值原理 ↔ 良序应当被当作同一套思维的四种说法熟练掌握:它们覆盖了绝大多数”无解 / 必为某形式 / 必存在 / 唯一”类题目。判断信号:题目里有没有一个能取”最小/最大/最长”的量? 有,就往这一族想。


第五族 · 计数派 (Counting-based)

这一族的灵魂

用”数数”和”有限性”直接逼出结论。 有时把同一个东西数两遍得到等式;有时靠”东西比盒子多”得到重合;有时用加加减减算出精确个数。共同的底色是:有限世界里,数量本身就是约束。

5.1 鸽巢原理 (Pigeonhole Principle) ★★

核心思想:把 只鸽子放进 个鸽笼,必有一个笼子装了至少两只。推广: 只鸽子 个笼子,必有一个笼子装了至少 只。

用法关键:难点永远在**“谁是鸽子、谁是鸽笼”** ——一旦设计对了映射,结论往往瞬间出来。

例:任意 个整数中,必有两个之差被 整除

命题:从整数里任取 个,必存在两个,它们的差是 的倍数。
证明(鸽巢):

  • 鸽笼:整数模 的余数共 种,即
  • 鸽子:这 个整数,每个按”模 的余数”放进对应鸽笼。

只鸽子进 个笼,必有两个整数 落入同一个笼,即 。于是

妙处:我们根本不关心这些整数是什么,只关心它们的余数——把无限的整数压进 个抽屉,鸽巢立刻生效。

鸽巢在 CS 里的化身

“从大集合到小集合的函数不可能单射”就是鸽巢的函数版本。它直接解释了哈希冲突 (hash collision) 为什么不可避免(键空间比桶多),也是无损压缩不可能对所有输入都缩短的根本原因(抽屉装不下)。你做数据科学/算法时会反复撞见它。

5.2 双重计数 (Double Counting / Combinatorial Proof) ★★

核心思想:把同一个集合(或同一个量)用两种不同的方式数,两个结果必相等——于是得到一个恒等式。优雅之处在于:不做任何代数推导,仅靠”换个角度数”就证明了等式。

例:握手引理

命题:在任意有限图中,所有顶点的度数之和等于边数的两倍。
证明(双重计数):数同一个集合——所有的”关联对,其中顶点 是边 的一个端点。

  • 按顶点数:固定一个顶点 ,它参与的关联对数等于它的度数 。对所有顶点求和:关联对总数
  • 按边数:固定一条边 ,它恰好有 个端点,贡献 个关联对。对所有边求和:关联对总数

同一批关联对,两种数法结果相等:

立得推论:右边是偶数,所以度数为奇的顶点个数必为偶数(否则奇数之和为奇)。这条小结论在图论里用得极多。

双重计数的威力与品味

你组合很强,但我特别建议你专门品味这种”数两次代替硬算”的思维方式。很多看起来要用复杂代数(归纳、二项式展开)才能证的恒等式,比如 (数” 元集的所有子集”:左边按大小分类数,右边每个元素选或不选 )、或 ,用双重计数往往一句话秒杀。这种优雅会反哺你的竞赛直觉。

5.3 容斥原理 (Inclusion-Exclusion) ★

核心思想:数”至少属于某些集合之一”的元素个数时,直接相加会重复计数。修正办法:加上单个集合,减去两两交,加回三三交,减去四四交……正负交替:

例: 中能被 整除的数有几个?

解(容斥):设 分别为能被 整除的集合。用 数倍数:



代入容斥:

故有 74 个。

(已用 Python 暴力枚举验证 ,与公式一致。)

直觉:被 整除的数在 里各数了一次(多数了一次),所以要减回去;但被 整除的数被加三次、减三次正好归零,所以最后要再加回来一次——正负交替正是为了”每个元素净计一次”。

进阶去向

容斥的”高配版本”是默比乌斯反演 (Möbius inversion),它把这套”加加减减”用 函数统一成一个公式,在你的数论曲线里(尤其是积性函数、欧拉函数求和)会正式登场。错位排列 (derangement) 个数 也是容斥的经典战果。


第六族 · 对角线论证 (Diagonalization)

这一族的灵魂

构造一个”和清单上每一个都不同”的对象——尤其让它在”第 位”上故意和”第 个候选”作对。 这种”自我否定”的构造能证明某些集合”大到无法列举”,是数学和计算理论最深刻的思想之一。

6.1 对角线论证 (Cantor’s Diagonal Argument) ★★➕

核心思想:要证某个集合不可数(无法和 一一对应),假设它可数(于是能排成一张清单),然后沿对角线造一个新元素:让它的第 个特征故意不同于清单第 个元素的第 个特征。这个新元素和清单上每一个都不同,却本应在清单里——矛盾。

例:区间 中的实数不可数(Cantor)

命题: 里的实数无法排成一个序列(即不可数)。
证明(对角线 + 反证):假设可数,把 里全部实数排成一张清单,每个写成小数:

其中 的第 位数字。现在沿对角线造一个新数 ,规则是:

(只用 两个数字,避开 的歧义。)
这个 。但对每个 的第 ,所以 。也就是说 不在清单上——可清单号称包含了 的全部实数。矛盾。所以 不可数。

灵魂:那个新数 是被**专门设计来”和每个候选作对”**的——它在第 行第 列(对角线)上偏偏不一样。这种自指式的构造是对角线论证的精髓。

我的点评:这是通往计算理论的门户

对角线论证不止证了”实数比自然数多”。同一套自指思想,被图灵 (Turing) 用来证明停机问题 (Halting Problem) 不可判定:假设有个程序能判断”任意程序是否停机”,就能构造一个”专和它作对”的程序导致矛盾。Cantor 的对角线 = 图灵不可判定性 = 哥德尔不完备性,三者共用这一个灵魂。这是 CMU 15-251 的高光内容,竞赛数论碰不到,但它是 CS 理论的根。强烈建议你认真对待这一节——它会重塑你对”计算的极限”的理解。


第七族 · 数论专精 (Advanced Number-Theoretic) ➕

这一族的灵魂

把第四族(良序/递降)和第五族(计数)的思想,装上专门的数论引擎。 Vieta 跳跃 = 递降 + 韦达定理;p-adic 赋值 = 把”数素因子”系统化成一种”测量”。这两个是你冲 IMO 级别、以及为 CMU 数论/代数课打底的关键升级。

7.1 Vieta 跳跃 (Vieta Jumping) ➕

核心思想:对付含参数的二次丢番图方程时,把方程看成某个变量的二次方程,利用韦达定理(两根之和、之积已知)从一个解””到另一个解;通常这个新解更小,于是接上无穷递降/最小反例收尾。

例:IMO 1988 第 6 题(传奇"第 6 题")

命题:设正整数 满足 ,令 。证明 完全平方数
证明(Vieta 跳跃):固定这个整数 。在所有满足 非负整数对 中,取使 最小的一组,不妨设

基础情形:若 方程变成 ,所以 是完全平方数,结论成立。

归纳/下降:若 ,导出矛盾。 把方程

看成关于 的二次方程(把 当常数)。 是它的一个根,设另一根为 。由韦达定理:

现在证 是一个更小的非负整数解:

  • 是整数:由 ,✓。
  • :若 ,则在 中,左边 ;而 使 ,右边 ,矛盾。故
  • :由 ,有 (用了 )。故

于是 也是非负整数解,且 ——比我们选的”最小”还小,矛盾

所以最小解必落在基础情形 ,从而 是完全平方数。

它和你那道递降题的关系

Vieta 跳跃就是无穷递降的”高配进化版”:同样取最小解、同样往下降、同样用最小性撞矛盾;唯一的新东西是”怎么造出更小的解”——普通递降靠”除以公因子”(像你那道除以 ),Vieta 靠”韦达定理跳到另一个根”。如果你以后打 IMO 级别,这是必须形成肌肉记忆的招。

7.2 p-adic 赋值 (p-adic Valuation) ➕

核心思想:定义 为整数 中素数 幂次(例如 ,因为 )。它把”数素因子”变成一种测量,满足两条关键性质:

时第二条取等号(,这叫超度量/非阿基米德性质)。很多整除、平方、整数性问题,用 一比就清楚了。

例:调和级数 永远不是整数

命题:对
证明(-adic 赋值):设 是满足 最大 的幂(即 )。

关键观察:在 中,恰好只有一个数的 等于 ,就是 本身。 因为任何 的数形如 ,下一个()已经 ,超出范围;而 的数 也超范围。所以其余所有 都满足 ,从而

于是在 这堆 -adic 数里,唯独 的赋值 最小(最”负”),且独一无二。由超度量的取等性质(最小者唯一时和的赋值等于该最小值):

但任何整数 都有 。所以 不是整数。

(已用精确分数运算验证 内分母均 ,即都非整数,与结论一致。)

把你那道题"翻译"成赋值语言(高回报投资)

我在之前的对话里建议过你:用 p-adic 的眼光重看 。这里说清楚:对乘积型等式, 能一行定胜负(比如用 无理:,矛盾);但对你那种求和型方程( 是个和,不是积),赋值不能直接读出和的值——这正是为什么那道题需要”模 5 + 递降”而不能一行解决。换句话说:对求和型方程,赋值论证本质上就是把递降”形式化”了一遍。 想清楚这个边界,你就真正理解了赋值能做什么、不能做什么。

这个视角的真正价值在未来:学到 Hensel 引理、局部域 (local fields)、-adic 数 时(CMU 的高级数论/代数课、以及椭圆曲线密码学的理论基础),你会发现” 测量”是无缝衔接的地基。


8. 综合:拿到一道证明题,怎么选方法?

选方法的决策流程(背下来)

按顺序自问下面几个问题,第一个命中的就是你的起手方向:

  1. 命题是”当且仅当”吗? → 拆成两个方向(§3.1),每个方向再单独选方法。
  2. 命题说”唯一”吗? → 假设有两个,证相等(§3.2)。
  3. 命题是”对所有 / 对所有递归结构”吗? → 归纳大家族:数字上用弱/强归纳(§4.1–4.2),结构上用结构归纳(§4.3)。分解出的子问题大小不可控 → 强归纳。
  4. 命题说”无解 / 不存在 / 唯一解是平凡解”吗? → 反证 + 无穷递降/最小反例(§4.5–4.6);若是二次丢番图方程,考虑 Vieta 跳跃(§7.1)。
  5. 命题说”存在……”吗? → 先试构造(§1.3,最干脆);构造不出再试非构造/反证(§2.3)。
  6. 命题说”必有两个…… / 必然重合”吗? → 鸽巢(§5.1),关键是设计”鸽子与鸽笼”。
  7. 要证一个计数等式吗? → 试双重计数(§5.2,最优雅);要数”并集大小”用容斥(§5.3)。
  8. 要证”不可数 / 不可判定 / 无法枚举”吗? → 对角线论证(§6.1)。
  9. 题里有可取”最大/最小/最长”的量吗(尤其图论组合)? → 极值原理(§4.7)。
  10. 以上都别扭、而题目正面好推吗? → 老老实实直接证明(§1.1);情况太多就分情况(§1.2)。
  11. 整除/平方/整数性问题,且能看素因子幂次吗? → p-adic 赋值(§7.2)。

一个反复出现的"通用矛盾来源"

你会发现,最强的几族(反证、最小反例、递降、极值、鸽巢、对角线)制造矛盾的方式高度相似:先假设一个”最优/最小/完整”的对象存在,再证明它其实不够最优/还能更小/并不完整。 这种”逼出’比最好还好’的荒谬”是高级证明的通用引擎——看到题目里能定义某种’最’,就该警觉这一招。


9. 自测题(先自己挑方法、自己写,再点开)

自测 1(选方法 + 直接/逆否)

证明:对整数 ,若 是偶数,则 是偶数。

自测 2(无穷递降 / 最小反例,重要)

证明: 没有非平凡整数解。
(提示:模 ,。)

自测 3(强归纳)

邮局只有 分和 分两种邮票。证明:任何 分的邮资都能用这两种邮票凑出。

自测 4(鸽巢)

中任取 个数。证明:其中必有两个数互质(提示:相邻整数互质)。

自测 5(双重计数)

用双重计数证明组合恒等式

自测 6(综合,有点难,p-adic 或直接)

证明:对 , 是偶数。(提示:试试 ,或想想 的关系。)


10. 一页速记 + 收尾

证明方法速记卡

一 · 正向构造:直接(顺推)、分情况(穷尽切分)、构造性存在(造出来)。
二 · 反向否定:逆否(,等价)、反证(假设反面 → 矛盾)、非构造存在(证存在不说是谁)。
三 · 命题形状:双向(拆 ⟹ 和 ⟸)、唯一性(假设两个证相等)。
四 · 良序归纳 ★:弱归纳(多米诺)、强归纳(子问题大小不可控时用)、结构归纳(递归结构,CS 核心)、良序原理(取最小元)、最小反例(静态:最小处还能更小)、无穷递降(动态:无限下降不可能)、极值原理(最长/最大对象的张力)。它们都是”利用良序性”的同一灵魂。
五 · 计数派:鸽巢(鸽子>鸽笼必重合)、双重计数(同一物数两次)、容斥(正负交替去重)。
六 · 对角线:造一个”沿对角线和每个候选作对”的对象 → 不可数/不可判定。
七 · 数论专精 ➕:Vieta 跳跃(递降 + 韦达跳根)、p-adic 赋值( 测素因子幂次)。
选方法口诀:iff 拆两半 · 唯一设俩 · 对所有用归纳 · 无解用递降 · 存在先构造 · 必重合用鸽巢 · 等式数两次 · 不可数用对角 · 有”最”用极值 · 整除看赋值。

学完这份讲义,确认你能:

  • 不看讲义说出七大家族各自的”灵魂”和代表方法;
  • 解释为什么归纳法、强归纳、良序原理三者等价,以及归纳与递降为何是”对偶”;
  • 对每一种方法,独立写出一个完整例子(哪怕是讲义里的);
  • 拿到一道新证明题,用第 8 节的决策流程在 30 秒内选出起手方向;
  • 说清 p-adic 赋值对乘积型 vs 求和型方程的不同表现(为什么你那道题不能一行解决);
  • 结构归纳、对角线论证、双重计数 这三个”CS 味”方法和 15-150/15-251 的去向对应起来。

全部打勾 → 你已经握住了从竞赛到 CMU 证明课的整套”证明工具箱”。

一句话收尾

证明方法看似有几十种,但它们的”灵魂”屈指可数:顺推、假设反面、拆解结构、利用良序、依靠有限性、构造自指。真正的高手不是记住更多招式,而是看一眼命题就知道”该调动哪种灵魂”。 而在所有灵魂里,你最该刻进骨子里的那一句是——“这道题里,什么量是良序的?” 答得出这个问题,你就握住了归纳、递降、极值、最小反例这一整片大陆的钥匙。你那道 只是这片大陆上的第一座小山。