命题逻辑与逻辑联结词
理解命题逻辑如何把完整陈述抽象为真假命题,并用否定、合取、析取、条件与双条件联结词描述复合命题。
[!info] related notes
- 所属 MOC: logic-moc
- 前置概念: argument-premise-and-conclusion、necessary-and-sufficient-conditions
- 并列概念:
- 易混淆概念:
- 关系笔记:
命题逻辑与逻辑联结词
一句话定义
命题逻辑把能够判断真假的完整陈述当作基本单位,再用逻辑联结词组合它们,并只研究组合后的真假如何由组成部分决定。
它故意忽略句子内部“谁做了什么”,先训练最基础的真假结构。
什么是命题
命题是一个具有真假值的陈述。
例如:
- “东京是日本的城市。”——命题,可以为真或假。
- “2 + 2 = 5。”——也是命题,只不过为假。
- “请关门。”——命令,不是命题。
- “你吃饭了吗?”——问题,不是命题。
在符号化时,可以用字母代表原子命题:
P:今天下雨
Q:我带伞
五个核心联结词
否定 ¬P
读作“不是 P”。
如果:
P:服务在线
那么:
¬P:服务不在线
真假正好相反。
合取 P ∧ Q
读作“P 并且 Q”。
只有 P、Q 都真时,整体才真。
服务在线,并且数据库可连接。
析取 P ∨ Q
标准命题逻辑中的 ∨ 通常是相容或(inclusive or):至少一个为真即可,两个都真也算真。
可以使用邮箱或手机号登录。
如果系统允许两者同时存在,这就是相容或。
自然语言中的“要么 A 要么 B”有时暗示只能选一个,那属于排他或,不要和普通 ∨ 混淆。
条件 P → Q
读作“如果 P,那么 Q”。
它只在一种情况下为假:
P 真,但 Q 假
例如:
如果请求通过认证,那么请求具有合法身份。
若出现“认证通过但身份其实非法”的情况,这条条件规则就被反例击破。
P 是 Q 的充分条件,Q 是 P 的必要条件,见 必要条件与充分条件。
双条件 P ↔ Q
读作“P 当且仅当 Q”。
它要求两个方向都成立:
P → Q
Q → P
两者真假一致时,整体为真。
真值速查
| P | Q | P ∧ Q | P ∨ Q | P → Q | P ↔ Q |
|---|---|---|---|---|---|
| 真 | 真 | 真 | 真 | 真 | 真 |
| 真 | 假 | 假 | 真 | 假 | 假 |
| 假 | 真 | 假 | 真 | 真 | 假 |
| 假 | 假 | 假 | 假 | 真 | 真 |
完整方法见后续的真值表笔记。
为什么“P → Q”在 P 为假时算真
这是初学者最反直觉的一点。
条件句 P → Q 的承诺其实是:
不会出现 P 已经发生、Q 却没有发生。
例如:
如果我拿到满分,我就请你吃饭。
真正违约的情况只有:
我拿到了满分,但没请你吃饭。
如果我没有拿到满分,这句话本身并没有被反驳。所以在经典命题逻辑中,当前件 P 假时,P → Q 为真。
这叫实质条件(material conditional)。它不等于自然语言里所有“如果……那么……”的细腻含义,比如因果、承诺、时间关系。
形式化为什么有用
自然语言容易被内容干扰:
如果一个人是天才,那么他数学很好。小王数学很好,所以小王是天才。
一旦抽象:
P → Q
Q
∴ P
就更容易看出:这不是有效形式。Q 可能还有很多其他原因。
形式化的价值就是:暂时把故事拿走,只看推理骨架。
与编程的关系
命题逻辑直接对应程序中的布尔表达式:
isLoggedIn && hasPermission
!isExpired
isAdmin || isOwner
但需要注意,JavaScript 的 &&、|| 还具有短路求值和返回操作数等语言语义,不完全等同于纯逻辑联结词。
逻辑学提供的是真假结构,编程语言再在其上增加执行语义。
使用场景
拆需求
用户只有在“已登录并且拥有编辑权限”时才能编辑。
直接形式化:
CanEdit → LoggedIn ∧ HasEditPermission
这有助于发现权限条件是否漏掉。
分析争论
把“只要”“除非”“要么”“只有”翻成明确结构,很多自然语言歧义会暴露出来。
检查测试覆盖
多个布尔条件组合时,可以借真值表枚举关键输入状态,避免只测 happy path。
易混淆点
“或”不一定排他
逻辑里的 ∨ 默认允许两者都真。
→ 不表示因果
P → Q 只描述真假约束,不意味着 P 在现实中制造了 Q。
命题逻辑看不到句子内部结构
“所有程序员都会写代码”和“小王是程序员”之间的关系,需要谓词逻辑才能更自然表达。
快速自测
设:
P:用户已登录
Q:用户是管理员
“用户已登录,但不是管理员”:
P ∧ ¬Q
“如果用户是管理员,那么用户已登录”:
Q → P
“用户已登录或是管理员,至少满足一个”:
P ∨ Q
来源
- Open Logic Project, forall x: Calgary, Parts II–III: https://forallx.openlogicproject.org/
- Stanford Introduction to Logic, Chapter 2 — Propositional Logic: https://logic.stanford.edu/intrologic/public/