自在学

我们与你共同进步

  • 分类课程
  • 文章
  • 工作台
  • 订阅

  • 关于我们
  • 隐私政策
  • 使用条款

探索

  • 分类课程
  • 文章
  • 工作台
  • 订阅

网站信息

  • 关于我们
  • 隐私政策
  • 使用条款

加入社区

自在学学习社区微信二维码

微信扫码,交流学习

株洲市自在学教育科技有限公司© 2025 - 2026 版权所有

© 2025 - 2026 株洲市自在学教育科技有限公司 版权所有

湘公网安备43020302000292号|湘ICP备2025148919号-1
分类课程工作台文章订阅
分类课程工作台文章价格

离散数学与证明 I

  1. 01离散数学与证明研究什么
  2. 02命题逻辑:语句、连接词与真值表
  3. 03条件命题、等价变形与推理规则
  4. 04谓词逻辑与量词
  5. 05集合语言与集合证明
  6. 06关系与函数:把集合中的元素连起来
  7. 07证明方法 I:直接证明、分类讨论与反例
  8. 08证明方法 II:逆否、反证与存在唯一性
  9. 09数学归纳法 I:公式、整除与不等式
  10. 10强归纳、良序原理与递归定义
  11. 11递推关系与递归过程
  12. 12计数原理、排列组合与二项式系数
  13. 13容斥原理、鸽巢原理与组合论证
  14. 14生成函数与离散概率前奏
  15. 15图论语言:图、度数、路径与连通性
  16. 16树、生成树与递归结构
  17. 17二分图、匹配、平面图与着色入门
  18. 18综合建模:从证明到离散结构应用
正在加载课程章节内容
课程数学离散数学与证明 I条件命题、等价变形与推理规则

条件命题、等价变形与推理规则

上一章里,我们已经会把复合命题拆成命题变元和连接词,也会用真值表逐行计算真假。现在要把其中最容易“听错方向”的连接词单独拿出来:条件命题。

它难的地方不在符号 →\to→,而在日常语言给我们留下的习惯。平时说“如果下雨,我就带伞”,我们会联想到天气导致行为、事情发生的先后,甚至一个人的承诺是否可靠。数学暂时把这些背景全部拿掉,只问一件很窄的事:有没有出现前件已经成立、后件却失败的情况?

这一步看起来像是在抠字眼,其实后面的证明都靠它。直接证明是在假设前件以后寻找后件;逆否证明是在后件失败时排除前件;推理规则是在检查一条结论是否真的被前提锁定。把这条箭头读准,证明就不再是一串突然出现的句子,而会变成一条能逐步核对的路线。


条件命题到底承诺了什么

条件命题写作 P→QP \to QP→Q,读作“如果 PPP,那么 QQQ”。PPP 叫前件或假设,QQQ 叫后件或结论。

先用一句话抓住它的意思:只要 PPP 成立,QQQ 就必须成立。于是,要证明这句话不守信用,必须同时看到两件事:PPP 确实发生了,QQQ 却没有发生。

真值表正是在记录这四种可能:

PPPQQQP→QP \to QP→Q判断理由
真真真要求被触发,结果也做到
真假假要求被触发,结果却失败
假真真要求没有被触发,没有违背
假假真要求没有被触发,仍没有违背
条件命题 P 到 Q 的四种真值情况,其中只有 P 真且 Q 假时命题为假
四种赋值中,只有“前件真、后件假”会让条件命题失败。

用“找违约”代替死背表格

考虑命题:“如果整数 nnn 是 444 的倍数,那么 nnn 是偶数。”令

P:4∣nP: 4 \mid nP:4∣n Q:2∣nQ: 2 \mid nQ:2∣n

原命题就是 P→QP \to QP→Q。若要推翻它,我们得找出一个既满足 4∣n4\mid n4∣n、又满足 2∤n2\nmid n2∤n 的整数。可一旦 n=4kn=4kn=4k,就有 n=2(2k)n=2(2k)n=2(2k),因此这样的整数不存在。

这里要分清“证明”和“试了几个数”。检查 4,8,124,8,124,8,12 都是偶数,只能增加信心,不能覆盖所有整数;写出 n=4k=2(2k)n=4k=2(2k)n=4k=2(2k),才说明任何 444 的倍数都不会成为违背条件的例子。

再取 n=6n=6n=6。这时前件“nnn 是 444 的倍数”为假,后件“nnn 是偶数”为真,所以整句仍为真。666 没有满足前件,当然不能拿它来反驳“满足前件以后会怎样”。

P→QP \to QP→Q 没有说 PPP 是 QQQ 的原因,也没有说 PPP 是让 QQQ 成立的唯一办法。它只排除 P∧¬QP \land \neg QP∧¬Q 这一种组合。

前件为假为什么判真

初学时最别扭的是后两行:前件为假,无论后件真假,P→QP\to QP→Q 都为真。这叫空真。

还是看一句承诺:“如果我今天提交作业,那么文件名里会写学号。”如果今天确实提交了,却没写学号,承诺失败;如果今天根本没提交,单凭文件名是否出现学号,无法说这句条件承诺被违背。数学把“没有出现违背情形”统一记为真。

这样规定还有一个很实用的结果。假设一个系统有十二条规则:在条件 CiC_iCi​ 出现时执行动作 AiA_iAi​。某次运行只有 C2C_2C2​ 和 C5C_5C5​ 出现,系统正确执行了 A2A_2A2​ 和 A5A_5A5​。我们希望说十二条规则都被遵守了,而不是说其余十条规则都失败了。把假前件的蕴含判为真,正好表达“未触发的规则没有被违反”。

空真不表示后件被前件“证明”了。它只是在判断整个条件命题的真值:这一次赋值没有落入唯一的失败行。

