Ch7-8 逻辑推理 (Logical Reasoning)
课件:lec7.pdf (117 页, 逻辑 Agent/命题逻辑) + lec8.pdf (91 页, 一阶逻辑/FOL 推理) + pl_fol.pdf (56 页, 命题与一阶逻辑补充)
教材:Artificial Intelligence: A Modern Approach (Russell & Norvig), Ch7 (Logical Agents) & Ch8 (First-Order Logic) & Ch9 (Inference in FOL)
教师:吉建民,USTC
0. 本章概述
本章是"知识、推理与规划"模块的开端,由命题逻辑与一阶逻辑两部分合并。逻辑是 1990 年代前 AI 的主导范式——它用形式化语言刻画知识,并借助保真 (truth-preserving) 的推理规则紧凑地导出新结论。命题逻辑以"事实 (facts)"为本体论约定,表达能力有限;一阶逻辑 (FOL) 引入对象、关系、函数与量词,表达能力大幅增强,但推理变为半可判定 (semidecidable)。后续章节的不确定性推理(贝叶斯网)与学习可视为对逻辑"确定性、难微调"两大缺点的回应。
| 子主题 |
核心内容 |
重要程度 |
| 知识库 Agent / 逻辑 Agent |
KB + 推理机;TELL/ASK 循环;三层次 |
⭐⭐⭐ |
| Wumpus 世界 |
PEAS;局部感知下的 KB 推理 |
⭐⭐ |
| 逻辑一般概念 |
syntax/semantics/entailment/inference;soundness/completeness |
⭐⭐⭐ |
| 命题逻辑语法/语义 |
命题符号、联结词、模型、解释函数、M(f) |
⭐⭐⭐ |
| 命题逻辑形式系统 |
Hilbert 公理 (L1)-(L3)+MP;形式证明/推导 |
⭐⭐ |
| 逻辑等值律 |
交换/结合/双否/逆否/蕴含消去/De Morgan/分配 |
⭐⭐⭐ |
| Horn/确定子句 |
定义;Modus Ponens 在 Horn 上完备且线性 |
⭐⭐⭐ |
| 前向链/反向链 |
数据驱动 vs 目标驱动;线性时间 |
⭐⭐⭐ |
| 命题归结 (Resolution) |
CNF;归结规则;反演:KB⊨p⟺KB∧¬p 不可满足 |
⭐⭐⭐ |
| FOL 语法/语义 |
常量/谓词/函数/变量/量词;项/原子句/复合句;模型+解释 |
⭐⭐⭐ |
| 量词性质 |
∀⇒, ∃∧ 搭配;对偶;顺序 |
⭐⭐⭐ |
| UI/EI 与命题化 |
全称/存在实例化;Skolem 常数;Herbrand 定理;半可判定 |
⭐⭐⭐ |
| 合一 (Unification)/MGU |
置换;最一般合一唯一;标准化分离 |
⭐⭐⭐ |
| 广义假言推理 GMP |
形式;对确定子句完备 |
⭐⭐⭐ |
| FOL 前束范式/CNF 转换 |
6 步;Skolem 化 |
⭐⭐⭐ |
| FOL 归结 |
谓词归结规则;可靠完备 |
⭐⭐⭐ |
| 知识工程七步 / 领域建模 |
亲属/集合/Wumpus/电路域 |
⭐⭐ |
| 逻辑程序设计 |
Prolog;Herbrand 域/基/模型;极小模型;SLD |
⭐⭐ |
第一部分:逻辑 Agent 与命题逻辑 (lec7)
1.1 动机:为什么需要逻辑?
三类建模范式
| 范式 |
应用 |
思考方式 |
| State-based models(搜索、MDP、博弈) |
寻路、博弈 |
states, actions, costs |
| Variable-based models(CSP、贝叶斯网) |
调度、医疗诊断 |
variables, factors |
| Logic-based models(命题/一阶逻辑) |
定理证明、验证、推理 |
logical formulas, inference rules |
逻辑推理 (logical inference) 与模型检测 (model checking) 的区别:前者施加一组保真规则紧凑地推导(如由 X1+X2=10, X1−X2=4 直接推 X1=7);后者直接枚举赋值验证。
逻辑的历史地位
- 1990 年代前是 AI 主导范式。
- 缺点 1:确定性 (deterministic),不处理不确定性 → 概率论解决。
- 缺点 2:规则化,难从数据微调 → 机器学习解决。
- 优点:紧凑的表达能力 (expressivity)——尚未被概率/ML 完全取代。
两个目标:Elaboration Tolerance 与统一表示
- Elaboration Tolerance (McCarthy, 1998):形式化应方便地修改以纳入新现象/新情况。
- 统一问题表示:问题实例 I 表示为事实集 PI,问题类 C 表示为规则集 PC,PC 可解 C 中所有实例——即知识驱动软件 (knowledge-driven software)。
语言三层级
| 类型 |
例 |
| 自然语言(非形式) |
汉语"二能除偶数";English “Two divides even numbers.” |
| 编程语言(过程性、形式) |
def even(x): return x%2==0 |
| 逻辑语言(形式) |
∀x. Even(x)⇒Divides(x,2) |
1.2 知识库 Agent (Knowledge-Based Agent)
⭐ 知识库 (Knowledge Base, KB):关于世界知识的集合,每条知识对应一个语句 (sentence),用某种知识表示语言 (knowledge representation language) 表达。
- 推理机 (Inference System):根据 KB 推出隐含知识。例 KB={下雨, 下雨⇒地湿} ⟹ 推出"地湿"。
逻辑 Agent 操作循环:
- TELL KB 新观察/新知识;
- ASK KB 下一步采取什么行动;
- 执行行动,并 TELL KB 结果。
Agent 三层次(pl_fol 补充)
| 层次 |
内容 |
可佳机器人例 |
| 知识层次 (Knowledge Level) |
最抽象,智能体拥有的知识 |
知道操作微波炉可加热食物 |
| 逻辑层次 (Logical Level) |
知识编码为语句 |
process(micro,food)⇒het(food) |
| 执行层次 (Implementation Level) |
具体算法与数据结构 |
ASP 规则实现 |
KR 假设(Levesque 1986 引 Leibniz)
思维可理解作符号表示上的机械操作。如同算术有保值 (value-preserving) 演算,思想可有保真 (truth-preserving) 演算。
KR 根本问题:平衡表达能力 (expressiveness) 与推理效率 (tractability)。
1.3 Wumpus 世界 (Wumpus World)
PEAS 描述
| 维度 |
内容 |
| Performance |
抓金 +1000;被 Wumpus 吃/掉坑 −1000;每步 −1;射箭 −10 |
| Environment |
4×4 洞穴;Wumpus(相邻格发臭 stench)、陷阱 pit(相邻格微风 breeze)、金子(同格闪烁 glitter);Wumpus 与 pit 不动 |
| Actuators |
Forward / TurnLeft / TurnRight / Grab / Shoot |
| Sensors |
stench / breeze / glitter / bump / scream |
环境表征
- Partially observable(仅局部感知当前格)、Deterministic、Sequential、Static、Discrete、Single-agent(Wumpus 实为自然特征)。
KB 推理示例
感知 breeze ⟹ 相邻方格可能有 pit;感知 stench ⟹ 相邻可能有 wumpus。据此标记安全方格并规划路径。(探索过程图示见原课件 lec7.pdf,需对照查看。)
1.4 逻辑的一般概念 (Ingredients of a Logic)
⭐ 一个逻辑由三要素构成:
| 要素 |
定义 |
例 |
| 语法 (Syntax) |
合法公式集合 |
Rain∧Wet |
| 语义 (Semantics) |
每公式指定一组模型(世界赋值/配置) |
— |
| 推理规则 (Inference rules) |
由 f 得保证成立的 g |
Modus Ponens |
核心关系
- 蕴涵 (Entailment):KB⊨α iff α 在所有 KB 为真的世界中为真 iff M(KB)⊆M(α)。
- 推理 (Inference):KB⊢α iff α 可由某过程从 KB 推出(派生 derived)。
- 可靠性 (Soundness):若 KB⊢α 则 KB⊨α(推出的都真)。
- 完备性 (Completeness):若 KB⊨α 则 KB⊢α(真的都能推出)。
逻辑谱系(表达能力递增)
Horn 命题逻辑 < 命题逻辑 < 模态逻辑 (Modal) < 一阶 Horn < 一阶逻辑 (FOL) < 二阶逻辑 < 非单调逻辑(Default / Autoepistemic / Circumscription / MKNF)。
本体论约定 (ontological commitment) 与认识论约定 (epistemological commitment) 对比(lec8):
| 语言 |
本体论(世界中存在) |
认识论(智能体相信) |
| 命题逻辑 |
事实 (facts) |
真/假/未知 |
| 一阶逻辑 |
事实、对象、关系 |
真/假/未知 |
| 时序逻辑 (Temporal) |
事实、对象、关系、时间 |
真/假/未知 |
| 概率逻辑 |
事实 |
信度 ∈[0,1] |
1.5 命题逻辑语法 (Propositional Logic Syntax)
- 命题符号 (Propositional symbols / 原子公式):A,B,C,…
- 联结词 (Logical connectives):¬, ∧, ∨, →, ↔
- 递归构造:若 f,g 是公式,则 ¬f, f∧g, f∨g, f→g, f↔g 也是公式。
- 公式本身只是符号(语法),尚无含义(语义)。
术语
| 术语 |
定义 |
| Atom(原子) |
原子公式(命题符号) |
| Literal(文字) |
原子或其否定,如 A, ¬A |
| Clause(子句) |
文字的析取,如 A∨¬B∨C |
形式系统 L(pl_fol,Hilbert 系统)
- 联结词 ¬,→ 为基本;∧,∨,↔ 为辅助,定义为:
- p∧q =df ¬(p→¬q)
- p∨q =df ¬p→q
- p↔q =df ¬((p→q)→¬(q→p))
- 公理模式:
- (L1) p→(q→p)
- (L2) (p→(q→r))→((p→q)→(p→r))
- (L3) (¬p→¬q)→(q→p)
- 推理规则 (MP):从 p, p→q 推出 q。
形式证明与推导(pl_fol)
- 形式证明:p 的序列 p1,…,pn=p,每步是公理或由前序 pi,pj(=pi→pk) 经 MP。记 ⊢p(p 是 L 的内定理)。
- 形式推导(从 Γ):每步是公理、或属于 Γ、或经 MP。记 Γ⊢p。
1.6 命题逻辑语义 (Semantics)
⭐ 模型 (Model):w 是对命题符号的真值赋值。n 个命题符号 ⟹ 2n 个模型。
⭐ 解释函数 (Interpretation function) I(f,w)∈{true(1),false(0)}:
- 基例:I(p,w)=w(p)。
- 递归:
- I(¬f,w)=¬I(f,w)
- I(f∧g,w)=I(f,w)∧I(g,w)
- I(f∨g,w)=I(f,w)∨I(g,w)
- I(f→g,w)=¬I(f,w)∨I(g,w)
- I(f↔g,w)=(I(f,w)↔I(g,w))
⭐ M(f)={w∣I(f,w)=1}:公式 f 满足的模型集。
⭐ 知识库:M(KB)=⋂f∈KBM(f)(合取 / 交)。直觉:KB 给世界施加约束,M(KB) 是满足约束的所有世界。
1.7 核心语义关系
| 关系 |
定义 |
例 |
| 蕴涵 (Entailment) KB⊨f |
M(f)⊇M(KB)(f 未添加新信息) |
Rain∧Snow⊨Snow |
| 矛盾 (Contradiction) |
M(KB)∩M(f)=∅ |
Rain∧Snow 与 ¬Snow |
| 偶然 (Contingency) |
∅⊂M(KB)∩M(f)⊂M(KB) |
Rain 与 Snow |
| 可满足 (Satisfiable) |
M(KB)=∅ |
— |
命题:KB contradicts f iff KB⊨¬f。
⭐ 核心等价(贯穿全章):
KB⊨f ⟺ KB∧¬f 不可满足
- TELL:把新句加入 KB;ASK:查询是否蕴涵某句。
1.8 有效性与可满足(pl_fol 补充)
- 有效 (valid):所有模型为真。重言式 (tautology),如 p→p, (¬p→p)→p。
- 可满足 (satisfiable):某些模型为真。
- 不可满足 (unsatisfiable):无模型为真。永假式 (contradiction),如 p∧¬p。
- p 有效 iff ¬p 不可满足。
复杂性(pl_fol)
- 判定 KB⊨p:coNP-complete。
- 判定 p(或 KB∧¬p)可满足:NP-complete。
可靠性与完备性
- ⊢ 可靠:Γ⊢p⇒Γ⊨p。
- ⊢ 完备:Γ⊨p⇒Γ⊢p。
1.9 逻辑等值律 (Logical Equivalences) ⭐⭐⭐
若 ⊨p↔q,则 p 与 q 逻辑等值。等值替换规则:若 ⊨q↔q′,则在 p 中用 q′ 替换子公式 q 得 p′,则 ⊨p↔p′。
| 名称 |
等值式 |
| ∧ 交换律 (commutativity) |
(p∧q)↔(q∧p) |
| ∨ 交换律 |
(p∨q)↔(q∨p) |
| ∧ 结合律 (associativity) |
((p∧q)∧r)↔(p∧(q∧r)) |
| ∨ 结合律 |
((p∨q)∨r)↔(p∨(q∨r)) |
| 双否消去 (double-negation) |
¬¬p↔p |
| 逆否 (contraposition) |
(p→q)↔(¬q→¬p) |
| 蕴含消去 (implication elim.) |
(p→q)↔(¬p∨q) |
| 双条件消去 (biconditional elim.) |
(p↔q)↔((p→q)∧(q→p)) |
| De Morgan |
¬(p∧q)↔(¬p∨¬q);¬(p∨q)↔(¬p∧¬q) |
| ∧ 对 ∨ 分配 (distributivity) |
(p∧(q∨r))↔((p∧q)∨(p∧r)) |
| ∨ 对 ∧ 分配 |
(p∨(q∧r))↔((p∨q)∧(p∨r)) |
1.10 合取范式 (CNF / DNF)
| 术语 |
定义 |
| 文字 (literal) |
原子或其否定,如 x, ¬x |
| 子句 (clause) |
文字析取,如 x1∨¬x2∨x3 |
| 合取范式 CNF (Conjunctive Normal Form) |
子句的合取,如 (x1∨¬x2)∧(x2∨¬x3∨¬x4) |
| 析取范式 DNF |
文字合取项的析取 |
转 CNF 三步
- 消去 → 和 ↔(用蕴含消去 + 双条件消去);
- ¬ 深入(用 De Morgan + 双否消去);
- 对 ∧ 和 ∨ 分配整理。
例:(x1∧(x2→x3))→x2
- 消 →:¬(x1∧(¬x2∨x3))∨x2
- ¬ 深入:(¬x1∨(x2∧¬x3))∨x2
- 分配律:(¬x1∨x2)∧(¬x1∨x2∨¬x3)
1.11 模型检测 (Model Checking)
SAT(可满足性)= CSP 的特例(变量=命题符号,域 {T,F},约束=子句)。
| 算法 |
特点 |
| 真值表枚举 |
O(2n) 时间,O(n) 空间 |
| DPLL |
回溯搜索 + 剪枝 |
| WalkSat |
随机局部搜索(可靠但不完备) |
1.12 推理规则与证明方法
Modus Ponens (MP)
qp,p→q
推理规则一般式:gf1,…,fk。派生 (Derivation):KB⊢f iff f 最终加入 KB。
期望性质 (Desiderata)
可靠 (sound)、完备 (complete)、高效 (efficient)。
证明方法两大类
- 推理规则应用:证明=推理规则应用序列;可作搜索问题(后继函数=规则所有可能应用);常需转正规形式。
- 模型检测:真值表枚举 O(2n);改进回溯 DPLL;启发式搜索(可靠但不完备,如 min-conflicts 爬山)。
1.13 Horn 子句与确定子句 ⭐
⭐ 确定子句 (Definite clause):(p1∧⋯∧pk)→q,其中 pi(k≥0)与 q 是命题符号。
- 例:(Rain∧Snow)→Traffic;Traffic(k=0)。
- 非例:Rain∧Snow(非蕴涵)、¬Traffic(含否定)、(Rain∧Snow)→(Traffic∨Peaceful)(结论为析取)。
⭐ Horn 子句 (Horn clause):确定子句 或 目标子句 (p1∧⋯∧pk)→⊥(等价 ¬(p1∧⋯∧pk))。
Modus Ponens on Horn clauses
qp1,…,pk,(p1∧⋯∧pk)→q
⭐ 定理(Horn 上完备):若 KB 只含 Horn 子句且 p 是被蕴涵的命题符号,则 MP 必能推出 p。即
KB⊨p ⟺ KB⊢p
- MP 仅能生成命题符号(非否定),故只能答 “yes” 或 “I don’t know”——因为全真赋值恒为模型,永不答 “no”。
1.14 前向链与反向链 ⭐⭐⭐
前向链 (Forward Chaining)
- 数据驱动:从已知事实出发,反复触发前提已满足的确定子句,加入新结论,直到无新事实或得到查询。
- 性质(Horn KB):
- 可靠:每次推理本质是 MP 的一次应用。
- 完备:每个被蕴含的原子语句终被生成。
- 线性时间。
- 完备性证明思路:设最小模型(所有可推出原子为真),任何被蕴含原子必在其中。
反向链 (Backward Chaining)
- 目标驱动:从查询目标出发,反向找以该目标为头的规则,递归证明其前提。
前向 vs 反向
| 维度 |
前向链 |
反向链 |
| 驱动方式 |
数据驱动 |
目标驱动 |
| 适用 |
事实少、规则多 |
查询少、规则多 |
| Prolog |
— |
核心机制 |
1.15 命题归结 (Resolution) ⭐⭐⭐
⭐ 归结规则:
- Unit Resolution:αα∨β,¬β
- General Resolution:α∨γα∨β,¬β∨γ
归结算法
- 将公式化为子句集合(CNF);
- 反复使用归结规则;
- 无可添加新子句 ⟹ 可满足;出现空子句 □ ⟹ 不可满足。
⭐ 归结反演:证明 KB⊨p ⟺ 证明 KB∧¬p 不可满足 ⟺ 转 CNF 后归结出空子句。
- 命题逻辑中归结算法可靠、完备。
- 时间复杂度:指数级(子句数与归结步数)。
第二部分:一阶逻辑 (First-Order Logic, lec8)
2.1 为何需要 FOL?
命题逻辑的优缺点
优点:
- 陈述性 (declarative):知识与推理分离,且推理完全不依赖领域(对比程序设计语言的过程性)。
- 支持部分/析取/否定信息(不像大多数数据库)。
- 组合性 (compositional):复合句含义是各部分含义的函数。
- 上下文无关 (context-independent)(不像自然语言)。
缺点:表达力弱。不能说"陷阱在相邻方格引起微风",只能逐格写 B1,1↔(P1,2∨P2,1)。缺对象/关系与量词/变量。
FOL 的本体论约定
命题逻辑假设世界含事实 (facts);一阶逻辑(如自然语言)假设世界含:
- 对象 (Objects):人、房屋、数、颜色、棒球赛、战争…
- 关系 (Relations):red、round、prime;brother of、bigger than、part of…
- 函数 (Functions):father of、best friend、one more than、plus…
谓词描述个体(可独立存在事物)间的关系或属性。
2.2 FOL 语法 (Syntax)
⭐ 基本元素:
| 元素 |
例 |
| 常量 (Constants) |
KingJohn, 2, USTC |
| 谓词 (Predicates) |
Brother, > |
| 函数 (Functions) |
Sqrt, LeftLegOf |
| 变量 (Variables) |
x,y,a,b |
| 联结词 |
¬,⇒,∧,∨,⇔ |
| 等词 (Equality) |
= |
| 量词 (Quantifiers) |
∀, ∃ |
⭐ 项 (Term) = 函数(项1,…,项n) 或 常量 或 变量。
⭐ 原子句 (Atomic sentence) = 谓词(项1,…,项n) 或 项1=项2。
- 例:Brother(KingJohn,Richard);>(Length(LeftLegOf(Richard)),Length(LeftLegOf(KingJohn)))。
⭐ 复合句 (Complex sentence):用联结词连接原子句。例 Sibling(KingJohn,Richard)⇒Sibling(Richard,KingJohn)。
形式系统 K(pl_fol)
符号表:
- 逻辑符号:个体变元 x1,x2,…;联结词 ¬,→,∧,∨,↔;量词 ∀,∃。
- 非逻辑符号:个体常元 a1,a2,…;函项符号 fn,m(按元数);谓词符号 Pn,m。
形成规则:
- 项:(1) 变元/常元是项;(2) f 是 n 元函项符号,ti 是项 ⟹ f(t1,…,tn) 是项。
- 公式:(1) P 是 n 元谓词,ti 项 ⟹ P(t1,…,tn) 原子公式;(2) ¬p,p→q,p∧q,p∨q,p↔q 复合公式;(3) ∀xp, ∃xp 量化公式。
术语(pl_fol)
- 子公式;自由/约束出现(∀xp 中 x 约束,p 为辖域);闭项/开项(不含/含变元);闭公式/开公式(无/有自由变元);项 t 对 p(x) 中 x 自由(替换后 t 中变元仍自由)。
公理系统 K
- (K1) p→(q→p)
- (K2) (p→(q→r))→((p→q)→(p→r))
- (K3) (¬p→¬q)→(q→p)
- (K4) ∀xp(x)→p(t)(项 t 对 p(x) 中 x 自由)
- (K5) ∀x(p→q)→(p→∀xq)(x 不在 p 自由出现)
- 推理规则:(MP) p,p→q⊢q;(UG, Universal Generalization) p⊢∀xp。
2.3 FOL 语义 (Semantics)
⭐ 语句真值由一个模型 (model) 和解释 (interpretation) 判定。
- 模型含对象(域元素 domain elements)及其间关系。
- 解释指定指代 (referents):
- 常量符号 ⟶ 对象
- 谓词符号 ⟶ 关系
- 函数符号 ⟶ 函数关系
- 原子句 predicate(t1,…,tn) 为真 iff ti 指代的对象处于 predicate 指代的关系中。
形式语义(pl_fol)
- 一阶结构 M=(D,F,P):论域 D(非空);D 上函数集 F;D 上关系集 P。
- 常元 a↦aM∈D;n 元函数符号 ↦fM:Dn→D;n 元谓词 ↦PM⊆Dn。
- 个体变元指派 V:Y→D;一阶解释 I=(M,V)。
- 赋值:
- I(x)=V(x);I(f(t1,…,tn))=fM(I(t1),…,I(tn))。
- P(t1,…,tn) 真 iff (I(t1),…,I(tn))∈PM。
- ∀xp 真 iff 对所有 d∈D,Ix=d(p) 真。
- ∃xp 真 iff ¬∀x¬p 真。
- Ix=d=(M,V∣x=d),V∣x=d(y)={dV(y)y=xotherwise。
模型与有效性(pl_fol)
- M 有效:对一切 V,p 在 (M,V) 真 ⟹ M⊨p。
- 逻辑有效:对一切结构 M,M⊨p,记 ⊨p。
- 模型:M⊨Γ(对 Γ 中所有 p,M⊨p)。
- 语义后承 Γ⊨p:对一切 M,M⊨Γ⇒M⊨p。
- FOL 公理系统与语义可靠、完备。
FOL 模型无穷多
枚举 FOL 模型不可行:域个数 n:1→∞ → 每个 k 元谓词的关系 → 每个常量指代… ⟹ 通过枚举模型检验蕴涵不可行。
FOL 的局限(pl_fol)
无法刻画极小、传递闭包等关系(如仅靠 parent 公理无法定义 ancestor 传递闭包,需归纳/不动点)。
2.4 量词 (Quantifiers) ⭐⭐⭐
全称量词 (Universal) ∀
∀x At(x,USTC)⇒Smart(x)
- “∀xP” 在模型 m 中为真 iff 对每个对象 x,P 为真。≈ 实例的合取式。
⚠️ 常见错误:∀ 与 ∧ 搭配——∀xAt(x,USTC)∧Smart(x) 意为"所有人都在 USTC 且都聪明"。正确:∀ 配 ⇒。
存在量词 (Existential) ∃
∃x At(x,USTC)∧Smart(x)
- “∃xP” 真 iff P 对某对象为真。≈ 实例的析取式。
⚠️ 常见错误:∃ 与 ⇒ 搭配——∃xAt(x,USTC)⇒Smart(x),只要有人不在 USTC 即真!正确:∃ 配 ∧。
量词性质
- ∀x∀y=∀y∀x;∃x∃y=∃y∃x。
- 但 ∃x∀y=∀y∃x:
- ∃x∀yLoves(x,y):“存在一人爱所有人”。
- ∀y∃xLoves(x,y):“每人被至少一人爱”。
⭐ 量词对偶 (Duality):
∀xP≡¬∃x¬P∃xP≡¬∀x¬P
等词 (Equality)
term1=term2 为真 iff 指代同一对象。
Sibling 定义:
∀x,y Sibling(x,y)⇔[¬(x=y)∧∃m,f ¬(m=f)∧Parent(m,x)∧Parent(f,x)∧Parent(m,y)∧Parent(f,y)]
2.5 使用 FOL:领域建模
亲属域 (Kinship)
- ∀x,y Brother(x,y)⇒Sibling(x,y)
- Sibling 对称:∀x,y Sibling(x,y)⇒Sibling(y,x)
- ∀x,y Mother(x,y)⇔(Female(x)∧Parent(x,y))
- ∀x,y Cousin(x,y)⇔∃p,ps Parent(p,x)∧Sibling(ps,p)∧Parent(ps,y)
集合域 (Set)
- ∀s Set(s)⇔(s={})∨(∃x,s2 Set(s2)∧s={x∣s2})
- 空集不可分解:¬∃x,s {x∣s}={}
- 子集:∀s1,s2 s1⊆s2⇔(∀x x∈s1⇒x∈s2)
- 相等:∀s1,s2 (s1=s2)⇔(s1⊆s2∧s2⊆s1)
- 交:∀x,s1,s2 x∈(s1∩s2)⇔(x∈s1∧x∈s2)
- 并:∀x,s1,s2 x∈(s1∪s2)⇔(x∈s1∨x∈s2)
Wumpus 域 FOL KB
- 感知:∀t,s,b Percept([s,b,Glitter],t)⇒Glitter(t)
- 反射:∀t Glitter(t)⇒BestAction(Grab,t)
- 带内部状态:∀t AtGold(t)∧¬Holding(Gold,t)⇒BestAction(Grab,t)
⭐ 诊断规则 (Diagnostic) vs 因果规则 (Causal):
-
诊断(由果推因):∀s Breezy(s)⇒∃r Adjacent(r,s)∧Pit(r)
-
因果(由因推果):∀r,s Adjacent(r,s)∧Pit(r)⇒Breezy(s)
-
Breezy 定义:∀s Breezy(s)⇔∃r Adjacent(r,s)∧Pit(r)
-
Adjacent:∀x,y,a,b Adjacent([x,y],[a,b])⇔[a,b]∈{[x+1,y],[x−1,y],[x,y+1],[x,y−1]}
与 FOL KB 交互(置换/substitution)
- Tell(KB,Percept([Smell,Breeze,None],5))
- Ask(KB,a BestAction(a,5)) ⟹ 答 {a/Shoot}(绑定表 binding list)。
- 给定句子 S 与置换 σ,Sσ 为代入结果。Ask(KB,S) 返回部分/所有使 KB⊨Sσ 的 σ。
2.6 知识工程 (Knowledge Engineering) 七步
- 确定任务 (Identify the task)。
- 搜集相关知识 (Assemble relevant knowledge)。
- 确定词汇表 (vocabulary):谓词/函数/常量。
- 编码通用域知识 (Encode general knowledge)。
- 编码特定问题实例 (Encode specific instance)。
- 提交查询获取答案 (Pose queries)。
- 调试 KB (Debug)。
电路域 (Electronic Circuits) 例——一位全加器
- 任务:电路验证(是否正确相加)。
- 相关知识:由导线 (wires) 和门 (gates) 组成;门类型 AND/OR/XOR/NOT;忽略大小/形状/颜色。
- 词汇表:Type(X1)=XOR 或 Type(X1,XOR) 或 XOR(X1)。
- 通用知识公理:
- ∀t1,t2 Connected(t1,t2)⇒Signal(t1)=Signal(t2)
- ∀t Signal(t)=1∨Signal(t)=0;1=0
- Connected 可交换:∀t1,t2 Connected(t1,t2)⇒Connected(t2,t1)
- OR 门:∀g Type(g)=OR⇒Signal(Out(1,g))=1⇔∃n Signal(In(n,g))=1
- AND 门:输出 0 iff 某 输入 0
- XOR 门:输出 1 iff 两输入不同
- NOT 门:输出与输入相反
- 查询:∃i1,i2,i3,o1,o2 Signal(In(1,C1))=i1∧⋯∧Signal(Out(2,C1))=o2。
- 调试:可能遗漏 1=0 等断言。
第三部分:FOL 推理 (Inference in FOL)
3.1 命题化 (Reduction to Propositional Inference)
⭐ 全称实例化 (UI, Universal Instantiation):
Subst({v/g},α)∀v α
对任意变量 v 和基项 (ground term) g。
- 例 ∀x King(x)∧Greedy(x)⇒Evil(x) 得 King(John)∧Greedy(John)⇒Evil(John) 等。
- UI 可多次应用;新 KB 与旧 KB 逻辑等价。
⭐ 存在实例化 (EI, Existential Instantiation):
Subst({v/k},α)∃v α
k 为不出现在 KB 他处的新常量符号,称 Skolem 常数 (Skolem constant)。
- 例 ∃x Crown(x)∧OnHead(x,John) ⟹ Crown(C1)∧OnHead(C1,John)。
- EI 只能应用一次;新 KB 不等价于旧 KB,但可满足性等价(satisfiable iff)。
命题化与 Herbrand 定理
命题化 KB 与查询,应用归结,返回结果。
⚠️ 问题:有函数符号时基项无穷(如 Father(Father(Father(John))))。
⭐ Herbrand 定理 (1930):若语句 α 被 FOL KB 蕴涵,则存在仅涉及命题化 KB 有限子集的证明。
- 算法:n=0→∞,用深度 n 项命题化,查是否蕴涵。
- 问题:α 被蕴涵则停;不被蕴涵则死循环。
⭐ 半可判定 (Semidecidable)(Turing 1936, Church 1936):FOL 蕴涵半可判定——存在算法对每个被蕴涵语句答 yes,但不存在算法对每个非蕴涵语句答 no。
命题化的问题
- 生成大量无关语句(如 Greedy(Richard) 与结论无关)。
- p 个 k 元谓词 + n 常量 ⟹ p⋅nk 实例;有函数符号更糟。
3.2 合一 (Unification) ⭐⭐⭐
⭐ 若存在置换 θ 使 αθ=βθ,则 θ 合一 α,β,记 Unify(α,β)=θ。
示例(Knows(John,x) 与):
| p |
q |
θ |
| Knows(John,x) |
Knows(John,Jane) |
{x/Jane} |
| Knows(John,x) |
Knows(y,OJ) |
{x/OJ,y/John} |
| Knows(John,x) |
Knows(y,Mother(y)) |
{y/John,x/Mother(John)} |
| Knows(John,x) |
Knows(x,OJ) |
fail(x 同时=John 和 OJ) |
⭐ 标准化分离 (Standardizing apart):换名消除变量重叠,如 Knows(z17,OJ)。
⭐ 最一般合一 (MGU):对变量限制最少的合一者;对每个表达式对,MGU 唯一(至变量换名)。
- 例 Knows(John,x) 与 Knows(y,z),MGU ={y/John,x/z}(比 {y/John,x/John,z/John} 更一般)。
置换与合成(pl_fol 形式定义)
- 置换 (substitution) θ={v1/t1,…,vn/tn}:vi 变量,ti=vi 的项,vi=vj。
- Eθ:同时替换 E 中所有 vi 为 ti。
- 例 E=P(x,y,f(a)),θ={x/b,y/x} ⟹ Eθ=P(b,x,f(a))。
- 合成 θσ:先用 θ 再用 σ。
- θ={x/f(y),y/z},σ={x/a,y/b,z/y} ⟹ θσ={x/f(b),z/y}。
合一者与 MGU(pl_fol)
- 合一者 (unifier) θ:S1θ=⋯=Skθ。例 {P(f(x),z),P(y,a)} 合一者 σ={y/f(a),x/a,z/a}。
- mgu:对任意合一 σ 存在 γ 使 σ=θγ。例 mgu ={y/f(x),z/a},σ=θ{x/a}。
- mgu(等价)唯一。
- 分歧集 (disagreement set):最左符号分歧处抽取的子表达式集合。例 S={P(f(x),h(y),a),P(f(x),z,a),P(f(x),h(y),b)} ⟹ {h(y),z}。
- 合一算法:σ0=ϵ;若 σk 是 S 合一则停(σk 为 mgu);否则找 Sσk 分歧集 Dk;若 Dk 含变量 v 与不含 v 的项 t,σk+1=σk{v/t};否则不可合一。
3.3 广义假言推理 (Generalized Modus Ponens, GMP) ⭐⭐⭐
⭐ GMP:
qθp1′,p2′,…,pn′,(p1∧p2∧⋯∧pn⇒q)
其中 pi′θ=piθ 对所有 i。
例:
|
|
| p1′=King(John) |
p1=King(x) |
| p2′=Greedy(y) |
p2=Greedy(x) |
| θ={x/John,y/John} |
q=Evil(x) |
|
qθ=Evil(John) |
- 用于确定子句 (definite clauses) KB(恰一个正文字);所有变量默认全称量化。
半可判定
FOL(即使限制 Horn 子句)半可判定:若 KB 蕴涵 f,存在算法有限步证明;若不蕴涵,无算法有限步显示。
GMP 可靠性证明
需证 p1′,…,pn′,(p1∧⋯∧pn⇒q)⊨qθ(给定 pi′θ=piθ)。
- 引理:对任意 p,p⊨pθ。
- (p1∧⋯∧pn⇒q)⊨(p1∧⋯∧pn⇒q)θ=(p1θ∧⋯∧pnθ⇒qθ)
- p1′,…,pn′⊨p1′∧⋯∧pn′⊨p1′θ∧⋯∧pn′θ
- 由 1、2 经普通 MP 得 qθ。
GMP 完备性
- 对一般 FOL 不完备(非每句可转 Horn 形式)。
- 对确定子句 FOL KB 完备。
3.4 FOL 前向链 (Forward Chaining)
经典例:West 犯罪 KB
1 2 3 4 5 6 7
| American(x) ∧ Weapon(y) ∧ Sells(x,y,z) ∧ Hostile(z) ⇒ Criminal(x) Owns(Nono,M1), Missile(M1) (由 ∃ 实例化) Missile(x) ∧ Owns(Nono,x) ⇒ Sells(West,x,Nono) Missile(x) ⇒ Weapon(x) Enemy(x,America) ⇒ Hostile(x) American(West) Enemy(Nono,America)
|
前向链推导 ⟹ Criminal(West)。
性质
- 对一阶确定子句可靠且完备(证明类似命题逻辑)。
- Datalog = 一阶确定子句 + 无函数(如犯罪 KB)⟹ FC 多项式迭代终止(至多 p⋅nk 文字)。
- 一般情况 α 不被蕴涵时可能不终止(不可避免,因确定子句蕴涵半可判定)。
效率
- 无需在迭代 k 重新匹配前提未在 k−1 新增的规则。
- DB 索引允许 O(1) 检索已知事实(如查 Missile(x) 检索 Missile(M1))。
- 匹配合取前提与已知事实是 NP-hard。
3.5 FOL 反向链 (Backward Chaining)
形式 Q1x1⋯Qnxnp,p 无量词(母式 matrix)。
转换规则(Q∗ 为 Q 对偶量词):
- 改名:∣=Qxp(x)↔Qyp(y)(条件)。
- 移量词:x 不在 p 自由 ⟹ ∣=(p→Qxq)↔Qx(p→q);x 不在 q 自由 ⟹ ∣=(Qxp→q)↔Q∗x(p→q)。
- ¬ 内移:∣=¬Qxp↔Q∗x¬p。
- ∣=(∀xp∧∀xq)↔∀x(p∧q)。
- ∣=(∃xp∨∃xq)↔∃x(p∨q)。
- x 不在 p 自由 ⟹ ∣=(p∨∀xq)↔∀x(p∨q),∣=(p∧∃xq)↔∃x(p∧q)。
3.7 FOL 转 CNF ⭐⭐⭐
⭐ 六步(示例"爱所有动物者被某人爱" ∀x[∀yAnimal(y)⇒Loves(x,y)]⇒[∃yLoves(y,x)]):
- 消等价/蕴含 (Eliminate ↔,⇒):
∀x[¬∀y¬Animal(y)∨Loves(x,y)]∨[∃yLoves(y,x)]
- ¬ 内移 (Move ¬ inwards):¬∀xp≡∃x¬p,¬∃xp≡∀x¬p
∀x[∃yAnimal(y)∧¬Loves(x,y)]∨[∃yLoves(y,x)]
- 变量标准化 (Standardize variables):各量词不同变量
∀x[∃yAnimal(y)∧¬Loves(x,y)]∨[∃zLoves(z,x)]
- Skolem 化 (Skolemize):存在变量 ⟹ 所辖全称变量的 Skolem 函数
∀x[Animal(F(x))∧¬Loves(x,F(x))]∨Loves(G(x),x)
- 去全称量词 (Drop universal quantifiers):
[Animal(F(x))∧¬Loves(x,F(x))]∨Loves(G(x),x)
- ∨ 分配到 ∧ (Distribute ∨ over ∧):
[Animal(F(x))∨Loves(G(x),x)]∧[¬Loves(x,F(x))∨Loves(G(x),x)]
Skolem 化细则(pl_fol)
前束范式中:
- ∃x 左无 ∀ ⟹ 母式中 x 替换为新常量 a;
- ∃x 左有 ∀x1⋯∀xm ⟹ 替换为 f(x1,…,xm)(新 n 元函数符号)。
- 例:∀x∃y,z((Animal(y)∧¬Loves(x,y))∨Loves(z,x)) ⟹ ∀x((Animal(f(x))∧¬Loves(x,f(x)))∨Loves(g(x),x))。
性质:p 不可满足 iff 其 CNF s 不可满足;∣=s→p 但 ∣=p→s。
3.8 FOL 归结 (Resolution) ⭐⭐⭐
⭐ 归结反演基础:KB⊨α iff (KB∧¬α) 不可满足。
算法:
- 所有公式转 CNF;
- 反复应用归结规则;
- 返回不可满足 iff 导出 false(空子句)。
⭐ 全一阶归结规则:
l1∨⋯∨li−1∨li+1∨⋯∨mj−1∨mj+1∨⋯∨mnl1∨⋯∨lk,m1∨⋯∨mnθ
其中 Unify(li,¬mj)=θ。两子句须标准化分离(无共享变量)。
例:¬Rich(x)∨Unhappy(x),Rich(Ken) ⊢ Unhappy(Ken),θ={x/Ken}。
对 CNF(KB∧¬α) 归结,对 FOL 完备。
谓词归结规则(pl_fol)
(α∨γ)θα∨p,¬q∨γ
p 与 q 的 mgu 为 θ,两子句标准化分离。
- 例 C1=P(x)∨Q(f(x)),C2=R(g(y))lor¬Q(f(a)),mgu σ={x/a} ⟹ 归结式 P(a)∨R(g(y))。
归结过程:KB⊨α ⟺ KB∧¬α 不可满足 ⟺ CNF ⟺ 标准化分离得子句集 E ⟺ 对 E 归结 ⟹ 归结式放入 E,反复 ⟹ 空子句 ⟹ 得证。
3.9 FOL 推理总结
|
命题逻辑 |
一阶逻辑 |
| 模型检测 |
真值表 / DPLL / WalkSat |
不可行(模型无穷)→ 命题化 |
| Modus Ponens |
Horn 子句 |
MP++(Horn 子句,加合一/置换) |
| 归结 |
一般 |
归结++(一般,加合一/置换) |
++ = unification and substitution。关键思想:FOL 中变量带来紧凑的知识表示。
FOL 不可判定性(pl_fol)
- FOL 不可判定(停机问题):不存在程序判定任意公式 p 是否有效 / 是否为任意 Γ 的逻辑结论。
- FOL 有效性半可判定:有效公式可证明(有限步)。
- 很多 KR 语言(OWL、描述逻辑 description logic)是 FOL 的可判定子集。
- 模型检测:不可行(解释无穷)。
- 推理规则法:归结 (resolution)、Tableaux 方法等。
第四部分:逻辑程序设计 (Logic Programming, pl_fol)
4.1 基本观点
⭐ Algorithm = Logic + Control
- Logic:要解决的问题是什么。
- Control:如何解决问题。
|
传统程序设计(C/C++) |
逻辑程序设计(Prolog) |
| 关注 |
Control,掩盖 Logic |
只写 Logic,系统自动 Control |
特点:
- Logic 与 Control 分离:Logic 通用,Control 可用不同方法改进。
- 纯 Logic 便于验证,保证可靠性。
- 高层次编程:只告诉系统做什么 (What),不需如何做 (How)。
- 相对效率较低。
4.2 语法
- 规则 A←A1,A2,…,Am:A 为头(原子),Ai 为体(原子合取)。
- m=0 为事实(无体,往往省略 ←)。
- 一条规则 A←A1,…,Am 代表 Horn 子句 A∨¬A1∨⋯∨¬Am(至多一正文字)。
- 所有变元默认全称量化:∀x1,…,xn A∨¬A1∨⋯∨¬Am。
4.3 Herbrand 域/基/常例
- 常项 (ground term):由 P 中常元和函数符号复合的项。
- Herbrand 域 U(P):所有常项集合。例 P1={p(1).,q(2).,q(x)←p(x).} ⟹ U(P1)={1,2}。
- 常原子:常项 + 谓词符号。Herbrand 基 B(P) = 所有常原子集合。例 B(P1)={p(1),p(2),q(1),q(2)}。
- 常例 (ground instance):对规则变元代入常项所得无变元规则。有函数符号时 Herbrand 域可数无穷,常例也可能无穷。
4.4 Herbrand 解释与模型
- Herbrand 解释 IH:论域 =U(P),VH 把常项/常原子映射为自身;指派集合 M(P)⊆B(P),常原子 p 真 iff p∈M(P)。
- 规则真值:IH(R)=t iff 对所有常例 R∗,IH(R∗)=t;R∗=A←A1,…,Am 真 iff A∈M(P) 或某 Ai∈/M(P)。
- Herbrand 模型:所有规则在该解释下为真。例 P1 有两 Herbrand 模型 {p(1),q(1),q(2)} 与 {p(1),p(2),q(1),q(2)}。
⭐ 性质:
- S 不可满足 iff S 无 Herbrand 模型。
- 任何逻辑程序都有 Herbrand 模型。
- 两 Herbrand 模型交集也是模型。
- ⟹ 存在唯一极小 Herbrand 模型 MP(least Herbrand model)。
- P1⊆P2⇒MP1⊆MP2。
4.5 SLD 归结规则
令 H←B1,…,Bn 为程序规则,←A1,…,Am 为目标(已重命名变量),θ 为 Ai 与 H 的 mgu:
←(A1,…,Ai−1,B1,…,Bn,Ai+1,…,Am)θ←A1,…,AmH←B1,…,Bn
SLD 归结是 Prolog 的核心执行机制。
速查表
推理规则速查
| 规则 |
形式 |
适用 |
| Modus Ponens (MP) |
p, p→q⊢q |
命题/Horn |
| Modus Ponens (Horn) |
p1,…,pk, (p1∧⋯∧pk)→q⊢q |
Horn,完备 |
| Generalized MP (GMP) |
p1′,…,pn′, (p1∧⋯∧pn⇒q)⊢qθ |
FOL 确定子句 |
| Unit Resolution |
(α∨β), ¬β⊢α |
命题 |
| General Resolution |
(α∨β), (¬β∨γ)⊢α∨γ |
命题/FOL |
| UG (Universal Generalization) |
p⊢∀xp |
FOL 公理系统 |
等值律速查(见 §1.9 完整表)
双否 / 逆否 / 蕴含消去 / 双条件消去 / De Morgan / 分配律 / 交换结合律。
算法速查
| 算法 |
输入 |
思想 |
完备性 |
| DPLL |
CNF |
回溯+剪枝 |
完备 |
| WalkSat |
CNF |
随机局部搜索 |
可靠不完备 |
| 前向链 |
Horn KB |
数据驱动,反复触发规则 |
Horn 完备,线性 |
| 反向链 |
Horn KB |
目标驱动,递归证明 |
Horn 完备 |
| 命题归结 |
CNF |
归结反演,空子句=不可满足 |
完备 |
| FOL 归结 |
CNF(含 Skolem) |
合一+归结反演 |
完备 |
| 合一算法 |
原子集 |
分歧集+置换迭代 |
得 MGU |
范式速查
| 范式 |
形式 |
转换 |
| CNF |
子句合取 |
消→↔ / ¬深入 / 分配 |
| 前束范式 |
Q1x1⋯Qnxnp |
改名/移量词/¬内移 |
| FOL CNF |
前束→Skolem→去∀→CNF |
6 步 |
核心关系速查 ⭐
KB⊨f⟺M(f)⊇M(KB)⟺KB∧¬f 不可满足
p 有效⟺¬p 不可满足∀xP≡¬∃x¬P
关键概念清单
- [ ] 解释三类建模范式(state-based / variable-based / logic-based)及逻辑推理 vs 模型检测的区别
- [ ] 写出逻辑 Agent 的 TELL/ASK 循环与三层次(知识/逻辑/执行)
- [ ] 给出 Wumpus 世界的 PEAS 描述与环境表征
- [ ] 陈述逻辑三要素(syntax/semantics/inference rules)与蕴涵/推理/可靠/完备的定义
- [ ] 写出 M(KB)=⋂f∈KBM(f) 及 KB⊨f⟺KB∧¬f 不可满足
- [ ] 区分蕴涵 (entailment)、矛盾 (contradiction)、偶然 (contingency)、可满足 (satisfiable)
- [ ] 默写命题逻辑语法递归定义与 Atom/Literal/Clause 术语
- [ ] 写出命题逻辑 Hilbert 公理 (L1)-(L3) + MP 及形式证明/推导定义
- [ ] 默写逻辑等值律全集(交换/结合/双否/逆否/蕴含消去/双条件消去/De Morgan/分配)
- [ ] 完成 CNF 转换三步并给出例子
- [ ] 写出确定子句与 Horn 子句定义,说明 MP 在 Horn 上完备且线性
- [ ] 描述前向链/反向链的思想与对比(数据驱动 vs 目标驱动)
- [ ] 写出命题归结规则(Unit + General)与归结反演流程
- [ ] 列出 FOL 语法基本元素(常量/谓词/函数/变量/联结词/等词/量词)与项/原子句/复合句定义
- [ ] 写出量词正确搭配(∀⇒, ∃∧)及常见错误
- [ ] 陈述量词性质(可交换/不可交换)与量词对偶
- [ ] 用 FOL 建模亲属/集合/Wumpus/电路领域
- [ ] 区分诊断规则与因果规则
- [ ] 默写知识工程七步
- [ ] 写出 UI 与 EI 规则,说明 EI 用 Skolem 常数、仅一次、可满足等价非逻辑等价
- [ ] 陈述 Herbrand 定理与 FOL 半可判定性
- [ ] 给定两原子式,求其合一置换与 MGU;说明标准化分离
- [ ] 写出 GMP 形式并证明其可靠性(含引理 p⊨pθ)
- [ ] 说明 GMP 对一般 FOL 不完备、对确定子句完备
- [ ] 完成 FOL 转 CNF 六步(尤其 Skolem 化两种情况)
- [ ] 写出前束范式转换规则
- [ ] 写出全一阶归结规则(含合一)与归结反演流程
- [ ] 陈述 FOL 不可判定性与半可判定性
- [ ] 说明 Algorithm = Logic + Control 及 Prolog 规则 A←A1,…,Am 与 Horn 子句关系
- [ ] 定义 Herbrand 域/基/模型,陈述极小 Herbrand 模型唯一性
- [ ] 写出 SLD 归结规则