命题逻辑
📝 命题逻辑用精确的符号语言替代自然语言的模糊表述,将推理过程变成可以机械检验的形式操作。掌握符号化、真值表方法和自然推演,是理解现代逻辑和计算机科学基础的关键。
命题逻辑的符号化
命题逻辑的核心思路是将自然语言论证翻译为符号公式。用小写字母(p、q、r……)代表简单命题,用五种联结词符号(¬、∧、∨、→、↔)代表逻辑关系,将一段自然语言论证转化为精确无歧义的符号表达。
符号化的过程包括三个步骤:第一,识别论证中的简单命题并分配字母;第二,确定命题之间的逻辑关系并选择恰当的联结词;第三,用括号明确运算优先级。
示例:将"如果经济衰退并且失业率上升,那么消费者信心就会下降"符号化。令 p = “经济衰退”,q = “失业率上升”,r = “消费者信心下降”。符号化结果:(p ∧ q) → r。
符号化过程中最常见的困难是处理自然语言的歧义。“除非下雨,否则比赛照常进行"应该符号化为 ¬p → q(如果不下雨,则比赛照常),等价于 p ∨ q。“只有通过考试才能毕业"中的"只有……才……“表达的是必要条件,应符号化为 q → p(如果毕业,则通过了考试),而非 p → q。
| 自然语言表达 | 逻辑关系 | 符号化 |
|---|---|---|
| p 并且 q | 联言 | p ∧ q |
| p 或者 q | 选言 | p ∨ q |
| 如果 p 那么 q | 条件 | p → q |
| 只有 p 才 q | 条件(注意方向) | q → p |
| 除非 p 否则 q | 选言/条件 | p ∨ q 或 ¬p → q |
| p 当且仅当 q | 双条件 | p ↔ q |
| 既非 p 也非 q | 联合否定 | ¬p ∧ ¬q |
📝 案例:法律条文的符号化分析。 某法规规定:“如果企业排放超标且未在限期内整改,则处以罚款并吊销许可证。” 令 p = “排放超标”,q = “未在限期内整改”,r = “处以罚款”,s = “吊销许可证”。符号化:(p ∧ q) → (r ∧ s)。这个形式化使得法律适用的逻辑结构一目了然:两个条件同时满足时(联言),两个后果同时产生(联言)。如果企业排放超标但已整改(p 为真、q 为假),则前件 p ∧ q 为假,整个条件命题为真(虚真),即法规不适用——企业不受处罚。
真值表方法
真值表是命题逻辑中最基本的语义工具,能够机械地判断任何命题公式的逻辑性质以及论证的有效性。
判断公式的逻辑性质
构造一个公式的真值表:列出所有命题变量的真值组合,逐步计算公式在每种组合下的最终真值。
示例:判断 (p → q) ↔ (¬p ∨ q) 是否为重言式。
| p | q | p → q | ¬p | ¬p ∨ q | (p → q) ↔ (¬p ∨ q) |
|---|---|---|---|---|---|
| T | T | T | F | T | T |
| T | F | F | F | F | T |
| F | T | T | T | T | T |
| F | F | T | T | T | T |
所有行的最终真值均为 T,因此该公式是重言式——p → q 与 ¬p ∨ q 逻辑等值。
判断论证的有效性
用真值表判断论证有效性的方法:将论证的前提用合取连接,与结论的否定合取,检查是否存在使该合取式为真的真值指派。如果不存在(即前提全真而结论为假的行不存在),论证有效。
更直观的方法:在真值表中找到所有前提都为真的行,检查这些行中结论是否也都为真。如果是,论证有效;如果存在前提全真但结论为假的行,论证无效。
📝 案例:用真值表识破一则政治论证。 某政论声称:“如果支持自由贸易,就是支持全球化;如果支持全球化,就是反对国内产业;因此,如果支持自由贸易,就是反对国内产业。” 这实际上是假言三段论:(p → q) ∧ (q → r) → (p → r)。通过真值表可以验证,这个推理形式是有效的——不存在前提全真而结论为假的情况。然而,论证的有效性不保证其可靠性——第二个前提"支持全球化就是反对国内产业"在经验上是否成立,需要独立的经济学证据来评判。逻辑分析帮助区分形式问题和内容问题。
自然推演
真值表方法虽然完备(对于有限命题变量总能给出答案),但随着命题数量增加,规模呈指数增长(n 个变量需要 2ⁿ 行)。自然推演(natural deduction)提供了另一种验证有效性的方法——从前提出发,通过一系列推理规则逐步推导出结论。
自然推演的基本推理规则分为两类:
引入规则(introduction rules)——引入某个联结词:
- ∧ 引入:从 p 和 q 分别得出 p ∧ q
- ∨ 引入:从 p 得出 p ∨ q
- → 引入:假设 p 后能推出 q,则得出 p → q
消去规则(elimination rules)——消去某个联结词:
- ∧ 消去:从 p ∧ q 得出 p(或 q)
- ∨ 消去:从 p ∨ q、p → r、q → r 得出 r
- → 消去:即肯定前件(modus ponens),从 p → q 和 p 得出 q
推导示例:证明从前提 p → q、q → r、p 可以推出 r。
1. p → q 前提
2. q → r 前提
3. p 前提
4. q →消去(1, 3)
5. r →消去(2, 4)自然推演的优势在于它模拟了人类实际推理的过程——逐步推导而非穷举。它也是自动定理证明器和类型理论的基础。
逻辑等值与重要定律
两个命题公式如果在所有真值指派下具有相同的真值,则称它们逻辑等值(logically equivalent),记为 ≡。逻辑等值意味着两个公式可以在任何语境中相互替换而不改变论证的有效性。
核心等值定律
| 定律名称 | 等值关系 |
|---|---|
| 双重否定 | ¬¬p ≡ p |
| De Morgan 定律 | ¬(p ∧ q) ≡ ¬p ∨ ¬q;¬(p ∨ q) ≡ ¬p ∧ ¬q |
| 交换律 | p ∧ q ≡ q ∧ p;p ∨ q ≡ q ∨ p |
| 结合律 | (p ∧ q) ∧ r ≡ p ∧ (q ∧ r) |
| 分配律 | p ∧ (q ∨ r) ≡ (p ∧ q) ∨ (p ∧ r) |
| 条件等值 | p → q ≡ ¬p ∨ q |
| 逆否等值 | p → q ≡ ¬q → ¬p |
| 双条件等值 | p ↔ q ≡ (p → q) ∧ (q → p) |
| 输出律 | p → (q → r) ≡ (p ∧ q) → r |
De Morgan 定律在逻辑推理和计算机编程中使用频率极高。“并非(今天下雨并且刮风)“等价于"今天不下雨或者不刮风”——否定一个联言等于析取各项的否定。在编程中,!(a && b) 等价于 !a || !b,这一等价关系在条件判断的简化和优化中不可或缺。
逆否等值在论证评估中同样重要。“如果一个人是诚实的,就不会撒谎"的逆否命题是"如果一个人撒谎了,那他就不是诚实的”——两者逻辑等值。但"如果一个人不诚实,他就会撒谎”(否定前件)和"如果一个人不撒谎,他就是诚实的”(肯定后件的变体)都不是有效的推理。
命题逻辑的实际应用
数字电路设计
计算机硬件中的逻辑门直接实现命题逻辑的联结词。AND 门对应 ∧,OR 门对应 ∨,NOT 门对应 ¬,NAND 门对应 ¬(p ∧ q)。任何布尔函数都可以用 NAND 门或 NOR 门单独实现——这是数字电路设计的基础定理。
数据库查询
SQL 查询中的 WHERE 子句本质上是命题逻辑表达式。SELECT * FROM employees WHERE department = 'Sales' AND salary > 50000 使用联言来筛选同时满足两个条件的记录。De Morgan 定律帮助优化复杂查询条件。
人工智能与知识表示
早期的专家系统使用命题逻辑规则来表示领域知识。一组 “if-then” 规则构成知识库,推理引擎通过反复应用肯定前件来从已知事实推导新结论——这就是前向链(forward chaining)推理。
命题逻辑的局限
命题逻辑将简单命题视为不可分析的原子单位,无法深入命题内部结构。“所有人都会死"和"苏格拉底是人"在命题逻辑中只是两个不相关的字母 p 和 q,它们之间的逻辑关联无法被捕捉。三段论"所有人都会死;苏格拉底是人;因此苏格拉底会死"在命题逻辑中无法被表达为有效论证——这一局限由谓词逻辑(predicate logic)通过引入量词和谓词来弥补。
此外,命题逻辑的可判定性(decidability)既是优势又是限制。对于任何命题公式,真值表方法总能在有限步骤内判断它是否为重言式——这使命题逻辑具有"机械可解"的特性。然而,这种机械性也意味着命题逻辑的表达力有限——它无法表达任何需要量化或关系结构的推理。命题逻辑的完备性定理(由 Post 在 1921 年证明)表明:所有重言式都可以从一组公理推导出来——但这个结果的意义和局限只有在与谓词逻辑的对比中才能充分理解。
📝 案例:自然语言条件句的多义性。 日常语言中的"如果……那么……“远比逻辑中的实质条件复杂。考虑以下三个条件句:(1) “如果点火,纸就会燃烧”(因果条件句——前件是后件的原因)。(2) “如果他在巴黎,他就在法国”(逻辑/分析条件句——地理包含关系)。(3) “如果你饿了,冰箱里有披萨”(言语行为条件句——前件不是后件的条件,而是说出后件的条件)。实质条件将这三种完全不同的语用功能统一为同一个真值表——这在形式化上是一种简化,但在应用中需要意识到这种简化的代价。Lewis 和 Stalnaker 的反事实条件句语义学、Adams 的概率条件句理论等都是试图更精确地刻画自然语言条件句的尝试。
💭 延伸思考
- “实质条件"与日常的"如果……那么……“之间的差距是逻辑学的缺陷,还是日常语言的不精确?条件句逻辑(conditional logic)和相关逻辑(relevance logic)试图如何弥合这一差距?
- 编程语言中的短路求值(short-circuit evaluation,如
a && b中 a 为假时 b 不被求值)与逻辑联言的语义有何异同? - 如果 NAND 门可以单独实现所有布尔函数,这在哲学上意味着什么——是否存在某种"最基本的"逻辑运算?
📚 参考文献
- Copi, I. M., Cohen, C., & McMahon, K. (2014). Introduction to Logic (14th ed.). Pearson. 第八至九章详细讲解命题逻辑的符号化与推演。
- Enderton, H. B. (2001). A Mathematical Introduction to Logic (2nd ed.). Academic Press. 命题逻辑的数学化处理,适合深入学习。
- Boole, G. (1854). An Investigation of the Laws of Thought. 布尔代数的奠基之作,命题逻辑数学化的起点。
- Gentzen, G. (1935). “Untersuchungen uber das logische Schliessen.” 自然推演系统的原始论文。
- Mendelson, E. (2015). Introduction to Mathematical Logic (6th ed.). CRC Press. 涵盖命题逻辑的完备性和可判定性证明。