下面可以逐个切换 PPP 与 QQQ。先故意切到“PPP 真、QQQ 假”,再比较另外三种状态,条件命题的规则会比背表格直观得多。

条件命题的否定不是另一个“如果”

否定一句话,是要准确描述它什么时候失败。P→QP\to QP→Q 唯一的失败情形是 PPP 真而 QQQ 假,所以

¬(P→Q)≡P∧¬Q\neg(P \to Q) \equiv P \land \neg Q¬(P→Q)≡P∧¬Q

例如,“如果下雨,那么地面湿”的否定是“下雨了,并且地面不湿”。它不是“如果不下雨,那么地面不湿”;后一句仍是一个条件命题,而且谈的是另一种方向。

这条等价式也是反例为什么有用的根源。一个全称条件命题声称所有研究对象都不会出现 P∧¬QP\land\neg QP∧¬Q。只要找到一个对象同时满足 PPP 与 ¬Q\neg Q¬Q,整句就被推翻。

否定箭头时,不要把两边分别加上否定号。¬(P→Q)\neg(P\to Q)¬(P→Q) 是 P∧¬QP\land\neg QP∧¬Q,不是 ¬P→¬Q\neg P\to\neg Q¬P→¬Q。


逆命题、否命题与逆否命题

从 P→QP\to QP→Q 出发,交换两端、否定两端,会得到三个相关命题。名字容易混,最稳妥的办法是先做符号操作,再贴名称。

名称形式做了什么
原命题P→QP \to QP→Q保持原方向
逆命题Q→PQ \to PQ→P交换前件、后件
否命题¬P→¬Q\neg P \to \neg Q¬P→¬Q两边同时否定
逆否命题¬Q→¬P\neg Q \to \neg P¬Q→¬P交换并同时否定

真正的等价关系只有两组:

P→Q≡¬Q→¬PP \to Q \equiv \neg Q \to \neg PP→Q≡¬Q→¬P Q→P≡¬P→¬QQ \to P \equiv \neg P \to \neg QQ→P≡¬P→¬Q
原命题、逆命题、否命题与逆否命题的关系图,突出原命题与逆否命题等价、逆命题与否命题等价
交换与否定会产生四种形式;对角线上的两组分别等价。

为什么原命题与逆否命题等价

不要只记“原命题等价于逆否命题”,我们顺着失败情形看一次。

原命题 P→QP\to QP→Q 失败,需要 PPP 真、QQQ 假。逆否命题 ¬Q→¬P\neg Q\to\neg P¬Q→¬P 失败,需要 ¬Q\neg Q¬Q 真、¬P\neg P¬P 假,翻回去仍然是 QQQ 假、PPP 真。两者在同一个情形失败,其余情形同时为真,所以真值始终一致。

也可以用等价变形写成:

P→Q≡¬P∨QP \to Q \equiv \neg P \lor QP→Q≡¬P∨Q

而

¬Q→¬P≡¬(¬Q)∨¬P≡Q∨¬P≡¬P∨Q\neg Q \to \neg P \equiv \neg(\neg Q) \lor \neg P \equiv Q \lor \neg P \equiv \neg P \lor Q¬Q→¬P≡¬(¬Q)∨¬P≡Q∨¬P≡¬P∨Q

最后只用了双重否定和析取交换律。两个式子都化到了同一个形状。

一个反例把“逆”和“否”一起拆开

继续使用“如果 nnn 是 444 的倍数,那么 nnn 是偶数”。四种形式分别是:

  • 原命题:若 4∣n4\mid n4∣n,则 2∣n2\mid n2∣n。
  • 逆命题:若 2∣n2\mid n2∣n,则 4∣n4\mid n4∣n。
  • 否命题:若 4∤n4\nmid n4∤n,则 2∤n2\nmid n2∤n。
  • 逆否命题:若 2∤n2\nmid n2∤n,则 4∤n4\nmid n4∤n。

原命题为真,逆否命题也为真。取 n=6n=6n=6,逆命题的前件为真而后件为假,所以逆命题为假;同一个 666 也使否命题的前件为真、后件为假,因此否命题为假。

这不是巧合。逆命题与否命题本来就等价,因此能推翻其中一个的对象,也会推翻另一个。

写四种命题时的可靠顺序

设原命题是:“如果整数 nnn 能被 666 整除,那么 nnn 能被 333 整除。”

先只提取两个完整命题。令 PPP 表示“6∣n6\mid n6∣n”,令 QQQ 表示“3∣n3\mid n3∣n”。暂时不要在中文句子里直接换词。

逆命题先交换位置,写成 Q→PQ\to PQ→P:若 3∣n3\mid n3∣n,则 6∣n6\mid n6∣n。取 n=3n=3n=3 可知它为假。

否命题只否定两边,写成 ¬P→¬Q\neg P\to\neg Q¬P→¬Q:若 6∤n6\nmid n6∤n,则 3∤n3\nmid n3∤n。n=3n=3n=3 同样是反例。

逆否命题既交换又否定,写成 ¬Q→¬P\neg Q\to\neg P¬Q→¬P:若 3∤n3\nmid n3∤n,则 6∤n6\nmid n6∤n。它与原命题等价,因此为真。

证明 P→QP\to QP→Q 时改证 ¬Q→¬P\neg Q\to\neg P¬Q→¬P,证明目标没有变弱。逆否命题是同一个逻辑内容的另一种写法。


充分条件、必要条件与双条件

如果 P→QP\to QP→Q 为真,我们可以从两个方向描述同一支箭头:

  • PPP 是 QQQ 的充分条件,因为有了 PPP 就足以得到 QQQ。
  • QQQ 是 PPP 的必要条件,因为缺少 QQQ 时 PPP 不可能成立。

