上一章的直接证明有一条很清楚的主线:接受题目给出的条件,把定义和已经知道的事实一件件接上去,最后抵达结论。能这样走时,直接证明通常最省事。
麻烦在于,有些结论并不给我们一个好用的“把手”。“ 是偶数”可以写成 ,可“ 是偶数”要怎样直接拆开?“不存在最大的整数”甚至没有一个具体对象让我们从头推起。遇到这种题,证明停住不一定是知识不够,也可能是站的位置不合适。
这一章做的事情,就是换一个入口。条件命题可以转向它的逆否命题;否定式结论可以先假设它失败,再有目的地制造矛盾;含“存在唯一”的结论则要拆成“确实有”和“不可能有两个”两项任务。
先把一个写作习惯定下来:正式推理之前,用一句话交代路线。例如,“结论的否定能写成奇数的标准形式,所以改证逆否命题”,或者“若素数只有有限多个,就能把它们全部列出,因此采用反证法”。这句话不属于计算,却能回答读者最想问的事:你为什么会想到这样做?
本章不是要把所有题都改写成间接证明。直接证明能顺畅推进时,就继续直接证明。只有当结论的否定更具体、反面假设能提供额外结构,或目标本身含有存在与唯一性时,换路线才真正省力。

先看目标的逻辑形状,再选择能直接进入定义的证明路线。
面对一道证明题,先别急着搬模板。把题目中的前提和结论分别圈出来,再问下面几个问题。
这里最重要的动作是准确否定目标。例如,“所有整数都满足 ”的否定不是“所有整数都不满足 ”,而是“至少有一个整数不满足 ”:
同样,“存在一个 满足 ”的否定是“每个 都不满足 ”:
否定写错,后面的推理再漂亮也证明不了原题。很多所谓“方法不会选”,其实在这一步就已经偏了。
要证明
可以改证它的逆否命题
这不是经验上的替代方案,而是逻辑等价:原命题与逆否命题在每一种真假取值下都同真同假。原命题唯一失败的情况是 真而 假;在同一种取值下, 真而 假,逆否命题也恰好失败。两句话的真假完全同步,所以证明其中一句,就证明了另一句。
逆否证明最适合这样的情形:原命题的前提不好拆,而结论的否定有明确形式。
例如,对整数来说:
这些否定都给了我们可操作的材料。方法选择的诀窍很朴素:哪一边更容易进入定义,就从哪一边开始。
要用逆否证明 ,可以按下面的顺序组织。
先明确说明:“我们证明逆否命题 。”这一步让读者知道你没有把方向写反。
假设 ,并把这个否定翻译成题目所属对象的具体语言。
命题:若整数 的平方 是偶数,则 是偶数。
先看为什么选逆否。直接从“ 能被 整除”去拆 ,需要额外处理平方的因子;结论“ 是偶数”的否定却很具体:整数 不是偶数,就一定是奇数。奇数能写成 ,代入平方后会立刻暴露奇偶性。
改证逆否命题:“若 是奇数,则 是奇数。”设
其中 是整数。
这里真正起作用的不是“逆否”两个字,而是奇数的定义。换方向之后,定义能立即代入,这就是选择该方法的理由。
命题:设 是非负实数。若 是无理数,则 是无理数。
原命题同时出现两个否定式定义,直接写会很绕。它的逆否命题是:“若 是有理数,则 是有理数。”这个方向只需使用有理数的分数表示。
设
其中 是整数且 。两边平方可得
因为 都是整数且 , 是有理数。逆否命题成立,原命题也成立。
逆否证明通常不会让证明“更间接”,反而会去掉原命题里的否定词。看到“若某对象不是 A,则另一个对象也不是 B”时,试着把逆否命题写出来;它可能变成更熟悉的“若属于 B,则属于 A”。
对原命题 ,最容易混淆的三个相关命题是:
举个具体例子:
若一个整数能被 整除,则它是偶数。
原命题是真的。它的逆命题“若一个整数是偶数,则它能被 整除”却是假的,整数 就是反例。它的逆否命题是“若一个整数不是偶数,则它不能被 整除”,这与原命题等价,也是真的。
还有一种常见错误,是把 的逆否写成 。一个稳妥的口头检查是:先交换前后,再分别否定。交换后得到 ,再否定两端,才是 。
反证法要证明命题 ,先暂时假设它不成立,也就是接受 。如果这个假设与题目的其他条件一起必然推出矛盾,那么 就不可能为真,只能留下 。
逻辑骨架可以写成:
其中 表示矛盾。因为 会导向不可能, 为假,所以 为真。
初学反证法时,最难的并不是“先假设相反”,而是接下来往哪里推。比较可靠的办法是查看反面假设新送给了你什么结构。
所以,矛盾不是凭空等来的。我们通常根据反面假设的关键词,专门设计一个会击中它的对象或等式。
写清要证明的命题 ,并说明采用反证法。
准确写出 。若目标含量词,要同时改变量词和内部判断。
保留题目原有条件,把 带来的新对象或新结构具体化。
命题:不存在最大的整数。
为什么选反证?“不存在”没有一个对象可供直接操作,反面“存在最大的整数”却会给我们一个具体的 。一旦拿到 ,最自然的构造就是 ,因为它既保留整数身份,又专门破坏“最大”。
反设存在最大的整数,记为 。按“最大”的含义,每个整数 都应满足 。
整数对加法封闭,所以 也是整数。
这类证明的构造常常只有一步,但那一步很有针对性。若假设声称“已经到顶”,就往上加一点;若假设声称“已经最小”,就尝试缩小一点。
两种方法都可能从否定开始,但任务并不相同。
写成符号就是:
它们在经典逻辑中都能证明原条件命题,但证明过程中持有的假设不同。写作时明确说出方法和假设,读者就不会在中途猜方向。
这道经典题很适合学习“如何构造矛盾”,因为矛盾不是算到一半偶然出现的,而是在反设时就已经埋好了位置。
目标是“ 不是有理数”。它的反面“ 是有理数”允许我们把 写成整数之比。可分数表示有很多种,例如 ;如果最后只推出分子、分母都是偶数,这对任意分数表示并不矛盾。于是我们在一开始就选择,让“分子分母还有公因数”成为可以击中的矛盾点。
前面已经证明:若整数 是偶数,则 是偶数。这个事实会用两次,分别把 和 的偶性传回 和 。
采用反证法。假设 是有理数。于是可以选取整数 和正整数 ,使
“取最简分数”不能省。若没有这项条件,推出 同为偶数只说明当前表示还能约分,并不矛盾。
从 偶推出 偶也不能只写“显然”。这里使用了一个已经证明的命题,而那个命题恰好由逆否法得到。证明常常这样搭积木:先证明一个小引理,再在主证明里清楚地使用它。
最后,矛盾必须写完整:一边是“ 没有大于 的公因数”,另一边是“ 同时整除 ”。只写“所以矛盾”会把最关键的逻辑连接藏起来。
反证法允许我们暂时接受一个最终会被否定的假设,但不允许在推理中使用想要证明的结论。若证明“平方为偶数则原数为偶数”时又把这句话当作未经证明的依据,整个论证就会循环。
存在命题的标准形式是
它只要求至少有一个 中的对象满足 。对象可以有很多个,也可以只有一个;仅从存在性还看不出来。
最直接的存在性证明,是亲手给出一个对象,再核对它的性质。
命题:存在一个偶素数。
取 。因为 ,它是偶数;又因为 且正因数只有 和 ,它是素数。因此偶素数确实存在。
这个证明很短,却包含两个不同动作:给出对象,验证性质。只写“答案是 ”还不算完整证明,因为读者需要看到 同时满足“偶数”和“素数”两项要求。
构造不一定意味着猜数。对象也可以来自公式、集合运算或算法。例如要证明“对每个实数 ,存在实数 使 ”,题目中的等式已经提示我们取 。
有时可以证明某种对象一定存在,却不确定当前证明的哪一个候选对象满足条件。
命题:存在无理数 ,使 是有理数。
先考虑正实数
数 不是有理数,就是无理数。下面分两种互相覆盖的情况。
若 是有理数,取
这个证明没有判断 到底属于哪一类,因此没有在证明结束时锁定同一对具体数字。它仍然有效,因为无论 落在哪一类,至少有一对数可以工作。
构造性与非构造性回答的是同一个“存在”问题。前者通常还给出对象或找对象的方法,信息更多;后者有时更容易完成。不能因为没有立刻算出对象,就把非构造性证明当成“不完整”。
“存在唯一的 满足 ”常记为
这句话实际上打包了两项结论:
以及
第一项保证“至少一个”,第二项保证“至多一个”。两项合在一起,才是“恰好一个”。
要证明至多一个,不必先猜哪一个对象才是正确答案。任取两个满足条件的对象 ,然后利用它们共同满足的性质,证明 即可。
假设 与 都成立。不要额外假设 ,除非你明确采用反证法。
命题:设 是实数且 。方程
有唯一实数解。
这个目标必须分两段。先造出一个解,证明“有”;再让任意两个解相遇,证明“只有一个”。
先证存在。因为 ,实数
这里也能看出条件 为什么必要。若 ,每个实数都是解;若 ,一个解也没有。题目中的条件不是装饰,它同时支撑了构造中的除法和唯一性中的消去。
找到 只能证明存在。也许还有另一个 同样满足条件,只是我们暂时没看见。唯一性必须排除这种可能。反过来,证明“任意两个候选都相等”只说明至多一个,也不能保证候选真的存在。
这两个半边可以用一句对账问题检查:
只有两个答案都是“有”,存在唯一性证明才完成。
“素数有无限多个”看起来很难直接证明,因为我们不可能把无限多个素数逐一列完。它的否定却非常具体:如果素数只有有限多个,那就能把全部素数写成一张完整清单。反证法正好能利用这张清单。
假设全部素数是
要推翻这张清单,我们想造一个正整数,它不被清单中的任何素数整除。怎样同时避开所有 ?先把它们相乘,得到一个能被每个 整除的数,再加 。于是构造
“乘积加 ”不是灵光一现的装饰:乘积负责同时对齐所有旧素数,加 负责让除以每个旧素数时都余 。
采用反证法。假设素数只有有限多个,并把全部素数列为
证明中用到的“小事实”也能快速说明:若整数 本身不是素数,就在它大于 的正因数中取最小的一个 。若 还是合数,它还能分成两个都比 小且大于 的因数,其中一个也整除 ,这与 最小矛盾。因此 必是素数。
证明没有声称 一定是素数。比如从一些素数的乘积加 得到的数可能是合数。我们真正需要的是:,所以它至少有一个素因子;而这个素因子不在旧清单里。只要出现一个新素因子,有限清单就已经被推翻。
举一个小规模演示。若暂时列出 ,则
这里恰好得到新素数 。这个例子帮助我们看懂构造,却不是一般证明;一般证明依靠的是“余数恒为 ”和“ 有素因子”,不是一次具体计算。
反证法中最漂亮的构造,通常正对着反面假设的结构。有限列表让我们可以做“全部对象的乘积”,最简分数让“还有公因数”变成矛盾,最大对象让“再加一”成为反击。做题时先问反设送来了什么,再决定怎样构造。
同一道题有时能用多种方法。选择方法不是猜标准答案,而是比较哪一种写法能最快接上定义,并让读者清楚看到主线。
若目标是条件命题,先在草稿上并排写三行:
然后把每个符号换回题目语言。哪一行最容易进入定义,通常就是更好的入口。
例如,“若 是偶数,则 是奇数”的逆否命题是“若 是偶数,则 是奇数”。后者只需写 ,一行计算就能完成,显然比围着原结论硬推更自然。
正确证明还需要让人读懂。可以用下面四项自检。
证明不是一串孤立算式。式子负责压缩计算,文字负责说明逻辑。两者配合,读者才能检查每一步,也能学会这一步是怎样想到的。
要证明 ,却去证明 ,方向已经变了。修正办法是每次都做“交换后否定”:逆否命题必须从 出发,抵达 。
“每个对象都有性质”的否定是“至少有一个对象没有性质”,而不是“每个对象都没有性质”。反证开始前,把否定句完整写成自然语言,往往比盯着符号更不容易错。
“ 很大”“结果不好看”“这似乎不合理”都不是矛盾。有效矛盾必须能指出两端,例如 互素却又同被 整除,或 最大却存在 。
反证法能使用题目条件、定义和已经证明的事实,不能因为“反正最后结论是真的”就提前使用结论。检查每一步依据,若某一步只能由目标结论得到,证明就是循环的。
给出候选对象后还要验证全部性质。题目说“存在一个同时满足 与 的对象”,证明就必须分别核对 与 。
“我找到一个”排除不了第二个。修正办法是另起一段:设 都满足条件,然后证明 。
检查 能帮助发现规律,却不能证明对所有正整数都成立。这个误区也正好把我们带到下一章:当命题是一整族 时,需要一种能覆盖无限多个整数的推进方法。
下面的练习不只要求得到结论,也要求在第一句话说明为什么选择该方法。
证明:若整数 满足 是偶数,则 是偶数。
证明:正有理数中没有最小的一个。
证明: 是无理数。可以使用事实:若 ,则 。
证明:对每个实数 ,存在唯一实数 ,使得 。
有人写道:“把前 个素数相乘再加 ,得到的数一定是素数,所以总能得到下一个素数。”这句话哪里过强?正确结论是什么?
把下面命题的否定写成不含“并非”的形式:
这一章的几种方法看似分散,实际都在训练同一个动作:先看清目标的逻辑形状,再把它改写成能操作的任务。
逆否证明把 换成等价的 ;反证法把目标失败的情形具体化,再让它撞上定义或已知事实;存在唯一性把一句话拆成“至少一个”和“至多一个”。方法本身不替我们完成推理,它只把真正需要完成的工作摆到桌面上。
下一章要处理的目标是
全部成立。逐个检查永远检查不完,数学归纳法会再次进行“目标拆解”:先证明起点,再证明任意一项成立都能推动下一项成立。到那时,仍然要先说明路线、准确写出假设,并让每一步有明确依据——只是这一次,证明的入口会从“否定目标”变成“建立一条可以不断向前传递的链”。
使用定义和已知事实,推出 。推理到这里,逆否命题已经完成。
最后指出逆否命题与原命题等价,因此 成立。
平方并整理:
再把偶数部分提出 :
因为 仍是整数, 具有“ 乘一个整数再加 ”的形式,所以 是奇数。
逆否命题成立,因此原命题成立:若 是偶数,则 是偶数。
推出两件不能同时成立的事,并明确指出冲突的两端分别是什么。
说明矛盾否定的是反面假设 ,因此原命题 成立。
但
这给出了一个比最大整数还大的整数,与 的定义冲突。
因此“存在最大的整数”这个反面假设不成立,所以不存在最大的整数。
并且 与 没有大于 的公因数,也就是这个分数已经最简。
两边平方并清除分母:
因而
右边是 的倍数,所以 是偶数,进而 是偶数。
既然 是偶数,可写成 ,其中 是整数。代回上一等式:
化简得
所以 是偶数,进而 也是偶数。
现在 与 都能被 整除,因此它们有公因数 。这与“ 已经最简”矛盾。
产生矛盾的是“ 是有理数”这一反面假设,所以该假设为假。于是 是无理数。
那么 都是无理数,而 是有理数。
若 是无理数,取
这时 都是无理数,并且
所以 是有理数。
两种情况覆盖了 的全部可能,而且每种情况都能给出符合要求的 。因此这样的无理数确实存在。
把 和 展开成可比较的等式、集合关系或其他具体条件。
推出 ,从而说明两个候选对象不可能真正不同。
有定义。代入可得
所以至少有一个实数解。
再证唯一。设实数 都是解,则
且
两个等式左边都等于 ,所以
两边减去 ,得到 。由于 ,两边除以 ,得到 。
任意两个解都相等,所以解至多一个。结合前面的存在性,方程有唯一实数解。
构造
显然 。
对任意 ,乘积 能被 整除。因此 除以 的余数是 ,也就是
所以清单中的任何素数都不整除 。
每个大于 的整数都有素因子,所以 有某个素因子 。按“清单已经列出全部素数”的假设, 必须等于某个 ;但上一步证明了没有 整除 。这两句话不能同时成立。
矛盾来自“素数只有有限多个”的假设,因此该假设为假。素数有无限多个。
| 构造或非构造存在证明 |
| 能否给出候选并验证;若不能,能否用分类或排除保证存在 |
| 存在与唯一分开证明 | 先找到一个,再证明任意两个候选相同 |
所以 是奇数。逆否命题成立,因此若 是偶数,则 是偶数。
这与 是最小正有理数矛盾。因此正有理数中没有最小的一个。
因此 ,从而 。写 ,代回得到
所以
于是 ,进而 。这说明 同有公因数 ,与分数最简矛盾。因此 是无理数。
补充说明所用事实:整数除以 的余数只有 ,平方后的余数分别是 。所以平方能被 整除时,原数只能余 ,也就能被 整除。
且
因此 ,两边同时加 ,得到 。任意两个解都相同,所以解至多一个。结合存在性,满足条件的实数 唯一。
这也再次说明,存在唯一性本来就是“至少一个”与“至多一个”的合并。