📑 本页目录(点开跳转)
02 · 为什么需要逻辑
⏱ 29 分钟 | ⭐ 形式化不是为了装,是因为不形式化就会歧义
🎯 一句话
知识表示要解决的是「把一件事写下来,让机器能算出它的后果」;自然语言写不下来,因为同一句话往往有两个互相矛盾的意思。
这一章不讲任何公式。它只做一件事:让你在动手学符号之前,先亲眼看到「不形式化会死在哪」。
🚪 一、先说清楚:这五章你可以整段跳过
⭐ 第 2 到第 6 章是这套教程唯一一段「可以整段跳过」的内容。 第 7 章(偏好与效用)以及之后的全部博弈论、匹配、公平分配、投票,没有一处依赖这五章。 你想直接学博弈论,现在就可以跳到 07-偏好与效用,不会有任何缺口。
那什么人应该读?
| 情况 | 建议 |
|---|---|
| 只想搞懂纳什均衡 / 拍卖 / 投票 | 跳过,直接去第 7 章 |
| 要碰 SAT 求解器 / 约束求解(排班、调度、验证工具的内核) | ⭐ 读,第 3–5 章就是地基 |
| 要做形式化验证(协议、智能合约、编译器) | ⭐ 读,尤其第 5 章的反证法 |
| 要做知识图谱推理 / 规则引擎 / Datalog | ⭐ 读,重点是第 6 章的谓词和量词 |
| 想知道「LLM 的『推理』和逻辑的『推理』是不是一回事」 | 读第 4、5 章,答案是否定的 |
⭐ 这五章是工具的说明书,不是问题的答案。 读完你不会多懂一点博弈论, 但你会多一套把「模糊的争论」压成「机械可判定的计算」的手法。
🧩 二、先卡在一个谜题上
在讲任何定义之前,先看一个题。建议你真的花两分钟想一下,因为这一整段逻辑的意义,就藏在你想它的过程里。
三块积木叠成一摞:a 在 b 上面,b 在 c 上面。 已知:最上面那块(a)是绿的,最下面那块(c)不是绿的。 关于中间那块 b,什么都没告诉你。
问:有没有一块绿积木,直接压在一块非绿积木上面?
大多数人的第一反应是「不知道,因为 b 的颜色没给」。但正确答案是 有,一定有:
- b 是绿的 → b 绿、c 非绿、b 在 c 上 → 找到了(b 压 c)
- b 不是绿的 → a 绿、b 非绿、a 在 b 上 → 也找到了(a 压 b)
b 只有这两种可能,两种都成立,所以结论必然成立。
⭐ 注意这个结论的奇怪之处:你能确定「存在这样一对积木」,却指不出它到底是哪一对。
⭐ 这就是「隐式知识」:显式写下的只有四条事实, 但这四条逼着很多别的东西也为真,而那些东西一条都没被写下来过。 知识表示与推理这个方向,全部工作就是把「逼着为真」变成机器能算的东西。
⚠️ 你现在还没有工具把它写成公式。这道题会在第 6 章最后被形式化并证明——那时你需要的是一阶逻辑的「存在量词」。先把它记住。
📚 三、知识表示到底要解决什么
一个基于知识的 agent,核心是一个知识库(Knowledge Base,KB):
- KB 是一组关于它所处环境的事实
- 这些事实叫句子(sentence)
- 句子写在某种形式化的知识表示语言里
于是就有两个问题,逻辑地基这五章(第 2–6 章)全在回答它们:
| 问题 | 归谁管 |
|---|---|
| ① 怎么把知识写下来,写得没有歧义? | 语法 + 语义(第 3、4 章) |
| ② 写下来之后,能不能让机器自动推出新事实? | 推理规则(第 5、6 章) |
⭐ 把两个问题分开,是整段逻辑的第一个结构性决定。写下来是一回事,算出后果是另一回事——它们由完全不同的机制负责,而且第 4 章会告诉你,这两条路居然能对得上,这件事一点也不显然。
🗣️ 四、自然语言差在哪:四种歧义
为什么不直接用中文/英文写知识库?因为自然语言歧义、含糊、且依赖上下文。看四个例子,它们分别代表四类不同的病。
① 作用域歧义(谁管谁)
「每个学生都读了一本书。」
两个意思:
- 有某一本特定的书,所有学生都读了它
- 每个学生各读各的,可能没有两个人读的是同一本
⭐ 这两个说法逻辑强度完全不同(第一个能推出第二个,反过来不行)。到了第 6 章你会看到它们是 ∃y∀x 和 ∀x∃y 的区别——只是两个量词换了个顺序。
② 否定辖域歧义(「不」管到哪为止)
「我没去考试,因为我生病了。」
- 我生病了,所以没能去考试
- 我去了考试,但不是因为生病才去的
同一句话,一个说「没去」,一个说「去了」。否定符号到底罩住了哪一段,中文没有语法标记来指明。
③ 量词含糊
「没几个学生及格。」
「没几个」是多少?少于一半?少于 10%?少于 5 个人?这不是歧义(两个明确的意思),而是含糊(根本没有明确的意思)——两个人可以就同一句话争到底,因为句子本身没画线。
④ 「或」的两义
「汤或者沙拉,二选一。」
- 排斥或(XOR):只能要一个(点菜时的意思)
- 可兼或(inclusive OR):要一个,或者两个都要(SQL 里
OR的意思)
⚠️ 这一条在工程里最贵。验收标准里写「准确率达标 或 延迟达标」,甲方读成「两个都要」、乙方读成「满足一个就行」——⭐ 双方都能拿着同一句话证明自己是对的,因为那句话确实同时支持两种读法。
⭐ 四种病归成一句话:自然语言的句子不能唯一确定它的意思。 而一个知识库如果连「它到底说了什么」都不唯一,那么「它能推出什么」当然也不唯一。 形式化语言的第一价值不是简洁,是唯一。
⚖️ 五、语法 vs 语义 ⭐
这一组区分是整段逻辑的骨架,第 3–6 章每一章都会分成这两半来讲,所以在这里说清楚。
| 语法(Syntax) | 语义(Semantics) | |
|---|---|---|
| 回答什么问题 | 什么样的字符串是合法的句子? | 这个句子说的是什么?什么时候它为真? |
| 关心什么 | 形状、拼写、括号配没配对 | 真和假 |
| 例子 | $x \lt 4$ 是一个合法的算术表达式;x 4 < 不是 |
$x \lt 4$ 为真,当且仅当 x 这个数确实小于 4 |
| 谁能做 | 纯机械,写个 parser 就行 | 需要先给出一个解释:x 指哪个数 |
⭐ 最关键的一句话:
⭐ 一个句子本身什么都不意味着。 要让它有意义,你必须额外提供一个解释(interpretation)—— 说清里面每个符号指的是什么。
这有极其实际的后果:同一串符号,换个解释,真值就变了。∀x (P(x) → Q(x)) 在「x 是狗、P 是爱捡球、Q 是开心」下是一句话,在「x 是学生、P 是来上课、Q 是及格」下是另一句话,符号本身对此毫不知情。
⚠️ 初学者最容易犯的错:拿到公式就问「它对不对」。这个问题在语法层面没有答案。正确的问法是「在哪些解释下它为真」——那是第 4 章整章的内容。
🔩 六、一个逻辑由哪三样东西构成
任何一种逻辑,都是这三件东西打包在一起:
| 成分 | 它给你什么 | 例子 |
|---|---|---|
| 语法 | 一套规则,划定哪些字符串是合法公式 | Rain → Wet 是公式;Rain Wet → 不是 |
| 语义 | 对每个公式,指定它在哪些「世界」里为真 | 「下雨且不湿」这个世界,让 Rain → Wet 为假 |
| 推理规则 | 给定一些公式,机械地产出新公式 | 从 Rain 和 Rain → Wet,得到 Wet(这条规则叫假言推理 / Modus Ponens) |
⭐ 注意第三行的机械二字。推理规则不看意思,只看形状:它看到「A」和「A 箭头 B」这两个形状摆在面前,就吐出「B」。它根本不知道 Rain 是什么。
⭐ 这就是整件事之所以能自动化的原因: 意思(语义)决定了什么是对的,形状(语法)决定了机器能做什么。 如果这两者对不上,机器算出来的就是垃圾。 它们到底对不对得上——这是第 4 章的核心问题,叫「可靠性」和「完备性」。
顺带回答一个问题:为什么不用编程语言
同一件事三种写法:自然语言「偶数都能被 2 整除」/编程语言 def even(x): return x % 2 == 0/逻辑语言 ∀x. Even(x) ⟹ Divides(x, 2)。
编程语言也精确,但它描述的是怎么算;逻辑语言描述的是什么为真。⭐ 它不告诉你怎么算——正因为如此,才轮得到「推理机」去替你算。
🔗 这一章连到哪里
第 3、4 章是「表示」,第 5、6 章是「推理」——正好对应第三节那两个问题。
| 去哪 | 为什么 |
|---|---|
| 07 · 偏好与效用 | ⭐ 想直接学博弈论就从这里进,本段五章不是它的前置 |
| 03 · 命题逻辑 | 最小的形式化语言:第四节那些歧义句,到那里会被强行拆成两个真值表不同的公式 |
| 04 · 模型集 | ⭐ 换一个视角看公式——一个公式就是一个世界的集合,第六节那个「形状能不能对上意思」的问题在那里得到回答 |
| 05 · 推理与分辨率 | 一条规则打天下:反证法推到空子句,能在纸上手算 |
| 06 · 一阶逻辑 | 加进对象、谓词、量词,第二节那个积木谜题会在那里被解开 |
| 数据这一关 03 · 数据契约 | ⭐ 同一个动机的工程版:那一章讲的「把口头约定写成机器能检查的 schema」,动机和本章第四节完全一样——含糊的约定会在验收时炸 |
| 智能体工程教程 03 · 提示词工程 | 提示词全是自然语言,那一章的许多技巧(举例、给格式、划边界)本质上都是在消歧——去看看同一个问题在 LLM 时代长什么样 |
✅ 检查点
- 这五章什么情况下该读、什么情况下该跳过?跳过会不会影响后面的博弈论?
- 三块积木那道题结论是什么?为什么「b 的颜色没给」不妨碍得出结论?「能确定存在却指不出是哪一对」说明了什么?
- 「每个学生都读了一本书」有哪两种意思?哪一种更强(能推出另一种)?
- 自然语言的四类毛病分别是什么?其中哪一条不是「两个明确的意思」而是「根本没有明确的意思」?
- 语法和语义各回答什么问题?为什么说「一个句子本身什么都不意味着」?
- 一个逻辑由哪三样东西构成?为什么说推理规则是「机械」的,这件事为什么重要?
👀 答案
- 想搞懂 SAT 求解 / 形式化验证 / 知识图谱推理的人该读;只想学纳什均衡、拍卖、投票的人可以整段跳过,直接去第 7 章。⭐ 不影响——第 7 章及之后没有一处依赖第 2–6 章。
- 结论是一定存在一块绿积木直接压在非绿积木上:b 若为绿 → b 压 c(c 非绿);b 若非绿 → a 压 b(a 是绿的)。b 只有这两种可能、两种都成立,所以不妨碍。⭐ 「能确定存在却指不出是哪一对」说明知识库里有隐式知识:显式写下的只有 4 条事实,但它们逼着很多没写下来的东西为真。
- ①有某一本特定的书,所有人都读了它;②每个人各读各的。⭐ 第一种更强——它能推出第二种,反过来不行。到第 6 章会看到它们只差量词顺序:
∃y∀x与∀x∃y。 - ①作用域歧义 ②否定辖域歧义(「我没去考试因为我生病了」——一个读法说没去、一个说去了)③量词含糊(「没几个」)④「或」的两义(排斥或 vs 可兼或)。⭐ 第三条是含糊不是歧义:不是有两个明确的意思,而是根本没画线。
- 语法问「什么字符串是合法句子」(形状,纯机械,parser 就能做);语义问「什么时候为真」(真假,必须先给一个解释)。说句子本身什么都不意味着,是因为必须额外提供解释才知道符号指什么——同一串
∀x (P(x) → Q(x))换个解释就是另一句话。 - 语法、语义、推理规则。推理规则是机械的,指它只看形状不看意思:看到
A和A → B就吐出B,根本不知道 A 是什么。⭐ 这正是逻辑能自动化的原因——也因此必须追问「形状上能推的,是不是意思上真的成立」,那就是第 4 章的可靠性与完备性。
🛑 可以停在这里
⚡ 走神救援
⭐ 这五章(02–06)是全板块唯一可整段跳过的部分:第 7 章及之后的博弈论、匹配、公平分配、投票没有一处依赖它们;值得读的是要碰 SAT / 约束求解、形式化验证、知识图谱推理的三类人。开场谜题:三块积木 a 在 b 上、b 在 c 上,a 绿、c 非绿、b 未知,问有没有绿块直接压在非绿块上。答案一定有——b 若绿则 b 压 c,b 若不绿则 a 压 b。⭐ 妙处是你能确定它存在却指不出是哪一对:显式写下的只有 4 条事实,它们逼着一堆没写下来的东西为真,这叫隐式知识(第 6 章会用存在量词把它形式化)。知识表示要解决两件事:① 无歧义地写下来(语法 + 语义,第 3、4 章)② 让机器自动推出后果(推理规则,第 5、6 章)。自然语言不行,四类病:作用域歧义(「每个学生都读了一本书」——同一本 vs 各读各的,就是
∃y∀x与∀x∃y之差,前者更强)、否定辖域歧义(「我没去考试因为我生病了」——一个读法说没去、一个说去了)、量词含糊(「没几个」根本没画线)、「或」的两义(点菜是排斥或、SQL 的OR是可兼或;⚠️「准确率达标或延迟达标」的验收争议,双方都能拿同一句话证明自己对)。⭐ 形式化语言的第一价值不是简洁,是唯一。 ⭐⭐ 全段骨架是语法 vs 语义:语法问「什么字符串合法」(纯机械),语义问「什么时候为真」(必须先给一个解释)——所以一个句子本身什么都不意味着。一个逻辑 = 语法 + 语义 + 推理规则,推理规则只看形状不看意思(见到A和A → B就吐B),这既是它能自动化的原因,也逼出第 4 章的核心问题:形状上能推的,是不是意思上真的成立(可靠性 / 完备性)。
下一节 👉 03-命题逻辑.md
去那里的理由:本章说了「必须形式化」,03 给出最小的那个形式化语言—— 而且第一个例子就是把本章第四节那种歧义句翻成公式,你会看到两种读法变成两个真值表不同的公式。