“充分”和“必要”不是两条箭头。它们是对 P→QP\to QP→Q 的两种读法。

集合 P 完全包含在集合 Q 内,表示 P 是 Q 的充分条件,Q 是 P 的必要条件
把满足条件的对象看成集合:若 P⊆QP\subseteq QP⊆Q,进入 PPP 就一定进入 QQQ。

例如,在整数范围内,“是 444 的倍数”对应的集合包含在“是偶数”的集合中。因此,“是 444 的倍数”是“是偶数”的充分条件;“是偶数”是“是 444 的倍数”的必要条件。

但“是偶数”不充分,因为 666 是偶数而不是 444 的倍数。一个条件可以必要却不充分,也可以充分却不必要。

把自然语言先翻成箭头

方向最容易藏在“只要”“只有”“仅当”这些词里。不要靠语感抢答,先问:谁成立以后,谁必须跟着成立?

自然语言逻辑形式方向判断
如果 PPP,那么 QQQP→QP\to QP→QPPP 足以推出 QQQ
只要 PPP,就有 QQQP→QP\to QP→Q“只要”后面是充分条件
PPP 仅当 QQQP→QP\to QP→QPPP 成立必须有 QQQ
只有 QQQ,才有 PPPP→QP\to QP→QQQQ 是 PPP 的必要条件
PPP 当且仅当 QQQP↔QP\leftrightarrow QP↔Q两个方向都成立

例如,“只有完成身份验证,才能提交申请”。令 PPP 表示“可以提交申请”,QQQ 表示“完成身份验证”。真正的箭头是

P→QP \to QP→Q

它并没有说完成验证以后一定提交申请,所以不能反过来写成 Q→PQ\to PQ→P。

判断充分、必要的机械方法很可靠:先写出 P→QP\to QP→Q,再读成“PPP 对 QQQ 充分,QQQ 对 PPP 必要”。

当且仅当要求两个方向

双条件 P↔QP\leftrightarrow QP↔Q 为真,表示 PPP 与 QQQ 真值相同:要么都真,要么都假。它等价于两个条件命题同时成立:

P↔Q≡(P→Q)∧(Q→P)P \leftrightarrow Q \equiv (P \to Q) \land (Q \to P)P↔Q≡(P→Q)∧(Q→P)

也等价于“两者同时真,或者两者同时假”:

P↔Q≡(P∧Q)∨(¬P∧¬Q)P \leftrightarrow Q \equiv (P \land Q) \lor (\neg P \land \neg Q)P↔Q≡(P∧Q)∨(¬P∧¬Q)

因此,证明“PPP 当且仅当 QQQ”不能只证一个方向。只证明 P→QP\to QP→Q,最多说明 PPP 充分、QQQ 必要;还差 Q→PQ\to PQ→P,才能得到充要关系。

下面的分类练习不会让你凭词语猜答案。每题都显示 A→BA\to BA→B 和 B→AB\to AB→A 是否成立,可以用它训练“先看箭头,再叫名称”的习惯。


等价变形:把命题换成更好用的形状

两个命题逻辑等价,意思是:无论其中的命题变元怎样取真值,它们都同真同假。写作 A≡BA\equiv BA≡B。

这里的“等价”比“碰巧都为真”强得多。某次取值下 AAA 与 BBB 都真,只说明这一行相同;逻辑等价要求真值表的每一行都相同。所以,等价变形可以在任何论证中把一边替换成另一边,而不会改变命题内容。

条件命题的三种常用面孔

最常用的第一条是消去箭头:

P→Q≡¬P∨QP \to Q \equiv \neg P \lor QP→Q≡¬P∨Q

右边说“前件不成立,或者后件成立”,正好排除了 P∧¬QP\land\neg QP∧¬Q。再结合逆否等价,我们得到:

P→Q≡¬P∨Q≡¬Q→¬PP \to Q \equiv \neg P \lor Q \equiv \neg Q \to \neg PP→Q≡¬P∨Q≡¬Q→¬P
手绘白板展示 P 到 Q、非 P 或 Q、非 Q 到非 P 三种等价形式
三个式子真值完全一致;选择哪一种,取决于哪种形状更方便继续推理。

消去箭头以后,否定条件命题也能一步一步推出来:

¬(P→Q)≡¬(¬P∨Q)≡¬¬P∧¬Q≡P∧¬Q\begin{aligned} \neg(P \to Q) &\equiv \neg(\neg P \lor Q) \\ &\equiv \neg\neg P \land \neg Q \\ &\equiv P \land \neg Q \end{aligned}¬(P→Q)​≡¬(¬P∨Q)≡¬¬P∧¬Q≡P∧¬Q​

第二步是德摩根律,第三步是双重否定。这比单独背一个结论更牢靠:忘记时,可以重新推一遍。

一组常用的命题代数

真值表能检验等价,但变元一多,行数会按 2n2^n2n 增长。三个变元有 888 行,十个变元已有 102410241024 行。实际变形时,我们通常像做代数那样,一次使用一条已经确认的等价律。

