上一章把命题和连接词放进了真值表。本章只盯住其中最容易误读的连接词:条件命题。
数学里的“如果 ,那么 ”不等于日常话里的承诺、因果或时间顺序。它首先是一种真值关系:只要没有出现“ 已经为真,而 却为假”的反例,命题 就没有被推翻。
这一点开始会显得别扭,但它很快会变得有用。证明一个定理、检查一段程序的前置条件、判断一次论证是否有效,本质上都在追踪:哪些条件真的推出了哪些结论,哪些只是看起来像推出。
条件命题写作 ,读作“如果 ,那么 ”。其中 叫前件, 叫后件。
它的真值表是:
真正要记住的不是四行表,而是这一句: 只有在 真而 假时为假。

例如,命题“如果一个整数是 的倍数,那么它是偶数”可以写成:
其中 是“这个整数是 的倍数”, 是“这个整数是偶数”。要推翻它,必须找到一个整数既是 的倍数,又不是偶数。找不到这样的数,所以这个条件命题是真的。
如果一个整数不是 的倍数,例如 ,它仍然可能是偶数。这不会推翻命题。条件命题没有说“只有 的倍数才是偶数”,也没有说“不是 的倍数就不是偶数”。
条件命题最常见的误读,是把 听成“ 是 的唯一原因”。数学里并没有这个意思。 只说:一旦 成立, 不能失败。
前件为假时, 被判为真,这常被称为“空真”。这个名字听起来抽象,其实判断方式很朴素:你说“如果今天提交作业,我就把文件名写对”。若你今天根本没有提交作业,就没有出现“提交了却文件名写错”的违背情形。
数学命题也按这种方式运行。对所有整数 ,命题“如果 是 的倍数,那么 是偶数”在 时没有被验证出新内容,但也没有被推翻。它只在“是 的倍数却不是偶数”的数上会失败。
要否定 ,不是写成“如果非 ,那么非 ”。真正的否定是:
也就是“ 成立,但 不成立”。这正好对应真值表里唯一使命题为假的那一行。
“如果下雨,地面会湿”的否定不是“如果不下雨,地面不会湿”。后一句是另一个条件命题。原命题的否定应是:“下雨了,并且地面没有湿。”
下面的交互可以把 和 的真假逐个切换。重点看三列:、、。它们每一行的结果都相同。
从 出发,可以改写出三个相关命题:
这四个命题不是互相等价。等价关系只有两组:

用一个数学例子看得更清楚。
原命题:如果 是 的倍数,那么 是偶数。
逆命题:如果 是偶数,那么 是 的倍数。
否命题:如果 不是 的倍数,那么 不是偶数。
逆否命题:如果 不是偶数,那么 不是 的倍数。
原命题是真的。逆否命题也是真的。逆命题是假的,因为 是偶数但不是 的倍数。否命题也是假的,因为 不是 的倍数但仍然是偶数。
设命题为:“如果整数 能被 整除,那么 能被 整除。”
先分清前件和后件。前件 是“ 能被 整除”,后件 是“ 能被 整除”。
证明 时,可以改证 。这不是换了一个较弱结论,而是在证明一个等价命题。
如果 为真,我们说:
是 的充分条件。
是 的必要条件。
这两句话说的是同一个箭头,只是视角不同。 足够推出 ,所以 对 来说是充分的;没有 就不可能有 ,所以 对 来说是必要的。

把“是 的倍数”看成集合 ,把“是偶数”看成集合 。所有 的倍数都在偶数集合里,所以 。因此,“是 的倍数”是“是偶数”的充分条件;“是偶数”是“是 的倍数”的必要条件。
但“是偶数”不是“是 的倍数”的充分条件。 是偶数,却不是 的倍数。
中文和英文教材里常见的几种表达,方向很容易弄反。
“只有如果”最值得慢读。 只有如果 ,意思是 发生时 必须发生,所以还是 。
判断充分和必要时,可以先写箭头。只要写出 ,就立刻得到: 是 的充分条件, 是 的必要条件。不要先凭语感判断。
如果两个方向都成立:
就写作:
读作“ 当且仅当 ”。这时 是 的充分必要条件, 也是 的充分必要条件。
例如,对整数 ,命题“ 是偶数”与“存在整数 ,使得 ”是充要关系。这不是两个相似说法,而是一个定义层面的等价。
下面的练习工具专门训练方向感。每题先把两个条件看成 和 ,再判断 对 是充分、必要、充要,还是都不是。
逻辑等价的意思是:在每一种真值安排下,两个命题的真值都相同。写作 。
条件命题有两个特别常用的等价变形:
第一条把“如果那么”改成“或者”。它说明 为真,等价于“ 不成立,或者 成立”。只有 成立且 不成立时,这个析取才会失败。
第二条是逆否等价。它在证明里尤其常用,因为有些命题从后件的否定出发更容易。

把“如果 是整数且 ,那么 ”改写为不含箭头的形式。
先设 为“ 是整数且 ”,设 为“”。原命题是 。
证明:如果整数 是偶数,那么整数 是偶数。
直接从 是偶数推出 是偶数,需要知道平方的结构。用逆否命题更短:如果 不是偶数,那么 不是偶数。
证明逆否命题。假设 不是偶数。对整数来说,这等价于 是奇数。
由奇数定义,存在整数 ,使得 。

