相关笔记: 1.2 命题逻辑的应用
概览
本节是离散数学的逻辑学起点,系统介绍了命题(proposition)的定义、五种基本逻辑联结词(logical connectives)(否定、合取、析取、条件、双条件)以及真值表(truth table)的构造方法,最后将逻辑运算与计算机位运算(bit operation)联系起来。
- 命题是只能为真或为假的陈述句,是逻辑推理的最小原子单位
- 否定 、合取 、析取 、异或 、条件 、双条件 是六种核心逻辑运算
- 条件语句的逆否命题(contrapositive)与原命题逻辑等价,但逆命题(converse)和否命题(inverse)不一定等价
- 真值表是判断复合命题真值的系统性工具, 个变量需要 行
- 逻辑运算可直接映射到计算机的位运算(AND、OR、XOR),是数字电路设计的理论基础
- 逻辑运算符有明确的优先级:
一、知识结构总览
graph TB A["1.1 命题逻辑"] --> B["命题 Propostion"] A --> C["逻辑联结词 Logical Connectives"] A --> D["复合命题与真值表"] A --> E["位运算 Bit Operations"] B --> B1["原子命题"] B --> B2["命题变量 p, q, r..."] B --> B3["真值 T / F"] C --> C1["否定 ¬p"] C --> C2["合取 p ∧ q"] C --> C3["析取 p ∨ q"] C --> C4["异或 p ⊕ q"] C --> C5["条件 p → q"] C --> C6["双条件 p ↔ q"] C5 --> C5a["逆命题 q → p"] C5 --> C5b["逆否命题 ¬q → ¬p"] C5 --> C5c["否命题 ¬p → ¬q"] D --> D1["真值表构造"] D --> D2["运算符优先级"] E --> E1["按位 OR / AND / XOR"] E --> E2["位字符串运算"]
二、核心思想
核心思想
本节的核心思想是命题逻辑的形式化(formalization of propositional logic):通过定义命题(真/假的陈述句)和六种逻辑联结词(否定、合取、析取、异或、条件、双条件),将自然语言中的推理转化为精确的数学运算。真值表提供了系统性的判定工具,而逻辑运算与计算机位运算的直接对应则揭示了逻辑学作为数字电路设计理论基础的深层联系。
1. 命题的定义
命题(Proposition)
命题是一个陈述句(declarative sentence),它要么为真(true),要么为假(false),但不能同时为真和为假。
- 命题的真值用 T(True)或 F(False)表示
- 不能再分解为更简单命题的命题称为原子命题(atomic proposition)
- 用小写字母 表示命题变量(propositional variable)
命题 vs 非命题
句子 是否为命题 原因 ”华盛顿特区是美国的首都” 是(T) 陈述句,有确定真值 ”多伦多是加拿大的首都” 是(F) 陈述句,有确定真值 "" 是(T) 陈述句,有确定真值 ”现在几点了?“ 否 疑问句,非陈述句 "" 否 含变量,真值取决于 的赋值 ”仔细阅读本文” 否 祈使句,非陈述句
关键区分
判断一个句子是否为命题,需要同时满足两个条件:(1) 是陈述句;(2) 有确定的真值(真或假)。含自由变量的句子不是命题,但给变量赋值后可以变成命题。
2. 逻辑联结词
2.1 否定(Negation)
否定
设 为命题, 的否定记为 (也记为 ),读作”非 ”。 的真值与 的真值相反。
否定的自然语言表达
- 原命题 :“Michael 的电脑运行 Linux”
- 否定 :“Michael 的电脑不运行 Linux”(而非”Michael 的电脑运行非 Linux”)
2.2 合取(Conjunction)
合取
设 和 为命题, 和 的合取记为 ,读作” 与 ”。 为真当且仅当 和 同时为真。
"but" 也是合取
在逻辑中,“but”(但是)和 “and”(并且)表达的是同一个逻辑联结词。例如 “The sun is shining, but it is raining” 在逻辑上等同于 “The sun is shining and it is raining”。
2.3 析取(Disjunction)
析取
设 和 为命题, 和 的析取记为 ,读作” 或 ”。 为假当且仅当 和 同时为假。这是包含或(inclusive or)。
包含或 vs 异或
- 包含或:“学过微积分或计算机导论的学生可以选修这门课”(两者都学过也可以)
- 异或:“晚餐可以选汤或沙拉,但不能都选”(恰好选一个)
2.4 异或(Exclusive Or)
异或
设 和 为命题, 和 的异或记为 (也记为 )。 为真当且仅当 和 恰好一个为真。
2.5 条件语句(Conditional Statement)
条件语句
设 和 为命题,条件语句 读作”如果 ,则 ”。 为假当且仅当 为真而 为假。
- 称为假设(hypothesis)(或前件/前提)
- 称为结论(conclusion)(或后件)
理解 "F → T = T" 和 "F → F = T"
这是初学者最容易困惑的地方。条件语句 在 为假时总是为真,无论 的真值如何。可以这样理解:条件语句是一种”承诺”——“如果你做了 ,我就保证 “。如果你没有做 ( 为假),那么承诺者并没有违背承诺,所以整个语句为真。只有当你做了 ( 为真)但 没有发生( 为假),承诺才被打破。
条件语句有多种等价的自然语言表达方式:
| 表达方式 | 对应形式 |
|---|---|
| ”if , then " | |
| " implies " | |
| " only if " | |
| " is sufficient for " | |
| " is necessary for " | |
| " whenever " | |
| " unless " | |
| " provided that ” |
记忆 "only if" 的方向
” only if ” 意味着 为真时 必须为真,即 。例如 “You can receive an A only if your score is at least 90” 意味着:如果你得了 A,那么你的分数至少是 90。注意不要混淆为 ” only if “。
逆命题、逆否命题与否命题
逆命题、逆否命题与否命题
给定条件语句 :
名称 形式 是否与原命题等价 逆命题(converse) 不一定 逆否命题(contrapositive) 一定等价 否命题(inverse) 不一定
最常见的逻辑错误
假设逆命题或否命题与原命题等价。例如,从”如果下雨,主队就赢”不能推出”如果主队赢了,就一定下雨了”(这是逆命题,不一定成立)。但可以推出”如果主队没赢,就没下雨”(这是逆否命题,一定成立)。
逆命题、逆否命题、否命题
原命题:“If it is raining, then the home team wins.”()
- 逆命题:“If the home team wins, then it is raining.”()
- 逆否命题:“If the home team does not win, then it is not raining.”()
- 否命题:“If it is not raining, then the home team does not win.”()
只有逆否命题与原命题逻辑等价。
2.6 双条件语句(Biconditional Statement)
双条件语句
设 和 为命题,双条件语句 读作” 当且仅当 ”。 为真当且仅当 和 有相同的真值。
等价关系:
其他表达方式:
- ” is necessary and sufficient for ”
- ” iff ”(“iff” 是 “if and only if” 的缩写)
- ” exactly when “
3. 复合命题的真值表
真值表构造方法
构造含 个命题变量的复合命题的真值表:
- 列出所有 种真值组合(按字典序排列)
- 为每个中间子表达式添加一列
- 按运算符优先级逐步计算
- 最后一列为最终结果
构造 的真值表
推导过程(以第二行为例):
4. 逻辑运算符的优先级
运算符优先级
优先级 运算符 说明 1(最高) 否定 2 合取 3 析取 4 条件 5(最低) 双条件
例如:
- 等价于 ,而非
- 等价于 ,而非
- 等价于 ,而非
实践建议
当优先级容易引起混淆时,始终使用括号明确运算顺序,避免歧义。
5. 逻辑与位运算
位运算(Bit Operations)
计算机使用位(bit)表示信息,位只有两个值:0 和 1。约定:
- 1 表示 T(真)
- 0 表示 F(假)
位运算 逻辑运算 含义 AND 按位与 OR 按位或 XOR 按位异或
位字符串(Bit String)
位字符串是零个或多个位的序列。其长度就是其中位的个数。
按位运算
对位字符串
01 1011 0110和11 0001 1101进行按位运算:
01 1011 0110
11 0001 1101
────────────
11 1011 1111 按位 OR
01 0001 0100 按位 AND
10 1010 1011 按位 XOR
三、补充理解与易混淆点
补充理解
补充1:命题逻辑的历史渊源与布尔代数
命题逻辑作为形式逻辑的基石,其系统化发展可追溯到古希腊哲学家亚里士多德(公元前384-322年),他首次系统地研究了三段论推理。然而,现代命题逻辑的代数化处理则归功于英国数学家George Boole(1815-1864)。Boole 在 1854 年出版的《The Laws of Thought》中首次引入了用代数方法处理逻辑推理的框架,即今天所称的布尔代数(Boolean Algebra)。Boole 的工作将逻辑推理从哲学思辨转化为严格的数学运算,为后来的数字电路设计奠定了理论基础。1938 年,Claude Shannon 在其 MIT 硕士论文中首次将布尔代数应用于继电器电路的设计分析,标志着逻辑学与计算机工程的正式结合。
- 来源: Boole, G. (1854). An Investigation of the Laws of Thought. Walton and Maberly.
- 参考: Shannon, C. E. (1938). “A Symbolic Analysis of Relay and Switching Circuits.” Transactions of the American Institute of Electrical Engineers, 57(12), 713-723.
网络资源:
- Logic Calculator — 在线命题逻辑计算器,支持真值表生成与逻辑门电路可视化
补充2:实质蕴涵的哲学争议
条件语句 的真值定义(即”实质蕴涵”)在逻辑哲学中引发了长期争论。按照这一定义,当 为假时,无论 取何值, 均为真。这意味着”If Juan has a smartphone, then “和”If Juan has a smartphone, then “在 Juan 没有智能手机时都为真。这种”实质蕴涵怪论(paradoxes of material implication)“表明数学中的条件语句比自然语言中的”如果…那么…”更为宽泛——数学逻辑中的条件语句不要求前件和后件之间存在因果关系或语义关联。这一特性使得命题逻辑成为一种纯粹的形式系统,但也使得初学者在将自然语言翻译为逻辑表达式时需要格外谨慎。
- 来源: Lewis, C. I. (1917). “The Issues Concerning Material Implication.” The Journal of Philosophy, Psychology and Scientific Methods, 14(13), 350-356.
网络资源:
- Truth Table Generator — 交互式真值表生成器,帮助直观理解实质蕴涵的真值行为
易混淆点
误区:条件语句 vs 程序设计中的 if-then
- ❌ 认为逻辑中的 与编程中的
if p then S完全相同- ✅ 逻辑中的 是一个命题(有真值),而编程中的
if p then S是一条控制流指令( 是可执行语句,不是命题)。当 为假时, 仍为真(有真值),但if p then S不会执行 (没有输出)
误区:包含或( )vs 异或()
- ❌ 认为”或”在所有语境下都表示”二选一”
- ✅ 逻辑中的析取 是包含或(inclusive or),允许 和 同时为真。只有明确说”但不能都选”或使用 时才是异或。例如:“密码至少3位或至少8个字符”是包含或(两个条件都满足也可以);“晚餐选汤或沙拉”通常是异或
四、习题精选
习题概览
题号范围 核心考点 难度 1-2 判断命题与非命题 ⭐ 3-7 求命题的否定 ⭐ 8-9 复合命题真值判断 ⭐⭐ 10-17 命题符号化(自然语言 ↔ 逻辑表达式) ⭐⭐ 18-20 条件语句与双条件语句真值判断 ⭐⭐ 21-23 包含或 vs 异或的辨析 ⭐⭐ 24-28 条件语句/双条件语句的自然语言改写 ⭐⭐⭐ 29-30 逆命题、逆否命题、否命题的构造 ⭐⭐ 31-32 真值表行数计算 ⭐ 33-43 复合命题真值表构造 ⭐⭐⭐ 46 编程中的 if-then 语句执行 ⭐⭐ 47 按位 OR/AND/XOR 运算 ⭐⭐
题1:构造复合命题的真值表
题目
构造 的真值表,并判断该命题是否为重言式。
解答
逐步计算每个子表达式:
第二行为 F,因此该命题不是重言式(是偶然式)。
注意: 是 的逆否命题,两者逻辑等价,所以 ,确实不是重言式。
题2:构造三变量条件语句的真值表
题目
构造 的真值表,判断该命题是否为重言式、矛盾式或偶然式。
解答
逐步计算每个子表达式:
第二行为 F,其余行为 T,因此该命题不是重言式,也不是矛盾式,而是偶然式(contingency)。
题3:用真值表验证德摩根律
题目
用真值表验证 (德摩根律)。
解答
构造两列的真值表进行对比:
第4列 与第7列 完全相同,因此 成立。
题4:证明假言三段论是重言式
题目
用真值表证明 是重言式(假言三段论)。
解答
构造完整真值表:
最后一列全部为 T,因此 是重言式。
直观理解:假言三段论表达的是条件的传递性——如果 蕴含 , 蕴含 ,那么 必然蕴含 。
题5:证明构造性两难是重言式
题目
用真值表证明 是重言式(构造性两难,Constructive Dilemma)。
解答
此命题涉及4个变量,真值表有 行。我们构造完整真值表:
最后一列全部为 T,因此该命题是重言式。
直观理解:构造性两难说的是——如果 蕴含 , 蕴含 ,且 或 至少有一个为真,那么 或 也至少有一个为真。当前件为真时(即三个条件同时满足),后件必然为真。
解题思路提示
- 构造真值表:按运算符优先级从内到外逐步计算,确保每列都正确
- 判断命题类型:如果所有行都为 T 则是重言式,所有行都为 F 则是矛盾式,否则是偶然式
- 利用等价关系简化:在构造真值表前,先尝试用等价律化简表达式,可以减少计算量
- 逆否命题技巧:,识别逆否命题可以快速简化
五、视频学习指南
视频资源
六、教材原文
教材原文
“A proposition is a declarative sentence that is either true or false, but not both.”
“We now define the logical operators (also called connectives) that are used to form new propositions from existing propositions. These logical operators are negation, conjunction, disjunction, exclusive or, conditional, and biconditional.”