名称等价式
双重否定¬¬P≡P\neg\neg P\equiv P¬¬P≡P
交换律P∧Q≡Q∧PP\land Q\equiv Q\land PP∧Q≡Q∧P,P∨Q≡Q∨PP\lor Q\equiv Q\lor PP∨Q≡Q∨P
结合律(P∧Q)∧R≡P∧(Q∧R)(P\land Q)\land R\equiv P\land(Q\land R)(P∧Q)∧R≡P∧(Q∧R),析取同理
幂等律P∧P≡PP\land P\equiv PP∧P≡P,P∨P≡PP\lor P\equiv PP∨P≡P
同一律P∧T≡PP\land \mathrm{T}\equiv PP∧T≡P,P∨F≡PP\lor \mathrm{F}\equiv PP∨F≡P
支配律P∨T≡TP\lor \mathrm{T}\equiv \mathrm{T}P∨T≡T,P∧F≡FP\land \mathrm{F}\equiv \mathrm{F}P∧F≡F
互补律P∨¬P≡TP\lor\neg P\equiv \mathrm{T}P∨¬P≡T,P∧¬P≡FP\land\neg P\equiv \mathrm{F}P∧¬P≡F
德摩根律¬(P∧Q)≡¬P∨¬Q\neg(P\land Q)\equiv\neg P\lor\neg Q¬(P∧Q)≡¬P∨¬Q,¬(P∨Q)≡¬P∧¬Q\neg(P\lor Q)\equiv\neg P\land\neg Q¬(P∨Q)≡¬P∧¬Q
分配律P∧(Q∨R)≡(P∧Q)∨(P∧R)P\land(Q\lor R)\equiv(P\land Q)\lor(P\land R)P∧(Q∨R)≡(P∧Q)∨(P∧R)
对偶分配律P∨(Q∧R)≡(P∨Q)∧(P∨R)P\lor(Q\land R)\equiv(P\lor Q)\land(P\lor R)P∨(Q∧R)≡(P∨Q)∧(P∨R)
吸收律P∨(P∧Q)≡PP\lor(P\land Q)\equiv PP∨(P∧Q)≡P,P∧(P∨Q)≡PP\land(P\lor Q)\equiv PP∧(P∨Q)≡P

逻辑代数与普通数的代数长得相似,却不能完全照搬。尤其是“或”也能对“且”分配:

P∨(Q∧R)≡(P∨Q)∧(P∨R)P \lor (Q \land R) \equiv (P \lor Q) \land (P \lor R)P∨(Q∧R)≡(P∨Q)∧(P∨R)

普通加法对乘法没有对应规律,所以不要只凭外形猜等价式。拿不准时,用真值表检查。

范式:把任意公式整理成统一结构

命题代数还有一个很实用的目标:把复杂公式整理成只含“且、或、非”的标准形状。命题变元或它的否定叫文字,例如 PPP、¬Q\neg Q¬Q 都是文字。

析取范式是“若干合取项用或连接”。每个合取项内部只有文字,例如:

(P∧Q)∨(P∧¬R)(P\land Q)\lor(P\land\neg R)(P∧Q)∨(P∧¬R)

合取范式则把结构反过来,是“若干析取项用且连接”:

(P∨Q)∧(¬P∨R)(P\lor Q)\land(\neg P\lor R)(P∨Q)∧(¬P∨R)

真值表解释了为什么任何命题公式都能写成这两类范式。构造析取范式时,逐个查看公式为真的行:为每一行写一个只在该行成立的合取项,再把这些合取项用“或”连起来。构造合取范式时,逐个查看公式为假的行:为每一行写一个只在该行失败的析取项,再把这些析取项用“且”连起来。

例如,A∧(B∨C)A\land(B\lor C)A∧(B∨C) 只在 AAA 真且 B,CB,CB,C 至少一个为真时成立。从三条真值行直接读出的完整析取形式是:

(A∧B∧C)∨(A∧B∧¬C)∨(A∧¬B∧C)(A\land B\land C) \lor(A\land B\land\neg C) \lor(A\land\neg B\land C)(A∧B∧C)∨(A∧B∧¬C)∨(A∧¬B∧C)

再使用分配律和吸收律,可以把它缩短为:

(A∧B)∨(A∧C)(A\land B)\lor(A\land C)(A∧B)∨(A∧C)

原式 A∧(B∨C)A\land(B\lor C)A∧(B∨C) 本身已经是合取范式。范式不一定是最短写法,它的价值是提供统一结构:比较两个公式、设计逻辑电路或把约束交给求解程序时,统一形状往往比表面简短更重要。

真值表给出一种保证能完成的范式构造法,等价律则可能更快地得到简洁结果。前者稳定,后者依赖你是否看得出合适的变形路线。

例题:把一个条件拆成两个条件

证明下面的等价式:

P→(Q∧R)≡(P→Q)∧(P→R)P \to (Q \land R) \equiv (P \to Q) \land (P \to R)P→(Q∧R)≡(P→Q)∧(P→R)

我们先想它为什么合理。左边说:只要 PPP 发生,QQQ 和 RRR 都要发生。那自然等于同时提出两个要求:“PPP 发生就有 QQQ”以及“PPP 发生就有 RRR”。正式变形如下:

P→(Q∧R)≡¬P∨(Q∧R)≡(¬P∨Q)∧(¬P∨R)≡(P→Q)∧(P→R)\begin{aligned} P \to (Q \land R) &\equiv \neg P \lor (Q \land R) \\ &\equiv (\neg P \lor Q) \land (\neg P \lor R) \\ &\equiv (P \to Q) \land (P \to R) \end{aligned}P→(Q∧R)​≡¬P∨(Q∧R)≡(¬P∨Q)∧(¬P∨R)≡(P→Q)∧(P→R)​

第一、三步消去或恢复箭头,第二步使用析取对合取的分配律。每一行都与上一行等价,所以整条变形链可以双向使用。

例题:否定一串规则

设有两条规则 P→QP\to QP→Q 与 Q→RQ\to RQ→R。要说“这两条规则没有同时被遵守”,我们否定它们的合取:

¬((P→Q)∧(Q→R))≡¬(P→Q)∨¬(Q→R)≡(P∧¬Q)∨(Q∧¬R)\begin{aligned} \neg\bigl((P\to Q)\land(Q\to R)\bigr) &\equiv \neg(P\to Q)\lor\neg(Q\to R) \\ &\equiv (P\land\neg Q)\lor(Q\land\neg R) \end{aligned}¬((P→Q)∧(Q→R))​≡¬(P→Q)∨¬(Q→R)≡(P∧¬Q)∨(Q∧¬R)​