一个推理形式有效,意思是:只要前提全真,结论就不可能为假。它不保证前提本身真的发生;它保证的是“从这些前提出发,结论跟得上”。
本章先掌握四条常见规则。

判断下面推理是否有效,并指出使用了哪条规则。
前提一:如果一个数能被 整除,那么它能被 整除。
前提二: 能被 整除。
结论: 能被 整除。
令 表示“ 能被 整除”,令 表示“ 能被 整除”。
再看一个否定后件的例子。
前提一:如果这个程序输入通过校验,那么它会进入计算步骤。
前提二:它没有进入计算步骤。
结论:这个程序输入没有通过校验。
这里的形式是 。只要第一条前提确实说的是充分条件,这个推理有效。
推理规则关心形式。把“程序输入”“整数整除”“图形性质”换掉,只要形式仍然是 ,它就是同一条规则。
下面的检查器会混合有效规则和常见谬误。做题时先把前提翻译成符号,再看它是哪一种形式。
无效推理最麻烦的地方,是它们长得很像有效规则。下面两种尤其常见。
肯定后件的形式是:
它无效,因为 可能由别的原因成立。
例子:
如果一个整数是 的倍数,那么它是偶数。
是偶数。
所以 是 的倍数。
这个结论是假的。问题不在第一条前提,而在于“偶数”这个后件有很多来源,不只来自“ 的倍数”。
否定前件的形式是:
它也无效,因为 不成立,并不意味着 没有别的成立方式。
例子:
如果一个整数是 的倍数,那么它是偶数。
不是 的倍数。
所以 不是偶数。
这个结论也是假的。 不是 的倍数,但它仍然是偶数。

看到 时,不要自动反向,也不要自动同时否定两边。能直接使用的有效规则是肯定前件和否定后件;想反向使用,必须先证明 也成立。
证明中的每一步都应有依据。这个依据可能是定义、已知定理、代数变形,也可能是一条推理规则。初学证明时,可以把推理写得稍慢一些,先让箭头方向清楚。
一个实用检查顺序是:
先把要证明的结论写成条件命题、双条件命题,或带量词的命题。不要急着展开计算。
若目标是 ,先考虑直接证明:假设 ,看能不能推出 。
证明:整数 是偶数,当且仅当 是偶数。
这个命题有两个方向。
先证“如果 是偶数,那么 是偶数”。设 ,其中 是整数。于是 ,所以 是偶数。
本章的核心可以压缩成四句话:
练习一:设命题为“如果四边形是正方形,那么它是矩形”。写出它的逆命题、否命题和逆否命题,并判断真假。
逆命题是“如果四边形是矩形,那么它是正方形”,为假。否命题是“如果四边形不是正方形,那么它不是矩形”,为假。逆否命题是“如果四边形不是矩形,那么它不是正方形”,为真。原命题也为真,且与逆否命题等价。
练习二:把“ 是 的倍数”记为 ,把“ 是 的倍数”记为 。判断 是 的充分条件、必要条件、充要条件,还是都不是。
成立,因为 的倍数一定是 的倍数;但 不成立,例如 是 的倍数但不是 的倍数。所以 是 的充分条件,不是必要条件; 是 的必要条件。
练习三:判断推理形式是否有效:“如果 是质数且 ,那么 是奇数。 不是质数且 。所以 不是奇数。”
无效。形式是 ,属于否定前件。即使一个数不是大于 的质数,它仍然可能是奇数,例如 。
练习四:证明:如果整数 是奇数,那么 是奇数。
设 ,其中 是整数。则 。因为 是整数,所以 是奇数。
| 否命题 | 如果非 ,那么非 |
| 逆否命题 | 如果非 ,那么非 |
原命题是 。它为真,因为 ,能被 整除的整数一定能被 整除。
逆命题是 ,也就是“如果 能被 整除,那么 能被 整除”。它为假,反例是 。
否命题是 ,也就是“如果 不能被 整除,那么 不能被 整除”。它为假,反例仍可取 。
逆否命题是 ,也就是“如果 不能被 整除,那么 不能被 整除”。它为真,并且与原命题等价。
| 有 必须有 |
| 如果 | 有 就有 |
| 当且仅当 | 两个方向都成立 |
使用等价式 ,得到“ 不成立,或者 成立”。
把 和 放回原句,得到:“ 不是整数或 ,或者 ”。这里对 的否定用到了德摩根律。
平方得到 。
因为 是整数,所以 是奇数,也就是 不是偶数。
逆否命题成立,所以原命题“如果 是偶数,那么 是偶数”成立。
| 否定后件 |
| 若 推出 ,且 不成立,则 不成立 |
| 假言三段论 | 条件命题可以连成链 |
| 析取三段论 | 两者至少一真,排除一个,剩下一个为真 |
前提一是 ,前提二是 。
由肯定前件,可以推出 。所以这个推理有效。
如果直接证明不顺,考虑逆否证明:假设 ,尝试推出 。
如果目标是 ,把它拆成 和 两个方向分别证明。
每一步只使用已经成立的前提和有效推理规则。不要把想要的结论当成已经得到的结论。
再证“如果 是偶数,那么 是偶数”。这一方向可用逆否证明:若 不是偶数,则 是奇数。
设 ,则 ,所以 是奇数,不是偶数。
两个方向都成立,因此 是偶数当且仅当 是偶数。