结果说得很具体:至少有一条规则出现了“前件成立、后件失败”。等价变形的价值就在这里——它能把一句抽象的“不满足规则”,改写成可以实际检查的失败状态。

等价、永真与可满足不要混在一起

一个公式在所有真值赋值下都为真,叫永真式,也叫有效公式。例如:

P∨¬PP \lor \neg PP∨¬P

一个公式只要在至少一种赋值下为真,就叫可满足。例如 P∧QP\land QP∧Q 不是永真式,但在 P,QP,QP,Q 都真时成立,因此可满足。

等价与永真之间有一条很方便的桥:FFF 与 GGG 等价,当且仅当 F↔GF\leftrightarrow GF↔G 是永真式。

F≡G⟺F↔G 在每一种赋值下都为真F \equiv G \quad\Longleftrightarrow\quad F \leftrightarrow G\text{ 在每一种赋值下都为真}F≡G⟺F↔G 在每一种赋值下都为真

这也告诉我们怎样否定“两个公式等价”:不必说明它们处处不同,只要找一组赋值,使一个真、另一个假,就足够了。


有效推理规则:结论有没有被前提锁定

逻辑等价是在比较两个公式是否同真同假;推理有效性是在问另一件事:当前提全部为真时,结论有没有可能为假?

设前提是 A1,A2,…,AkA_1,A_2,\ldots,A_kA1​,A2​,…,Ak​,结论是 CCC。推理有效,恰好表示下面这个条件命题是永真式:

(A1∧A2∧⋯∧Ak)→C(A_1\land A_2\land\cdots\land A_k)\to C(A1​∧A2​∧⋯∧Ak​)→C

换句话说,我们允许前提在某些赋值下为假,也允许结论在某些赋值下单独为假;唯一不允许的是“这一组前提全真,而结论假”。

“推理有效”不等于“每条前提都符合事实”。有效性只保证:如果前提全真,结论就不能假。要得到可靠结论,还要另外确认前提确实为真。

四条与条件命题直接相关的规则

规则前提与结论为什么有效
肯定前件P→Q, P ∴QP\to Q,\ P\ \therefore QP→Q, P ∴Q唯一失败行 P∧¬QP\land\neg QP∧¬Q 已被排除
否定后件P→Q, ¬Q ∴¬PP\to Q,\ \neg Q\ \therefore \neg PP→Q, ¬Q ∴¬P先换成逆否命题,再肯定前件
假言三段论P→Q, Q→R ∴P→RP\to Q,\ Q\to R\ \therefore P\to RP→Q, Q→R ∴P→R从 PPP 出发先到 QQQ,再到 RRR
析取三段论P∨Q, ¬P ∴QP\lor Q,\ \neg P\ \therefore QP∨Q, ¬P ∴Q至少一个为真,排除 PPP 后只剩 QQQ
四个手绘模块展示肯定前件、否定后件、假言三段论和析取三段论
规则名称可以忘,结构必须读准:前提摆在横线上方,能推出的结论写在下方。

肯定前件

前提一:“如果 nnn 能被 121212 整除,那么 nnn 能被 333 整除。”

前提二:“848484 能被 121212 整除。”

结论:“848484 能被 333 整除。”

令 PPP 表示“12∣8412\mid8412∣84”,QQQ 表示“3∣843\mid843∣84”。形式就是:

P→Q,P∴QP\to Q,\quad P\quad\therefore QP→Q,P∴Q

这条规则常被称为肯定前件。我们已经知道 PPP 成立,而 P→QP\to QP→Q 禁止 PPP 真、QQQ 假,所以 QQQ 只能为真。

否定后件

前提一:“如果输入通过校验,程序就进入计算步骤。”

前提二:“程序没有进入计算步骤。”

结论:“输入没有通过校验。”

形式是:

P→Q,¬Q∴¬PP\to Q,\quad \neg Q\quad\therefore \neg PP→Q,¬Q∴¬P

这条规则其实没有增加新魔法。把第一条前提换成等价的逆否命题 ¬Q→¬P\neg Q\to\neg P¬Q→¬P,再和 ¬Q\neg Q¬Q 一起使用肯定前件,就得到 ¬P\neg P¬P。

假言三段论

如果“服务器过载会触发限流”,而“触发限流会延迟部分请求”,那么“服务器过载会延迟部分请求”。

P→Q,Q→R∴P→RP\to Q,\quad Q\to R\quad\therefore P\to RP→Q,Q→R∴P→R

注意结论仍是条件命题。我们没有断言服务器已经过载,也没有断言请求已经延迟;我们只是把两段可靠的箭头接成了一段更长的箭头。

析取三段论

如果已经确认“文件在目录 AAA 或目录 BBB”,又确认“不在目录 AAA”,就可以推出“文件在目录 BBB”。

P∨Q,¬P∴QP\lor Q,\quad \neg P\quad\therefore QP∨Q,¬P∴Q

这条规则依赖第一条前提真的是逻辑上的“至少一个成立”。如果原句只是“我猜在 AAA 或 BBB”,那只是前提不可靠,不是规则本身失效。

几条基础组合规则

证明中还会频繁用到一些不带箭头的规则:

规则形式用法
合取消去P∧Q ∴PP\land Q\ \therefore PP∧Q ∴P已知两件事都真,可取其中任一件
合取引入P, Q ∴P∧QP,\ Q\ \therefore P\land QP, Q ∴P∧Q分别得到两件事,可把它们合在一起
析取引入P ∴P∨QP\ \therefore P\lor QP ∴P∨Q已知 PPP 真,则“至少 P,QP,QP,Q 之一真”
双条件消去P↔Q ∴P→QP\leftrightarrow Q\ \therefore P\to QP↔Q ∴P→Q双条件可以拆出任一方向

这些规则看起来很朴素,但正式证明里常常缺的就是其中一步。例如,要证明 R→(P∧Q)R\to(P\land Q)R→(P∧Q),分别推出 PPP 和 QQQ 后,还应明确用合取引入得到 P∧QP\land QP∧Q。

用“寻找坏的一行”检查规则

如果不确定一条推理是否有效,可以按下面的顺序检查:

先把自然语言中的完整命题分别记成 P,Q,RP,Q,RP,Q,R,不要把关键词相似当成逻辑结构相同。

强制让结论为假。有效性的唯一危险情形就是“前提全真、结论假”,所以从结论假开始找最快。

在结论为假的条件下,尝试让所有前提同时为真。如果做得到,就找到一个反赋值,推理无效。

如果无论怎样都不能让前提全真,就说明坏的一行不存在,推理有效。

例如,要检查肯定前件,先让结论 QQQ 为假。为了让前提 PPP 为真,只能取 PPP 真;但这会使另一个前提 P→QP\to QP→Q 为假。因此无法让两个前提全真而结论假,规则有效。

下面的检查器把有效规则和常见谬误混在一起。做题时不要先看结论听起来是否正确,先把前提和结论压成符号骨架。


两个最像正确推理的谬误

无效推理并不一定得出假结论。它真正的问题是:前提没有把结论锁住。某个例子里结论碰巧为真,也救不了一个无效的推理形式。

肯定后件:看见结果就倒推原因

肯定后件的形式是:

P→Q,Q∴PP\to Q,\quad Q\quad\therefore PP→Q,Q∴P

它和肯定前件只差一个字,却是无效的。P→QP\to QP→Q 允许 QQQ 通过别的条件成立。

例如:

如果一个整数是 444 的倍数,那么它是偶数。101010 是偶数。所以 101010 是 444 的倍数。

第一条前提真,第二条前提也真,结论却假。101010 直接给出了“前提全真、结论假”的反例。

哪怕把 101010 换成 121212,结论碰巧变真,这段推理的形式仍然无效。我们需要的是“一切满足前提的情况都保住结论”,不能靠刚好猜对一次。

否定前件:一个办法失效就否定结果

否定前件的形式是:

P→Q,¬P∴¬QP\to Q,\quad \neg P\quad\therefore \neg QP→Q,¬P∴¬Q

它和否定后件也很像,但方向错了。PPP 不成立,只能说明这条通往 QQQ 的路没有启用,不能说明 QQQ 没有别的成立方式。

例如:

如果一个整数是 444 的倍数,那么它是偶数。666 不是 444 的倍数。所以 666 不是偶数。

前两句都真,结论假。问题恰好在于把原命题误当成了否命题。

手绘警示对照图展示肯定后件和否定前件两种无效推理
肯定后件是在偷用逆命题,否定前件是在偷用否命题;原命题并不保证这两个方向。

为什么这两种错误总让人觉得顺耳

日常表达经常省略背景。有人说“如果刷卡成功,门会开”,听者可能自动补成“门只会因为刷卡成功而开”。一旦补上“只有这一种原因”,逆命题也成立,整句话就变成双条件。但原来的 P→QP\to QP→Q 并没有包含这层信息。

所以,遇到肯定后件或否定前件时,不要争论故事是否合理,直接问:我们是否另有前提 Q→PQ\to PQ→P?如果有,便能合法反向;如果没有,就只能停在原箭头上。

看到 P→QP\to QP→Q 后,不能自动得到 Q→PQ\to PQ→P,也不能自动得到 ¬P→¬Q\neg P\to\neg Q¬P→¬Q。能保证等价的是逆否命题 ¬Q→¬P\neg Q\to\neg P¬Q→¬P。

反例与反赋值是最短的诊断

要说明一个推理形式无效,最有力的办法不是说“感觉不严谨”,而是给出一组真值:

推理取值前提结论
肯定后件P=F,Q=TP=\mathrm{F},Q=\mathrm{T}P=F,Q=TP→QP\to QP→Q 真,QQQ 真PPP 假
否定前件P=F,Q=TP=\mathrm{F},Q=\mathrm{T}P=F,Q=TP→QP\to QP→Q 真,¬P\neg P¬P 真¬Q\neg Q¬Q 假

同一组取值同时拆穿了两种谬误。它表达的核心就是:前件可以不成立,而后件仍然成立。


把条件推理真正写成证明

证明不是把所有脑内尝试原样写下来,也不是直接端出一个看似漂亮的结论。比较可靠的工作方式分两层:草稿阶段寻找路线,成稿阶段把路线写成可核查的推理链。

草稿可以问得很直白:“假设给我的条件后,我能写出什么定义?”“结论要我得到一个存在式,那个对象该怎么构造?”“直接走不顺,是不是否定结论以后结构更清楚?”这些问题不一定出现在最终证明里,但它们解释了下一步从哪里来。

条件命题的两条证明路线,直接证明从 P 到 Q,逆否证明从非 Q 到非 P
证明 P→QP\to QP→Q 时,先比较直接路线与逆否路线,选择结构更清楚的一条。

直接证明:假设前件,推出后件

证明 P→QP\to QP→Q 的标准骨架很短:

  1. 假设 PPP 成立。
  2. 使用定义、已知事实和有效规则推出 QQQ。
  3. 明确说明 QQQ 已成立,因此 P→QP\to QP→Q 得证。

真正费脑筋的是第二步。看下面这个命题:若实数 xxx 满足 0≤x≤20\le x\le20≤x≤2,则 −x3+4x+1>0-x^3+4x+1>0−x3+4x+1>0。

直接看三次式,很难从“0≤x≤20\le x\le20≤x≤2”立刻看出它为正。草稿阶段可以先观察:负项是 −x3-x^3−x3,正项是 4x4x4x,也许能把它们合并并因式分解:

−x3+4x=x(4−x2)=x(2−x)(2+x)-x^3+4x=x(4-x^2)=x(2-x)(2+x)−x3+4x=x(4−x2)=x(2−x)(2+x)

现在假设中的两个端点条件都派上了用场:x≥0x\ge0x≥0,2−x≥02-x\ge02−x≥0,而 2+x≥02+x\ge02+x≥0。于是三个非负数的乘积非负,再加 111 就严格为正。

把草稿整理成证明:

假设 0≤x≤20\le x\le20≤x≤2。于是 x≥0x\ge0x≥0、2−x≥02-x\ge02−x≥0,并且 2+x≥02+x\ge02+x≥0。

三个因子都非负,所以 x(2−x)(2+x)≥0x(2-x)(2+x)\ge0x(2−x)(2+x)≥0。

由此得到 x(2−x)(2+x)+1≥1>0x(2-x)(2+x)+1\ge 1>0x(2−x)(2+x)+1≥1>0。

展开左边即 −x3+4x+1-x^3+4x+1−x3+4x+1,因此 −x3+4x+1>0-x^3+4x+1>0−x3+4x+1>0。

这段证明没有隐藏关键灵感:因式分解的目的,是把题目给的区间条件变成三个因子的符号信息。

逆否证明:结论的否定更容易展开时

有些命题直接从 PPP 推 QQQ 很别扭,但 ¬Q\neg Q¬Q 有清楚的结构。这时证明等价的逆否命题 ¬Q→¬P\neg Q\to\neg P¬Q→¬P。

证明:如果整数 n2n^2n2 是偶数,那么 nnn 是偶数。

直接假设 n2n^2n2 是偶数,只能写出 n2=2kn^2=2kn2=2k,很难从平方中“开出”一个整数因子。反过来,nnn 不是偶数意味着 nnn 是奇数,而奇数有明确形式 2k+12k+12k+1。这就是选择逆否路线的理由。

我们证明逆否命题:如果 nnn 不是偶数,那么 n2n^2n2 不是偶数。

假设整数 nnn 不是偶数。整数非奇即偶,所以 nnn 是奇数,存在整数 kkk 使 n=2k+1n=2k+1n=2k+1。

平方并整理:

n2=(2k+1)2=4k2+4k+1=2(2k2+2k)+1n^2=(2k+1)^2=4k^2+4k+1=2(2k^2+2k)+1n2=(2k+1)2=4k2+4k+1=2(2k2+2k)+1

2k2+2k2k^2+2k2k2+2k 是整数,因此 n2n^2n2 是奇数,也就不是偶数。

逆否命题成立,所以原命题“若 n2n^2n2 是偶数,则 nnn 是偶数”成立。

逆否证明不是“先假设结论错误,再导出矛盾”。它直接证明 ¬Q→¬P\neg Q\to\neg P¬Q→¬P。反证法会假设整个目标命题的否定,两者在写法和使用时机上并不相同。

双条件证明:把两个方向分别交代

证明 P↔QP\leftrightarrow QP↔Q 最稳妥的模板是先证 P→QP\to QP→Q,再证 Q→PQ\to PQ→P。两个方向可以使用不同方法。

证明:整数 nnn 是偶数,当且仅当 n2n^2n2 是偶数。

先证正向。假设 nnn 是偶数,则存在整数 kkk 使 n=2kn=2kn=2k。于是 n2=4k2=2(2k2)n^2=4k^2=2(2k^2)n2=4k2=2(2k2),所以 n2n^2n2 是偶数。

再证反向。假设 n2n^2n2 是偶数。这个方向采用逆否证明:若 nnn 不是偶数,则 n=2k+1n=2k+1n=2k+1,从而 n2=2(2k2+2k)+1n^2=2(2k^2+2k)+1n2=2(2k2+2k)+1 是奇数。

因此 n2n^2n2 为偶数能推出 nnn 为偶数。两个方向都成立,故 nnn 为偶数当且仅当 n2n^2n2 为偶数。

另一种写法是构造等价链:

P≡P1≡P2≡⋯≡QP\equiv P_1\equiv P_2\equiv\cdots\equiv QP≡P1​≡P2​≡⋯≡Q

这种写法很短,但每一步都必须可逆。如果某一步只证明了左边推出右边,就只能写 →\to→,不能写 ↔\leftrightarrow↔。初学阶段如果拿不准可逆性,分成两个方向写通常更安全。

一份能实际使用的证明检查表

先写清目标的逻辑形状。它是 P→QP\to QP→Q、P↔QP\leftrightarrow QP↔Q,还是某个复合命题?形状决定证明的外层结构。

若目标是条件命题,比较直接路线和逆否路线。看哪一边的假设能更快落到定义或已知事实上。

若目标是双条件,明确标出两个方向。不要让“反之显然”替代真正缺失的推理。

检查每一步使用了什么:假设、定义、代数变形、已知结论,还是某条推理规则。不能把待证结论提前当作前提。

最后反查箭头方向。尤其确认没有肯定后件、否定前件,也没有把几个例子误当成全称证明。


从命题箭头走向量词

到这里,我们一直把 P,QP,QP,Q 当成已经能判断真假的完整命题。实际定理往往还带着变量,例如:

如果整数 n 是 4 的倍数,那么 n 是偶数\text{如果整数 }n\text{ 是 }4\text{ 的倍数,那么 }n\text{ 是偶数}如果整数 n 是 4 的倍数,那么 n 是偶数

它背后真正完整的结构是:

∀n∈Z,4∣n→2∣n\forall n\in\mathbb Z,\quad 4\mid n\to2\mid n∀n∈Z,4∣n→2∣n

箭头负责描述“对一个固定的 nnn,前件和后件怎样关联”;全称量词负责说明“这种关联要覆盖哪些 nnn”。这两个层次不能混在一起。

因此,后面处理量词时,今天的规则仍然保留:否定箭头会得到“前件真且后件假”。新的问题是,否定“对所有 nnn”还会把全称量词变成存在量词。直观上,就是从“每个对象都守规则”变成“至少有一个对象违背规则”。

我们将在下一章把这件事写成严格的符号变形。现在先记住连接点:反例之所以能推翻全称条件命题,是因为它找到了一个具体对象,让 P∧¬QP\land\neg QP∧¬Q 成立。


练习:先看结构,再做计算

基础辨析

练习一:写出命题“如果四边形是正方形,那么它是矩形”的逆命题、否命题和逆否命题,并判断真假。

令 PPP 表示“四边形是正方形”,QQQ 表示“四边形是矩形”。逆命题 Q→PQ\to PQ→P 是“如果四边形是矩形,那么它是正方形”,为假;否命题 ¬P→¬Q\neg P\to\neg Q¬P→¬Q 是“如果四边形不是正方形,那么它不是矩形”,也为假;逆否命题 ¬Q→¬P\neg Q\to\neg P¬Q→¬P 是“如果四边形不是矩形,那么它不是正方形”,为真。原命题与逆否命题等价,逆命题与否命题等价。

练习二:把 P→(Q∨R)P\to(Q\lor R)P→(Q∨R) 改写成只含 ¬,∧,∨\neg,\land,\lor¬,∧,∨ 的形式,再写出它的否定。

先消去箭头:P→(Q∨R)≡¬P∨Q∨RP\to(Q\lor R)\equiv\neg P\lor Q\lor RP→(Q∨R)≡¬P∨Q∨R。再否定并使用德摩根律:

¬(P→(Q∨R))≡P∧¬Q∧¬R\neg\bigl(P\to(Q\lor R)\bigr) \equiv P\land\neg Q\land\neg R¬(P→(Q∨R))≡P∧¬Q∧¬R

它表示 PPP 已经发生,但允许的两个后件 Q,RQ,RQ,R 都没有发生。

练习三:判断推理是否有效:“如果 aaa 是大于 222 的质数,那么 aaa 是奇数。aaa 不是大于 222 的质数。所以 aaa 不是奇数。”

无效。令 PPP 表示“aaa 是大于 222 的质数”,QQQ 表示“aaa 是奇数”,形式是 P→Q,¬P∴¬QP\to Q,\neg P\therefore\neg QP→Q,¬P∴¬Q,属于否定前件。取 a=9a=9a=9,两个前提都真,结论“999 不是奇数”却假。

证明练习

练习四:证明:如果整数 nnn 是奇数,那么 n2n^2n2 是奇数。写证明前,先说明你准备如何使用“奇数”的定义。

思路是把“nnn 是奇数”展开成 n=2k+1n=2k+1n=2k+1,再看平方后能否仍整理成“2×2\times2× 某个整数 +1+1+1”的形式。

证明:假设 nnn 是奇数。则存在整数 kkk 使 n=2k+1n=2k+1n=2k+1。于是

n2=(2k+1)2=4k2+4k+1=2(2k2+2k)+1n^2=(2k+1)^2=4k^2+4k+1=2(2k^2+2k)+1n2=(2k+1)2=4k2+4k+1=2(2k2+2k)+1

因为 2k2+2k2k^2+2k2k2+2k 是整数,所以 n2n^2n2 是奇数。

练习五:证明:对整数 nnn,nnn 能被 666 整除,当且仅当 nnn 同时能被 222 和 333 整除。

先证正向。若 6∣n6\mid n6∣n,则存在整数 kkk 使 n=6k=2(3k)=3(2k)n=6k=2(3k)=3(2k)n=6k=2(3k)=3(2k),所以 2∣n2\mid n2∣n 且 3∣n3\mid n3∣n。

再证反向。若 2∣n2\mid n2∣n 且 3∣n3\mid n3∣n,则 n=2a=3bn=2a=3bn=2a=3b。因为 nnn 是偶数,3b3b3b 也是偶数。若 bbb 是奇数,可写成 b=2t+1b=2t+1b=2t+1,那么 3b=6t+3=2(3t+1)+13b=6t+3=2(3t+1)+13b=6t+3=2(3t+1)+1 会是奇数,产生矛盾。因此 bbb 必为偶数,设 b=2kb=2kb=2k。于是 n=3b=6kn=3b=6kn=3b=6k,所以 6∣n6\mid n6∣n。两个方向都成立,故为充要条件。

练习六:有人写道:“若程序通过全部测试,则程序没有缺陷。这个程序没有通过全部测试,所以它有缺陷。”指出逻辑形式,并说明还缺少什么信息才能得到结论。

令 PPP 表示“程序通过全部测试”,QQQ 表示“程序没有缺陷”。原推理是 P→Q,¬P∴¬QP\to Q,\neg P\therefore\neg QP→Q,¬P∴¬Q,属于否定前件。没有通过全部测试可能是环境、配置或测试本身的问题,也可能确实有缺陷;现有前提没有锁定原因。若要合法推出“程序有缺陷”,还需要另一个方向 ¬P→¬Q\neg P\to\neg Q¬P→¬Q,或者其他足以排除替代原因的前提。

上一章命题逻辑:语句、连接词与真值表下一章谓词逻辑与量词