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)M(f) ⭐⭐⭐
命题逻辑形式系统 Hilbert 公理 (L1)-(L3)+MP;形式证明/推导 ⭐⭐
逻辑等值律 交换/结合/双否/逆否/蕴含消去/De Morgan/分配 ⭐⭐⭐
Horn/确定子句 定义;Modus Ponens 在 Horn 上完备且线性 ⭐⭐⭐
前向链/反向链 数据驱动 vs 目标驱动;线性时间 ⭐⭐⭐
命题归结 (Resolution) CNF;归结规则;反演:KB⊨p  ⟺  KB∧¬p\text{KB}\models p\iff\text{KB}\land\lnot p 不可满足 ⭐⭐⭐
FOL 语法/语义 常量/谓词/函数/变量/量词;项/原子句/复合句;模型+解释 ⭐⭐⭐
量词性质 ∀⇒, ∃∧\forall\Rightarrow,\ \exists\land 搭配;对偶;顺序 ⭐⭐⭐
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=4X_1+X_2=10,\ X_1-X_2=4 直接推 X1=7X_1=7);后者直接枚举赋值验证。

逻辑的历史地位

  • 1990 年代前是 AI 主导范式。
  • 缺点 1:确定性 (deterministic),不处理不确定性 → 概率论解决。
  • 缺点 2:规则化,难从数据微调 → 机器学习解决。
  • 优点:紧凑的表达能力 (expressivity)——尚未被概率/ML 完全取代。

两个目标:Elaboration Tolerance 与统一表示

  • Elaboration Tolerance (McCarthy, 1998):形式化应方便地修改以纳入新现象/新情况。
  • 统一问题表示:问题实例 II 表示为事实集 PIP_I,问题类 CC 表示为规则集 PCP_C,PCP_C 可解 CC 中所有实例——即知识驱动软件 (knowledge-driven software)。

语言三层级

类型 例
自然语言(非形式) 汉语"二能除偶数";English “Two divides even numbers.”
编程语言(过程性、形式) def even(x): return x%2==0
逻辑语言(形式) ∀x. Even(x)⇒Divides(x,2)\forall x.\ \text{Even}(x)\Rightarrow\text{Divides}(x,2)

1.2 知识库 Agent (Knowledge-Based Agent)

⭐ 知识库 (Knowledge Base, KB):关于世界知识的集合,每条知识对应一个语句 (sentence),用某种知识表示语言 (knowledge representation language) 表达。

  • 推理机 (Inference System):根据 KB 推出隐含知识。例 KB={下雨, 下雨⇒地湿}\text{KB}=\{\text{下雨},\ \text{下雨}\Rightarrow\text{地湿}\} ⟹ 推出"地湿"。

逻辑 Agent 操作循环:

  1. TELL KB 新观察/新知识;
  2. ASK KB 下一步采取什么行动;
  3. 执行行动,并 TELL KB 结果。

Agent 三层次(pl_fol 补充)

层次 内容 可佳机器人例
知识层次 (Knowledge Level) 最抽象,智能体拥有的知识 知道操作微波炉可加热食物
逻辑层次 (Logical Level) 知识编码为语句 process(micro,food)⇒het(food)\text{process(micro,food)}\Rightarrow\text{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\text{Rain}\land\text{Wet}
语义 (Semantics) 每公式指定一组模型(世界赋值/配置) —
推理规则 (Inference rules) 由 ff 得保证成立的 gg Modus Ponens

核心关系

  • 蕴涵 (Entailment):KB⊨α\text{KB}\models\alpha iff α\alpha 在所有 KB 为真的世界中为真 iff M(KB)⊆M(α)M(\text{KB})\subseteq M(\alpha)。
  • 推理 (Inference):KB⊢α\text{KB}\vdash\alpha iff α\alpha 可由某过程从 KB 推出(派生 derived)。
  • 可靠性 (Soundness):若 KB⊢α\text{KB}\vdash\alpha 则 KB⊨α\text{KB}\models\alpha(推出的都真)。
  • 完备性 (Completeness):若 KB⊨α\text{KB}\models\alpha 则 KB⊢α\text{KB}\vdash\alpha(真的都能推出)。

逻辑谱系(表达能力递增)

Horn 命题逻辑 < 命题逻辑 < 模态逻辑 (Modal) < 一阶 Horn < 一阶逻辑 (FOL) < 二阶逻辑 < 非单调逻辑(Default / Autoepistemic / Circumscription / MKNF)。

本体论约定 (ontological commitment) 与认识论约定 (epistemological commitment) 对比(lec8):

语言 本体论(世界中存在) 认识论(智能体相信)
命题逻辑 事实 (facts) 真/假/未知
一阶逻辑 事实、对象、关系 真/假/未知
时序逻辑 (Temporal) 事实、对象、关系、时间 真/假/未知
概率逻辑 事实 信度 ∈[0,1]\in[0,1]

1.5 命题逻辑语法 (Propositional Logic Syntax)

  • 命题符号 (Propositional symbols / 原子公式):A,B,C,…A,B,C,\dots
  • 联结词 (Logical connectives):¬, ∧, ∨, →, ↔\lnot,\ \land,\ \lor,\ \to,\ \leftrightarrow
  • 递归构造:若 f,gf,g 是公式,则 ¬f, f∧g, f∨g, f→g, f↔g\lnot f,\ f\land g,\ f\lor g,\ f\to g,\ f\leftrightarrow g 也是公式。
  • 公式本身只是符号(语法),尚无含义(语义)。

术语

术语 定义
Atom(原子) 原子公式(命题符号)
Literal(文字) 原子或其否定,如 A, ¬AA,\ \lnot A
Clause(子句) 文字的析取,如 A∨¬B∨CA\lor\lnot B\lor C

形式系统 LL(pl_fol,Hilbert 系统)

  • 联结词 ¬,→\lnot,\to 为基本;∧,∨,↔\land,\lor,\leftrightarrow 为辅助,定义为:
    • p∧q =df ¬(p→¬q)p\land q\ =_{df}\ \lnot(p\to\lnot q)
    • p∨q =df ¬p→qp\lor q\ =_{df}\ \lnot p\to q
    • p↔q =df ¬((p→q)→¬(q→p))p\leftrightarrow q\ =_{df}\ \lnot((p\to q)\to\lnot(q\to p))
  • 公理模式:
    • (L1) p→(q→p)p\to(q\to p)
    • (L2) (p→(q→r))→((p→q)→(p→r))(p\to(q\to r))\to((p\to q)\to(p\to r))
    • (L3) (¬p→¬q)→(q→p)(\lnot p\to\lnot q)\to(q\to p)
  • 推理规则 (MP):从 p, p→qp,\ p\to q 推出 qq。

形式证明与推导(pl_fol)

  • 形式证明:pp 的序列 p1,…,pn=pp_1,\dots,p_n=p,每步是公理或由前序 pi,pj(=pi→pk)p_i,p_j(=p_i\to p_k) 经 MP。记 ⊢p\vdash p(pp 是 LL 的内定理)。
  • 形式推导(从 Γ\Gamma):每步是公理、或属于 Γ\Gamma、或经 MP。记 Γ⊢p\Gamma\vdash p。

1.6 命题逻辑语义 (Semantics)

⭐ 模型 (Model):ww 是对命题符号的真值赋值。nn 个命题符号 ⟹ 2n2^n 个模型。

⭐ 解释函数 (Interpretation function) I(f,w)∈{true(1),false(0)}I(f,w)\in\{\text{true}(1),\text{false}(0)\}:

  • 基例:I(p,w)=w(p)I(p,w)=w(p)。
  • 递归:
    • I(¬f,w)=¬I(f,w)I(\lnot f,w)=\lnot I(f,w)
    • I(f∧g,w)=I(f,w)∧I(g,w)I(f\land g,w)=I(f,w)\land I(g,w)
    • I(f∨g,w)=I(f,w)∨I(g,w)I(f\lor g,w)=I(f,w)\lor I(g,w)
    • I(f→g,w)=¬I(f,w)∨I(g,w)I(f\to g,w)=\lnot I(f,w)\lor I(g,w)
    • I(f↔g,w)=(I(f,w)↔I(g,w))I(f\leftrightarrow g,w)=(I(f,w)\leftrightarrow I(g,w))

⭐ M(f)={w∣I(f,w)=1}M(f)=\{w\mid I(f,w)=1\}:公式 ff 满足的模型集。

⭐ 知识库:M(KB)=⋂f∈KBM(f)M(\text{KB})=\bigcap_{f\in\text{KB}} M(f)(合取 / 交)。直觉:KB 给世界施加约束,M(KB)M(\text{KB}) 是满足约束的所有世界。


1.7 核心语义关系

关系 定义 例
蕴涵 (Entailment) KB⊨f\text{KB}\models f M(f)⊇M(KB)M(f)\supseteq M(\text{KB})(ff 未添加新信息) Rain∧Snow⊨Snow\text{Rain}\land\text{Snow}\models\text{Snow}
矛盾 (Contradiction) M(KB)∩M(f)=∅M(\text{KB})\cap M(f)=\emptyset Rain∧Snow\text{Rain}\land\text{Snow} 与 ¬Snow\lnot\text{Snow}
偶然 (Contingency) ∅⊂M(KB)∩M(f)⊂M(KB)\emptyset\subset M(\text{KB})\cap M(f)\subset M(\text{KB}) Rain\text{Rain} 与 Snow\text{Snow}
可满足 (Satisfiable) M(KB)≠∅M(\text{KB})\neq\emptyset —

命题:KB contradicts ff iff KB⊨¬f\text{KB}\models\lnot f。

⭐ 核心等价(贯穿全章):

 KB⊨f   ⟺   KB∧¬f 不可满足 \boxed{\ \text{KB}\models f\ \iff\ \text{KB}\land\lnot f\ \text{不可满足}\ }

  • TELL:把新句加入 KB;ASK:查询是否蕴涵某句。

1.8 有效性与可满足(pl_fol 补充)

  • 有效 (valid):所有模型为真。重言式 (tautology),如 p→p, (¬p→p)→pp\to p,\ (\lnot p\to p)\to p。
  • 可满足 (satisfiable):某些模型为真。
  • 不可满足 (unsatisfiable):无模型为真。永假式 (contradiction),如 p∧¬pp\land\lnot p。
  • pp 有效 iff ¬p\lnot p 不可满足。

复杂性(pl_fol)

  • 判定 KB⊨p\text{KB}\models p:coNP-complete。
  • 判定 pp(或 KB∧¬p\text{KB}\land\lnot p)可满足:NP-complete。

可靠性与完备性

  • ⊢\vdash 可靠:Γ⊢p⇒Γ⊨p\Gamma\vdash p\Rightarrow\Gamma\models p。
  • ⊢\vdash 完备:Γ⊨p⇒Γ⊢p\Gamma\models p\Rightarrow\Gamma\vdash p。

1.9 逻辑等值律 (Logical Equivalences) ⭐⭐⭐

若 ⊨p↔q\models p\leftrightarrow q,则 pp 与 qq 逻辑等值。等值替换规则:若 ⊨q↔q′\models q\leftrightarrow q',则在 pp 中用 q′q' 替换子公式 qq 得 p′p',则 ⊨p↔p′\models p\leftrightarrow p'。

名称 等值式
∧\land 交换律 (commutativity) (p∧q)↔(q∧p)(p\land q)\leftrightarrow(q\land p)
∨\lor 交换律 (p∨q)↔(q∨p)(p\lor q)\leftrightarrow(q\lor p)
∧\land 结合律 (associativity) ((p∧q)∧r)↔(p∧(q∧r))((p\land q)\land r)\leftrightarrow(p\land(q\land r))
∨\lor 结合律 ((p∨q)∨r)↔(p∨(q∨r))((p\lor q)\lor r)\leftrightarrow(p\lor(q\lor r))
双否消去 (double-negation) ¬¬p↔p\lnot\lnot p\leftrightarrow p
逆否 (contraposition) (p→q)↔(¬q→¬p)(p\to q)\leftrightarrow(\lnot q\to\lnot p)
蕴含消去 (implication elim.) (p→q)↔(¬p∨q)(p\to q)\leftrightarrow(\lnot p\lor q)
双条件消去 (biconditional elim.) (p↔q)↔((p→q)∧(q→p))(p\leftrightarrow q)\leftrightarrow((p\to q)\land(q\to p))
De Morgan ¬(p∧q)↔(¬p∨¬q)\lnot(p\land q)\leftrightarrow(\lnot p\lor\lnot q);¬(p∨q)↔(¬p∧¬q)\lnot(p\lor q)\leftrightarrow(\lnot p\land\lnot q)
∧\land 对 ∨\lor 分配 (distributivity) (p∧(q∨r))↔((p∧q)∨(p∧r))(p\land(q\lor r))\leftrightarrow((p\land q)\lor(p\land r))
∨\lor 对 ∧\land 分配 (p∨(q∧r))↔((p∨q)∧(p∨r))(p\lor(q\land r))\leftrightarrow((p\lor q)\land(p\lor r))

1.10 合取范式 (CNF / DNF)

术语 定义
文字 (literal) 原子或其否定,如 x, ¬xx,\ \lnot x
子句 (clause) 文字析取,如 x1∨¬x2∨x3x_1\lor\lnot x_2\lor x_3
合取范式 CNF (Conjunctive Normal Form) 子句的合取,如 (x1∨¬x2)∧(x2∨¬x3∨¬x4)(x_1\lor\lnot x_2)\land(x_2\lor\lnot x_3\lor\lnot x_4)
析取范式 DNF 文字合取项的析取

转 CNF 三步

  1. 消去 →\to 和 ↔\leftrightarrow(用蕴含消去 + 双条件消去);
  2. ¬\lnot 深入(用 De Morgan + 双否消去);
  3. 对 ∧\land 和 ∨\lor 分配整理。

例:(x1∧(x2→x3))→x2(x_1\land(x_2\to x_3))\to x_2

  • 消 →\to:¬(x1∧(¬x2∨x3))∨x2\lnot(x_1\land(\lnot x_2\lor x_3))\lor x_2
  • ¬\lnot 深入:(¬x1∨(x2∧¬x3))∨x2(\lnot x_1\lor(x_2\land\lnot x_3))\lor x_2
  • 分配律:(¬x1∨x2)∧(¬x1∨x2∨¬x3)(\lnot x_1\lor x_2)\land(\lnot x_1\lor x_2\lor\lnot x_3)

1.11 模型检测 (Model Checking)

SAT(可满足性)= CSP 的特例(变量=命题符号,域 {T,F}\{T,F\},约束=子句)。

算法 特点
真值表枚举 O(2n)O(2^n) 时间,O(n)O(n) 空间
DPLL 回溯搜索 + 剪枝
WalkSat 随机局部搜索(可靠但不完备)

1.12 推理规则与证明方法

Modus Ponens (MP)

p,p→qq\frac{p,\quad p\to q}{q}

推理规则一般式:f1,…,fkg\dfrac{f_1,\dots,f_k}{g}。派生 (Derivation):KB⊢f\text{KB}\vdash f iff ff 最终加入 KB。

期望性质 (Desiderata)

可靠 (sound)、完备 (complete)、高效 (efficient)。

证明方法两大类

  1. 推理规则应用:证明=推理规则应用序列;可作搜索问题(后继函数=规则所有可能应用);常需转正规形式。
  2. 模型检测:真值表枚举 O(2n)O(2^n);改进回溯 DPLL;启发式搜索(可靠但不完备,如 min-conflicts 爬山)。

1.13 Horn 子句与确定子句 ⭐

⭐ 确定子句 (Definite clause):(p1∧⋯∧pk)→q(p_1\land\dots\land p_k)\to q,其中 pip_i(k≥0k\ge 0)与 qq 是命题符号。

  • 例:(Rain∧Snow)→Traffic(\text{Rain}\land\text{Snow})\to\text{Traffic};Traffic\text{Traffic}(k=0k=0)。
  • 非例:Rain∧Snow\text{Rain}\land\text{Snow}(非蕴涵)、¬Traffic\lnot\text{Traffic}(含否定)、(Rain∧Snow)→(Traffic∨Peaceful)(\text{Rain}\land\text{Snow})\to(\text{Traffic}\lor\text{Peaceful})(结论为析取)。

⭐ Horn 子句 (Horn clause):确定子句 或 目标子句 (p1∧⋯∧pk)→⊥(p_1\land\dots\land p_k)\to\bot(等价 ¬(p1∧⋯∧pk)\lnot(p_1\land\dots\land p_k))。

Modus Ponens on Horn clauses

p1,…,pk,(p1∧⋯∧pk)→qq\frac{p_1,\dots,p_k,\quad (p_1\land\dots\land p_k)\to q}{q}

⭐ 定理(Horn 上完备):若 KB 只含 Horn 子句且 pp 是被蕴涵的命题符号,则 MP 必能推出 pp。即

KB⊨p   ⟺   KB⊢p\text{KB}\models p\ \iff\ \text{KB}\vdash p

  • MP 仅能生成命题符号(非否定),故只能答 “yes” 或 “I don’t know”——因为全真赋值恒为模型,永不答 “no”。

1.14 前向链与反向链 ⭐⭐⭐

前向链 (Forward Chaining)

  • 数据驱动:从已知事实出发,反复触发前提已满足的确定子句,加入新结论,直到无新事实或得到查询。
  • 性质(Horn KB):
    • 可靠:每次推理本质是 MP 的一次应用。
    • 完备:每个被蕴含的原子语句终被生成。
    • 线性时间。
  • 完备性证明思路:设最小模型(所有可推出原子为真),任何被蕴含原子必在其中。

反向链 (Backward Chaining)

  • 目标驱动:从查询目标出发,反向找以该目标为头的规则,递归证明其前提。

前向 vs 反向

维度 前向链 反向链
驱动方式 数据驱动 目标驱动
适用 事实少、规则多 查询少、规则多
Prolog — 核心机制

1.15 命题归结 (Resolution) ⭐⭐⭐

⭐ 归结规则:

  • Unit Resolution:α∨β,¬βα\dfrac{\alpha\lor\beta,\quad \lnot\beta}{\alpha}
  • General Resolution:α∨β,¬β∨γα∨γ\dfrac{\alpha\lor\beta,\quad \lnot\beta\lor\gamma}{\alpha\lor\gamma}

归结算法

  1. 将公式化为子句集合(CNF);
  2. 反复使用归结规则;
  3. 无可添加新子句 ⟹ 可满足;出现空子句 □\square ⟹ 不可满足。

⭐ 归结反演:证明 KB⊨p\text{KB}\models p ⟺ 证明 KB∧¬p\text{KB}\land\lnot p 不可满足 ⟺ 转 CNF 后归结出空子句。

  • 命题逻辑中归结算法可靠、完备。
  • 时间复杂度:指数级(子句数与归结步数)。

第二部分:一阶逻辑 (First-Order Logic, lec8)

2.1 为何需要 FOL?

命题逻辑的优缺点

优点:

  • 陈述性 (declarative):知识与推理分离,且推理完全不依赖领域(对比程序设计语言的过程性)。
  • 支持部分/析取/否定信息(不像大多数数据库)。
  • 组合性 (compositional):复合句含义是各部分含义的函数。
  • 上下文无关 (context-independent)(不像自然语言)。

缺点:表达力弱。不能说"陷阱在相邻方格引起微风",只能逐格写 B1,1↔(P1,2∨P2,1)B_{1,1}\leftrightarrow(P_{1,2}\lor P_{2,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\text{KingJohn},\ 2,\ \text{USTC}
谓词 (Predicates) Brother, >\text{Brother},\ >
函数 (Functions) Sqrt, LeftLegOf\text{Sqrt},\ \text{LeftLegOf}
变量 (Variables) x,y,a,bx,y,a,b
联结词 ¬,⇒,∧,∨,⇔\lnot,\Rightarrow,\land,\lor,\Leftrightarrow
等词 (Equality) ==
量词 (Quantifiers) ∀, ∃\forall,\ \exists

⭐ 项 (Term) == 函数(项1,…,_1,\dots,项n_n) 或 常量 或 变量。

⭐ 原子句 (Atomic sentence) == 谓词(项1,…,_1,\dots,项n_n) 或 项1=_1=项2_2。

  • 例:Brother(KingJohn,Richard)\text{Brother}(\text{KingJohn},\text{Richard});>(Length(LeftLegOf(Richard)),Length(LeftLegOf(KingJohn)))>(\text{Length}(\text{LeftLegOf}(\text{Richard})),\text{Length}(\text{LeftLegOf}(\text{KingJohn})))。

⭐ 复合句 (Complex sentence):用联结词连接原子句。例 Sibling(KingJohn,Richard)⇒Sibling(Richard,KingJohn)\text{Sibling}(\text{KingJohn},\text{Richard})\Rightarrow\text{Sibling}(\text{Richard},\text{KingJohn})。

形式系统 KK(pl_fol)

符号表:

  • 逻辑符号:个体变元 x1,x2,…x_1,x_2,\dots;联结词 ¬,→,∧,∨,↔\lnot,\to,\land,\lor,\leftrightarrow;量词 ∀,∃\forall,\exists。
  • 非逻辑符号:个体常元 a1,a2,…a_1,a_2,\dots;函项符号 fn,mf_{n,m}(按元数);谓词符号 Pn,mP_{n,m}。

形成规则:

  • 项:(1) 变元/常元是项;(2) ff 是 nn 元函项符号,tit_i 是项 ⟹ f(t1,…,tn)f(t_1,\dots,t_n) 是项。
  • 公式:(1) PP 是 nn 元谓词,tit_i 项 ⟹ P(t1,…,tn)P(t_1,\dots,t_n) 原子公式;(2) ¬p,p→q,p∧q,p∨q,p↔q\lnot p, p\to q, p\land q, p\lor q, p\leftrightarrow q 复合公式;(3) ∀x p, ∃x p\forall x\,p,\ \exists x\,p 量化公式。

术语(pl_fol)

  • 子公式;自由/约束出现(∀x p\forall x\,p 中 xx 约束,pp 为辖域);闭项/开项(不含/含变元);闭公式/开公式(无/有自由变元);项 tt 对 p(x)p(x) 中 xx 自由(替换后 tt 中变元仍自由)。

公理系统 KK

  • (K1) p→(q→p)p\to(q\to p)
  • (K2) (p→(q→r))→((p→q)→(p→r))(p\to(q\to r))\to((p\to q)\to(p\to r))
  • (K3) (¬p→¬q)→(q→p)(\lnot p\to\lnot q)\to(q\to p)
  • (K4) ∀x p(x)→p(t)\forall x\,p(x)\to p(t)(项 tt 对 p(x)p(x) 中 xx 自由)
  • (K5) ∀x(p→q)→(p→∀x q)\forall x(p\to q)\to(p\to\forall x\,q)(xx 不在 pp 自由出现)
  • 推理规则:(MP) p,p→q⊢qp,p\to q\vdash q;(UG, Universal Generalization) p⊢∀x pp\vdash\forall x\,p。

2.3 FOL 语义 (Semantics)

⭐ 语句真值由一个模型 (model) 和解释 (interpretation) 判定。

  • 模型含对象(域元素 domain elements)及其间关系。
  • 解释指定指代 (referents):
    • 常量符号 ⟶ 对象
    • 谓词符号 ⟶ 关系
    • 函数符号 ⟶ 函数关系
  • 原子句 predicate(t1,…,tn)\text{predicate}(t_1,\dots,t_n) 为真 iff tit_i 指代的对象处于 predicate 指代的关系中。

形式语义(pl_fol)

  • 一阶结构 M=(D,F,P)M=(D,F,P):论域 DD(非空);DD 上函数集 FF;DD 上关系集 PP。
    • 常元 a↦aM∈Da\mapsto a^M\in D;nn 元函数符号 ↦fM:Dn→D\mapsto f^M:D^n\to D;nn 元谓词 ↦PM⊆Dn\mapsto P^M\subseteq D^n。
  • 个体变元指派 V:Y→DV:Y\to D;一阶解释 I=(M,V)I=(M,V)。
  • 赋值:
    • I(x)=V(x)I(x)=V(x);I(f(t1,…,tn))=fM(I(t1),…,I(tn))I(f(t_1,\dots,t_n))=f^M(I(t_1),\dots,I(t_n))。
    • P(t1,…,tn)P(t_1,\dots,t_n) 真 iff (I(t1),…,I(tn))∈PM(I(t_1),\dots,I(t_n))\in P^M。
    • ∀x p\forall x\,p 真 iff 对所有 d∈Dd\in D,Ix=d(p)I_{x=d}(p) 真。
    • ∃x p\exists x\,p 真 iff ¬∀x ¬p\lnot\forall x\,\lnot p 真。
    • Ix=d=(M,V∣x=d)I_{x=d}=(M,V|_{x=d}),V∣x=d(y)={dy=xV(y)otherwiseV|_{x=d}(y)=\begin{cases}d&y=x\\V(y)&\text{otherwise}\end{cases}。

模型与有效性(pl_fol)

  • MM 有效:对一切 VV,pp 在 (M,V)(M,V) 真 ⟹ M⊨pM\models p。
  • 逻辑有效:对一切结构 MM,M⊨pM\models p,记 ⊨p\models p。
  • 模型:M⊨ΓM\models\Gamma(对 Γ\Gamma 中所有 pp,M⊨pM\models p)。
  • 语义后承 Γ⊨p\Gamma\models p:对一切 MM,M⊨Γ⇒M⊨pM\models\Gamma\Rightarrow M\models p。
  • FOL 公理系统与语义可靠、完备。

FOL 模型无穷多

枚举 FOL 模型不可行:域个数 n:1→∞n:1\to\infty → 每个 kk 元谓词的关系 → 每个常量指代… ⟹ 通过枚举模型检验蕴涵不可行。

FOL 的局限(pl_fol)

无法刻画极小、传递闭包等关系(如仅靠 parent 公理无法定义 ancestor 传递闭包,需归纳/不动点)。


2.4 量词 (Quantifiers) ⭐⭐⭐

全称量词 (Universal) ∀\forall

∀x At(x,USTC)⇒Smart(x)\forall x\ \text{At}(x,\text{USTC})\Rightarrow\text{Smart}(x)

  • “∀x P\forall x\,P” 在模型 mm 中为真 iff 对每个对象 xx,PP 为真。≈ 实例的合取式。

⚠️ 常见错误:∀\forall 与 ∧\land 搭配——∀x At(x,USTC)∧Smart(x)\forall x\,\text{At}(x,\text{USTC})\land\text{Smart}(x) 意为"所有人都在 USTC 且都聪明"。正确:∀\forall 配 ⇒\Rightarrow。

存在量词 (Existential) ∃\exists

∃x At(x,USTC)∧Smart(x)\exists x\ \text{At}(x,\text{USTC})\land\text{Smart}(x)

  • “∃x P\exists x\,P” 真 iff PP 对某对象为真。≈ 实例的析取式。

⚠️ 常见错误:∃\exists 与 ⇒\Rightarrow 搭配——∃x At(x,USTC)⇒Smart(x)\exists x\,\text{At}(x,\text{USTC})\Rightarrow\text{Smart}(x),只要有人不在 USTC 即真!正确:∃\exists 配 ∧\land。

量词性质

  • ∀x∀y=∀y∀x\forall x\forall y = \forall y\forall x;∃x∃y=∃y∃x\exists x\exists y = \exists y\exists x。
  • 但 ∃x∀y≠∀y∃x\exists x\forall y \neq \forall y\exists x:
    • ∃x∀y Loves(x,y)\exists x\forall y\,\text{Loves}(x,y):“存在一人爱所有人”。
    • ∀y∃x Loves(x,y)\forall y\exists x\,\text{Loves}(x,y):“每人被至少一人爱”。

⭐ 量词对偶 (Duality):

∀x P≡¬∃x ¬P∃x P≡¬∀x ¬P\forall x\,P \equiv \lnot\exists x\,\lnot P\qquad \exists x\,P \equiv \lnot\forall x\,\lnot P

等词 (Equality)

term1=term2\text{term}_1=\text{term}_2 为真 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)]\forall x,y\ \text{Sibling}(x,y)\Leftrightarrow\big[\lnot(x=y)\land\exists m,f\ \lnot(m=f)\land\text{Parent}(m,x)\land\text{Parent}(f,x)\land\text{Parent}(m,y)\land\text{Parent}(f,y)\big]


2.5 使用 FOL:领域建模

亲属域 (Kinship)

  • ∀x,y Brother(x,y)⇒Sibling(x,y)\forall x,y\ \text{Brother}(x,y)\Rightarrow\text{Sibling}(x,y)
  • Sibling 对称:∀x,y Sibling(x,y)⇒Sibling(y,x)\forall x,y\ \text{Sibling}(x,y)\Rightarrow\text{Sibling}(y,x)
  • ∀x,y Mother(x,y)⇔(Female(x)∧Parent(x,y))\forall x,y\ \text{Mother}(x,y)\Leftrightarrow(\text{Female}(x)\land\text{Parent}(x,y))
  • ∀x,y Cousin(x,y)⇔∃p,ps Parent(p,x)∧Sibling(ps,p)∧Parent(ps,y)\forall x,y\ \text{Cousin}(x,y)\Leftrightarrow\exists p,ps\ \text{Parent}(p,x)\land\text{Sibling}(ps,p)\land\text{Parent}(ps,y)

集合域 (Set)

  • ∀s Set(s)⇔(s={})∨(∃x,s2 Set(s2)∧s={x∣s2})\forall s\ \text{Set}(s)\Leftrightarrow(s=\{\})\lor(\exists x,s_2\ \text{Set}(s_2)\land s=\{x|s_2\})
  • 空集不可分解:¬∃x,s {x∣s}={}\lnot\exists x,s\ \{x|s\}=\{\}
  • 子集:∀s1,s2 s1⊆s2⇔(∀x x∈s1⇒x∈s2)\forall s_1,s_2\ s_1\subseteq s_2\Leftrightarrow(\forall x\ x\in s_1\Rightarrow x\in s_2)
  • 相等:∀s1,s2 (s1=s2)⇔(s1⊆s2∧s2⊆s1)\forall s_1,s_2\ (s_1=s_2)\Leftrightarrow(s_1\subseteq s_2\land s_2\subseteq s_1)
  • 交:∀x,s1,s2 x∈(s1∩s2)⇔(x∈s1∧x∈s2)\forall x,s_1,s_2\ x\in(s_1\cap s_2)\Leftrightarrow(x\in s_1\land x\in s_2)
  • 并:∀x,s1,s2 x∈(s1∪s2)⇔(x∈s1∨x∈s2)\forall x,s_1,s_2\ x\in(s_1\cup s_2)\Leftrightarrow(x\in s_1\lor x\in s_2)

Wumpus 域 FOL KB

  • 感知:∀t,s,b Percept([s,b,Glitter],t)⇒Glitter(t)\forall t,s,b\ \text{Percept}([s,b,\text{Glitter}],t)\Rightarrow\text{Glitter}(t)
  • 反射:∀t Glitter(t)⇒BestAction(Grab,t)\forall t\ \text{Glitter}(t)\Rightarrow\text{BestAction}(\text{Grab},t)
  • 带内部状态:∀t AtGold(t)∧¬Holding(Gold,t)⇒BestAction(Grab,t)\forall t\ \text{AtGold}(t)\land\lnot\text{Holding}(\text{Gold},t)\Rightarrow\text{BestAction}(\text{Grab},t)

⭐ 诊断规则 (Diagnostic) vs 因果规则 (Causal):

  • 诊断(由果推因):∀s Breezy(s)⇒∃r Adjacent(r,s)∧Pit(r)\forall s\ \text{Breezy}(s)\Rightarrow\exists r\ \text{Adjacent}(r,s)\land\text{Pit}(r)

  • 因果(由因推果):∀r,s Adjacent(r,s)∧Pit(r)⇒Breezy(s)\forall r,s\ \text{Adjacent}(r,s)\land\text{Pit}(r)\Rightarrow\text{Breezy}(s)

  • Breezy 定义:∀s Breezy(s)⇔∃r Adjacent(r,s)∧Pit(r)\forall s\ \text{Breezy}(s)\Leftrightarrow\exists r\ \text{Adjacent}(r,s)\land\text{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]}\forall x,y,a,b\ \text{Adjacent}([x,y],[a,b])\Leftrightarrow[a,b]\in\{[x+1,y],[x-1,y],[x,y+1],[x,y-1]\}

与 FOL KB 交互(置换/substitution)

  • Tell(KB,Percept([Smell,Breeze,None],5))\text{Tell}(\text{KB},\text{Percept}([\text{Smell},\text{Breeze},\text{None}],5))
  • Ask(KB,a BestAction(a,5))\text{Ask}(\text{KB},a\ \text{BestAction}(a,5)) ⟹ 答 {a/Shoot}\{a/\text{Shoot}\}(绑定表 binding list)。
  • 给定句子 SS 与置换 σ\sigma,SσS\sigma 为代入结果。Ask(KB,S)\text{Ask}(\text{KB},S) 返回部分/所有使 KB⊨Sσ\text{KB}\models S\sigma 的 σ\sigma。

2.6 知识工程 (Knowledge Engineering) 七步

  1. 确定任务 (Identify the task)。
  2. 搜集相关知识 (Assemble relevant knowledge)。
  3. 确定词汇表 (vocabulary):谓词/函数/常量。
  4. 编码通用域知识 (Encode general knowledge)。
  5. 编码特定问题实例 (Encode specific instance)。
  6. 提交查询获取答案 (Pose queries)。
  7. 调试 KB (Debug)。

电路域 (Electronic Circuits) 例——一位全加器

  • 任务:电路验证(是否正确相加)。
  • 相关知识:由导线 (wires) 和门 (gates) 组成;门类型 AND/OR/XOR/NOT;忽略大小/形状/颜色。
  • 词汇表:Type(X1)=XOR\text{Type}(X_1)=\text{XOR} 或 Type(X1,XOR)\text{Type}(X_1,\text{XOR}) 或 XOR(X1)\text{XOR}(X_1)。
  • 通用知识公理:
    • ∀t1,t2 Connected(t1,t2)⇒Signal(t1)=Signal(t2)\forall t_1,t_2\ \text{Connected}(t_1,t_2)\Rightarrow\text{Signal}(t_1)=\text{Signal}(t_2)
    • ∀t Signal(t)=1∨Signal(t)=0\forall t\ \text{Signal}(t)=1\lor\text{Signal}(t)=0;1≠01\neq 0
    • Connected 可交换:∀t1,t2 Connected(t1,t2)⇒Connected(t2,t1)\forall t_1,t_2\ \text{Connected}(t_1,t_2)\Rightarrow\text{Connected}(t_2,t_1)
    • OR 门:∀g Type(g)=OR⇒Signal(Out(1,g))=1⇔∃n Signal(In(n,g))=1\forall g\ \text{Type}(g)=\text{OR}\Rightarrow\text{Signal}(\text{Out}(1,g))=1\Leftrightarrow\exists n\ \text{Signal}(\text{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\exists i_1,i_2,i_3,o_1,o_2\ \text{Signal}(\text{In}(1,C_1))=i_1\land\dots\land\text{Signal}(\text{Out}(2,C_1))=o_2。
  • 调试:可能遗漏 1≠01\neq 0 等断言。

第三部分:FOL 推理 (Inference in FOL)

3.1 命题化 (Reduction to Propositional Inference)

⭐ 全称实例化 (UI, Universal Instantiation):

∀v αSubst({v/g},α)\frac{\forall v\ \alpha}{\text{Subst}(\{v/g\},\alpha)}

对任意变量 vv 和基项 (ground term) gg。

  • 例 ∀x King(x)∧Greedy(x)⇒Evil(x)\forall x\ \text{King}(x)\land\text{Greedy}(x)\Rightarrow\text{Evil}(x) 得 King(John)∧Greedy(John)⇒Evil(John)\text{King}(\text{John})\land\text{Greedy}(\text{John})\Rightarrow\text{Evil}(\text{John}) 等。
  • UI 可多次应用;新 KB 与旧 KB 逻辑等价。

⭐ 存在实例化 (EI, Existential Instantiation):

∃v αSubst({v/k},α)\frac{\exists v\ \alpha}{\text{Subst}(\{v/k\},\alpha)}

kk 为不出现在 KB 他处的新常量符号,称 Skolem 常数 (Skolem constant)。

  • 例 ∃x Crown(x)∧OnHead(x,John)\exists x\ \text{Crown}(x)\land\text{OnHead}(x,\text{John}) ⟹ Crown(C1)∧OnHead(C1,John)\text{Crown}(C_1)\land\text{OnHead}(C_1,\text{John})。
  • EI 只能应用一次;新 KB 不等价于旧 KB,但可满足性等价(satisfiable iff)。

命题化与 Herbrand 定理

命题化 KB 与查询,应用归结,返回结果。

⚠️ 问题:有函数符号时基项无穷(如 Father(Father(Father(John)))\text{Father}(\text{Father}(\text{Father}(\text{John}))))。

⭐ Herbrand 定理 (1930):若语句 α\alpha 被 FOL KB 蕴涵,则存在仅涉及命题化 KB 有限子集的证明。

  • 算法:n=0→∞n=0\to\infty,用深度 nn 项命题化,查是否蕴涵。
  • 问题:α\alpha 被蕴涵则停;不被蕴涵则死循环。

⭐ 半可判定 (Semidecidable)(Turing 1936, Church 1936):FOL 蕴涵半可判定——存在算法对每个被蕴涵语句答 yes,但不存在算法对每个非蕴涵语句答 no。

命题化的问题

  • 生成大量无关语句(如 Greedy(Richard)\text{Greedy}(\text{Richard}) 与结论无关)。
  • pp 个 kk 元谓词 + nn 常量 ⟹ p⋅nkp\cdot n^k 实例;有函数符号更糟。

3.2 合一 (Unification) ⭐⭐⭐

⭐ 若存在置换 θ\theta 使 αθ=βθ\alpha\theta=\beta\theta,则 θ\theta 合一 α,β\alpha,\beta,记 Unify(α,β)=θ\text{Unify}(\alpha,\beta)=\theta。
示例(Knows(John,x)\text{Knows}(\text{John},x) 与):

pp qq θ\theta
Knows(John,x)\text{Knows}(\text{John},x) Knows(John,Jane)\text{Knows}(\text{John},\text{Jane}) {x/Jane}\{x/\text{Jane}\}
Knows(John,x)\text{Knows}(\text{John},x) Knows(y,OJ)\text{Knows}(y,\text{OJ}) {x/OJ,y/John}\{x/\text{OJ},y/\text{John}\}
Knows(John,x)\text{Knows}(\text{John},x) Knows(y,Mother(y))\text{Knows}(y,\text{Mother}(y)) {y/John,x/Mother(John)}\{y/\text{John},x/\text{Mother}(\text{John})\}
Knows(John,x)\text{Knows}(\text{John},x) Knows(x,OJ)\text{Knows}(x,\text{OJ}) fail(xx 同时=John 和 OJ)

⭐ 标准化分离 (Standardizing apart):换名消除变量重叠,如 Knows(z17,OJ)\text{Knows}(z_{17},\text{OJ})。

⭐ 最一般合一 (MGU):对变量限制最少的合一者;对每个表达式对,MGU 唯一(至变量换名)。

  • 例 Knows(John,x)\text{Knows}(\text{John},x) 与 Knows(y,z)\text{Knows}(y,z),MGU ={y/John,x/z}=\{y/\text{John},x/z\}(比 {y/John,x/John,z/John}\{y/\text{John},x/\text{John},z/\text{John}\} 更一般)。

置换与合成(pl_fol 形式定义)

  • 置换 (substitution) θ={v1/t1,…,vn/tn}\theta=\{v_1/t_1,\dots,v_n/t_n\}:viv_i 变量,ti≠vit_i\neq v_i 的项,vi≠vjv_i\neq v_j。
  • EθE\theta:同时替换 EE 中所有 viv_i 为 tit_i。
    • 例 E=P(x,y,f(a))E=P(x,y,f(a)),θ={x/b,y/x}\theta=\{x/b,y/x\} ⟹ Eθ=P(b,x,f(a))E\theta=P(b,x,f(a))。
  • 合成 θσ\theta\sigma:先用 θ\theta 再用 σ\sigma。
    • θ={x/f(y),y/z}\theta=\{x/f(y),y/z\},σ={x/a,y/b,z/y}\sigma=\{x/a,y/b,z/y\} ⟹ θσ={x/f(b),z/y}\theta\sigma=\{x/f(b),z/y\}。

合一者与 MGU(pl_fol)

  • 合一者 (unifier) θ\theta:S1θ=⋯=SkθS_1\theta=\dots=S_k\theta。例 {P(f(x),z),P(y,a)}\{P(f(x),z),P(y,a)\} 合一者 σ={y/f(a),x/a,z/a}\sigma=\{y/f(a),x/a,z/a\}。
  • mgu:对任意合一 σ\sigma 存在 γ\gamma 使 σ=θγ\sigma=\theta\gamma。例 mgu ={y/f(x),z/a}=\{y/f(x),z/a\},σ=θ{x/a}\sigma=\theta\{x/a\}。
  • mgu(等价)唯一。
  • 分歧集 (disagreement set):最左符号分歧处抽取的子表达式集合。例 S={P(f(x),h(y),a),P(f(x),z,a),P(f(x),h(y),b)}S=\{P(f(x),h(y),a),P(f(x),z,a),P(f(x),h(y),b)\} ⟹ {h(y),z}\{h(y),z\}。
  • 合一算法:σ0=ϵ\sigma_0=\epsilon;若 σk\sigma_k 是 SS 合一则停(σk\sigma_k 为 mgu);否则找 SσkS\sigma_k 分歧集 DkD_k;若 DkD_k 含变量 vv 与不含 vv 的项 tt,σk+1=σk{v/t}\sigma_{k+1}=\sigma_k\{v/t\};否则不可合一。

3.3 广义假言推理 (Generalized Modus Ponens, GMP) ⭐⭐⭐

⭐ GMP:

p1′,p2′,…,pn′,(p1∧p2∧⋯∧pn⇒q)qθ\frac{p'_1,p'_2,\dots,p'_n,\quad (p_1\land p_2\land\dots\land p_n\Rightarrow q)}{q\theta}

其中 pi′θ=piθp'_i\theta=p_i\theta 对所有 ii。
例:

p1′=King(John)p'_1=\text{King}(\text{John}) p1=King(x)p_1=\text{King}(x)
p2′=Greedy(y)p'_2=\text{Greedy}(y) p2=Greedy(x)p_2=\text{Greedy}(x)
θ={x/John,y/John}\theta=\{x/\text{John},y/\text{John}\} q=Evil(x)q=\text{Evil}(x)
qθ=Evil(John)q\theta=\text{Evil}(\text{John})
  • 用于确定子句 (definite clauses) KB(恰一个正文字);所有变量默认全称量化。

半可判定

FOL(即使限制 Horn 子句)半可判定:若 KB 蕴涵 ff,存在算法有限步证明;若不蕴涵,无算法有限步显示。

GMP 可靠性证明

需证 p1′,…,pn′,(p1∧⋯∧pn⇒q)⊨qθp'_1,\dots,p'_n,(p_1\land\dots\land p_n\Rightarrow q)\models q\theta(给定 pi′θ=piθp'_i\theta=p_i\theta)。

  • 引理:对任意 pp,p⊨pθp\models p\theta。
  1. (p1∧⋯∧pn⇒q)⊨(p1∧⋯∧pn⇒q)θ=(p1θ∧⋯∧pnθ⇒qθ)(p_1\land\dots\land p_n\Rightarrow q)\models(p_1\land\dots\land p_n\Rightarrow q)\theta=(p_1\theta\land\dots\land p_n\theta\Rightarrow q\theta)
  2. p1′,…,pn′⊨p1′∧⋯∧pn′⊨p1′θ∧⋯∧pn′θp'_1,\dots,p'_n\models p'_1\land\dots\land p'_n\models p'_1\theta\land\dots\land p'_n\theta
  3. 由 1、2 经普通 MP 得 qθq\theta。

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)\text{Criminal}(\text{West})。

性质

  • 对一阶确定子句可靠且完备(证明类似命题逻辑)。
  • Datalog = 一阶确定子句 + 无函数(如犯罪 KB)⟹ FC 多项式迭代终止(至多 p⋅nkp\cdot n^k 文字)。
  • 一般情况 α\alpha 不被蕴涵时可能不终止(不可避免,因确定子句蕴涵半可判定)。

效率

  • 无需在迭代 kk 重新匹配前提未在 k−1k-1 新增的规则。
  • DB 索引允许 O(1)O(1) 检索已知事实(如查 Missile(x)\text{Missile}(x) 检索 Missile(M1)\text{Missile}(M_1))。
  • 匹配合取前提与已知事实是 NP-hard。

3.5 FOL 反向链 (Backward Chaining)

  • 深度优先递归证明搜索:空间线性于证明大小。

  • 不完备(无限循环)⟹ 检查当前目标是否在栈中。

  • 低效(重复子目标)⟹ 缓存先前结果(额外空间)。

  • 广泛用于逻辑程序设计 (logic programming)(如 Prolog)。

  • FC/BC 对 Horn KB 完备,但对一般 FOL 不完备。


3.6 前束范式 (Prenex Normal Form)(pl_fol)

形式 Q1x1⋯Qnxn pQ_1 x_1\cdots Q_n x_n\,p,pp 无量词(母式 matrix)。

转换规则(Q∗Q^* 为 QQ 对偶量词):

  1. 改名:∣=Qx p(x)↔Qy p(y)|= Qx\,p(x)\leftrightarrow Qy\,p(y)(条件)。
  2. 移量词:xx 不在 pp 自由 ⟹ ∣=(p→Qx q)↔Qx(p→q)|=(p\to Qx\,q)\leftrightarrow Qx(p\to q);xx 不在 qq 自由 ⟹ ∣=(Qx p→q)↔Q∗x(p→q)|=(Qx\,p\to q)\leftrightarrow Q^*x(p\to q)。
  3. ¬\lnot 内移:∣=¬Qx p↔Q∗x ¬p|=\lnot Qx\,p\leftrightarrow Q^*x\,\lnot p。
  4. ∣=(∀x p∧∀x q)↔∀x(p∧q)|=(\forall x\,p\land\forall x\,q)\leftrightarrow\forall x(p\land q)。
  5. ∣=(∃x p∨∃x q)↔∃x(p∨q)|=(\exists x\,p\lor\exists x\,q)\leftrightarrow\exists x(p\lor q)。
  6. xx 不在 pp 自由 ⟹ ∣=(p∨∀x q)↔∀x(p∨q)|=(p\lor\forall x\,q)\leftrightarrow\forall x(p\lor q),∣=(p∧∃x q)↔∃x(p∧q)|=(p\land\exists x\,q)\leftrightarrow\exists x(p\land q)。

3.7 FOL 转 CNF ⭐⭐⭐

⭐ 六步(示例"爱所有动物者被某人爱" ∀x[∀y Animal(y)⇒Loves(x,y)]⇒[∃y Loves(y,x)]\forall x[\forall y\,\text{Animal}(y)\Rightarrow\text{Loves}(x,y)]\Rightarrow[\exists y\,\text{Loves}(y,x)]):

  1. 消等价/蕴含 (Eliminate ↔,⇒\leftrightarrow,\Rightarrow):
    ∀x[¬∀y ¬Animal(y)∨Loves(x,y)]∨[∃y Loves(y,x)]\forall x[\lnot\forall y\,\lnot\text{Animal}(y)\lor\text{Loves}(x,y)]\lor[\exists y\,\text{Loves}(y,x)]
  2. ¬\lnot 内移 (Move ¬\lnot inwards):¬∀x p≡∃x ¬p\lnot\forall x\,p\equiv\exists x\,\lnot p,¬∃x p≡∀x ¬p\lnot\exists x\,p\equiv\forall x\,\lnot p
    ∀x[∃y Animal(y)∧¬Loves(x,y)]∨[∃y Loves(y,x)]\forall x[\exists y\,\text{Animal}(y)\land\lnot\text{Loves}(x,y)]\lor[\exists y\,\text{Loves}(y,x)]
  3. 变量标准化 (Standardize variables):各量词不同变量
    ∀x[∃y Animal(y)∧¬Loves(x,y)]∨[∃z Loves(z,x)]\forall x[\exists y\,\text{Animal}(y)\land\lnot\text{Loves}(x,y)]\lor[\exists z\,\text{Loves}(z,x)]
  4. Skolem 化 (Skolemize):存在变量 ⟹ 所辖全称变量的 Skolem 函数
    ∀x[Animal(F(x))∧¬Loves(x,F(x))]∨Loves(G(x),x)\forall x[\text{Animal}(F(x))\land\lnot\text{Loves}(x,F(x))]\lor\text{Loves}(G(x),x)
  5. 去全称量词 (Drop universal quantifiers):
    [Animal(F(x))∧¬Loves(x,F(x))]∨Loves(G(x),x)[\text{Animal}(F(x))\land\lnot\text{Loves}(x,F(x))]\lor\text{Loves}(G(x),x)
  6. ∨\lor 分配到 ∧\land (Distribute ∨\lor over ∧\land):
    [Animal(F(x))∨Loves(G(x),x)]∧[¬Loves(x,F(x))∨Loves(G(x),x)][\text{Animal}(F(x))\lor\text{Loves}(G(x),x)]\land[\lnot\text{Loves}(x,F(x))\lor\text{Loves}(G(x),x)]

Skolem 化细则(pl_fol)

前束范式中:

  • ∃x\exists x 左无 ∀\forall ⟹ 母式中 xx 替换为新常量 aa;
  • ∃x\exists x 左有 ∀x1⋯∀xm\forall x_1\cdots\forall x_m ⟹ 替换为 f(x1,…,xm)f(x_1,\dots,x_m)(新 nn 元函数符号)。
  • 例:∀x∃y,z ((Animal(y)∧¬Loves(x,y))∨Loves(z,x))\forall x\exists y,z\,((\text{Animal}(y)\land\lnot\text{Loves}(x,y))\lor\text{Loves}(z,x)) ⟹ ∀x((Animal(f(x))∧¬Loves(x,f(x)))∨Loves(g(x),x))\forall x((\text{Animal}(f(x))\land\lnot\text{Loves}(x,f(x)))\lor\text{Loves}(g(x),x))。

性质:pp 不可满足 iff 其 CNF ss 不可满足;∣=s→p|=s\to p 但 ∤ ⁣=p→s\not|\!=p\to s。


3.8 FOL 归结 (Resolution) ⭐⭐⭐

⭐ 归结反演基础:KB⊨α\text{KB}\models\alpha iff (KB∧¬α)(\text{KB}\land\lnot\alpha) 不可满足。

算法:

  1. 所有公式转 CNF;
  2. 反复应用归结规则;
  3. 返回不可满足 iff 导出 false(空子句)。

⭐ 全一阶归结规则:

l1∨⋯∨lk,m1∨⋯∨mnl1∨⋯∨li−1∨li+1∨⋯∨mj−1∨mj+1∨⋯∨mnθ\frac{l_1\lor\dots\lor l_k,\quad m_1\lor\dots\lor m_n}{l_1\lor\dots\lor l_{i-1}\lor l_{i+1}\lor\dots\lor m_{j-1}\lor m_{j+1}\lor\dots\lor m_n}\theta

其中 Unify(li,¬mj)=θ\text{Unify}(l_i,\lnot m_j)=\theta。两子句须标准化分离(无共享变量)。

例:¬Rich(x)∨Unhappy(x)\lnot\text{Rich}(x)\lor\text{Unhappy}(x),Rich(Ken)\text{Rich}(\text{Ken}) ⊢\vdash Unhappy(Ken)\text{Unhappy}(\text{Ken}),θ={x/Ken}\theta=\{x/\text{Ken}\}。

对 CNF(KB∧¬α)\text{CNF}(\text{KB}\land\lnot\alpha) 归结,对 FOL 完备。

谓词归结规则(pl_fol)

α∨p,¬q∨γ(α∨γ)θ\frac{\alpha\lor p,\quad \lnot q\lor\gamma}{(\alpha\lor\gamma)\theta}

pp 与 qq 的 mgu 为 θ\theta,两子句标准化分离。

  • 例 C1=P(x)∨Q(f(x))C_1=P(x)\lor Q(f(x)),C2=R(g(y))lor¬Q(f(a))C_2=R(g(y))lor\lnot Q(f(a)),mgu σ={x/a}\sigma=\{x/a\} ⟹ 归结式 P(a)∨R(g(y))P(a)\lor R(g(y))。

归结过程:KB⊨α\text{KB}\models\alpha ⟺ KB∧¬α\text{KB}\land\lnot\alpha 不可满足 ⟺ CNF ⟺ 标准化分离得子句集 EE ⟺ 对 EE 归结 ⟹ 归结式放入 EE,反复 ⟹ 空子句 ⟹ 得证。

  • 谓词归结可靠、完备。

3.9 FOL 推理总结

命题逻辑 一阶逻辑
模型检测 真值表 / DPLL / WalkSat 不可行(模型无穷)→ 命题化
Modus Ponens Horn 子句 MP++(Horn 子句,加合一/置换)
归结 一般 归结++(一般,加合一/置换)

++ = unification and substitution。关键思想:FOL 中变量带来紧凑的知识表示。

FOL 不可判定性(pl_fol)

  • FOL 不可判定(停机问题):不存在程序判定任意公式 pp 是否有效 / 是否为任意 Γ\Gamma 的逻辑结论。
  • 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,…,AmA\leftarrow A_1,A_2,\dots,A_m:AA 为头(原子),AiA_i 为体(原子合取)。
  • m=0m=0 为事实(无体,往往省略 ←\leftarrow)。
  • 一条规则 A←A1,…,AmA\leftarrow A_1,\dots,A_m 代表 Horn 子句 A∨¬A1∨⋯∨¬AmA\lor\lnot A_1\lor\dots\lor\lnot A_m(至多一正文字)。
  • 所有变元默认全称量化:∀x1,…,xn A∨¬A1∨⋯∨¬Am\forall x_1,\dots,x_n\ A\lor\lnot A_1\lor\dots\lor\lnot A_m。

4.3 Herbrand 域/基/常例

  • 常项 (ground term):由 PP 中常元和函数符号复合的项。
  • Herbrand 域 U(P)U(P):所有常项集合。例 P1={p(1).,q(2).,q(x)←p(x).}P_1=\{p(1).,q(2).,q(x)\leftarrow p(x).\} ⟹ U(P1)={1,2}U(P_1)=\{1,2\}。
  • 常原子:常项 + 谓词符号。Herbrand 基 B(P)B(P) = 所有常原子集合。例 B(P1)={p(1),p(2),q(1),q(2)}B(P_1)=\{p(1),p(2),q(1),q(2)\}。
  • 常例 (ground instance):对规则变元代入常项所得无变元规则。有函数符号时 Herbrand 域可数无穷,常例也可能无穷。

4.4 Herbrand 解释与模型

  • Herbrand 解释 IHI_H:论域 =U(P)=U(P),VHV_H 把常项/常原子映射为自身;指派集合 M(P)⊆B(P)M(P)\subseteq B(P),常原子 pp 真 iff p∈M(P)p\in M(P)。
  • 规则真值:IH(R)=tI_H(R)=t iff 对所有常例 R∗R^*,IH(R∗)=tI_H(R^*)=t;R∗=A←A1,…,AmR^*=A\leftarrow A_1,\dots,A_m 真 iff A∈M(P)A\in M(P) 或某 Ai∉M(P)A_i\notin M(P)。
  • Herbrand 模型:所有规则在该解释下为真。例 P1P_1 有两 Herbrand 模型 {p(1),q(1),q(2)}\{p(1),q(1),q(2)\} 与 {p(1),p(2),q(1),q(2)}\{p(1),p(2),q(1),q(2)\}。

⭐ 性质:

  • SS 不可满足 iff SS 无 Herbrand 模型。
  • 任何逻辑程序都有 Herbrand 模型。
  • 两 Herbrand 模型交集也是模型。
  • ⟹ 存在唯一极小 Herbrand 模型 MPM_P(least Herbrand model)。
  • P1⊆P2⇒MP1⊆MP2P_1\subseteq P_2\Rightarrow M_{P_1}\subseteq M_{P_2}。

4.5 SLD 归结规则

令 H←B1,…,BnH\leftarrow B_1,\dots,B_n 为程序规则,←A1,…,Am\leftarrow A_1,\dots,A_m 为目标(已重命名变量),θ\theta 为 AiA_i 与 HH 的 mgu:

←A1,…,AmH←B1,…,Bn←(A1,…,Ai−1,B1,…,Bn,Ai+1,…,Am)θ\frac{\leftarrow A_1,\dots,A_m\quad H\leftarrow B_1,\dots,B_n}{\leftarrow (A_1,\dots,A_{i-1},B_1,\dots,B_n,A_{i+1},\dots,A_m)\theta}

SLD 归结是 Prolog 的核心执行机制。


速查表

推理规则速查

规则 形式 适用
Modus Ponens (MP) p, p→q⊢qp,\ p\to q\vdash q 命题/Horn
Modus Ponens (Horn) p1,…,pk, (p1∧⋯∧pk)→q⊢qp_1,\dots,p_k,\ (p_1\land\dots\land p_k)\to q\vdash q Horn,完备
Generalized MP (GMP) p1′,…,pn′, (p1∧⋯∧pn⇒q)⊢qθp'_1,\dots,p'_n,\ (p_1\land\dots\land p_n\Rightarrow q)\vdash q\theta FOL 确定子句
Unit Resolution (α∨β), ¬β⊢α(\alpha\lor\beta),\ \lnot\beta\vdash\alpha 命题
General Resolution (α∨β), (¬β∨γ)⊢α∨γ(\alpha\lor\beta),\ (\lnot\beta\lor\gamma)\vdash\alpha\lor\gamma 命题/FOL
UG (Universal Generalization) p⊢∀x pp\vdash\forall x\,p FOL 公理系统

等值律速查(见 §1.9 完整表)

双否 / 逆否 / 蕴含消去 / 双条件消去 / De Morgan / 分配律 / 交换结合律。

算法速查

算法 输入 思想 完备性
DPLL CNF 回溯+剪枝 完备
WalkSat CNF 随机局部搜索 可靠不完备
前向链 Horn KB 数据驱动,反复触发规则 Horn 完备,线性
反向链 Horn KB 目标驱动,递归证明 Horn 完备
命题归结 CNF 归结反演,空子句=不可满足 完备
FOL 归结 CNF(含 Skolem) 合一+归结反演 完备
合一算法 原子集 分歧集+置换迭代 得 MGU

范式速查

范式 形式 转换
CNF 子句合取 消→↔ / ¬深入 / 分配
前束范式 Q1x1⋯Qnxn pQ_1x_1\cdots Q_nx_n\,p 改名/移量词/¬内移
FOL CNF 前束→Skolem→去∀→CNF 6 步

核心关系速查 ⭐

KB⊨f  ⟺  M(f)⊇M(KB)  ⟺  KB∧¬f 不可满足\text{KB}\models f\iff M(f)\supseteq M(\text{KB})\iff\text{KB}\land\lnot f\text{ 不可满足}

p 有效  ⟺  ¬p 不可满足∀x P≡¬∃x ¬Pp\text{ 有效}\iff\lnot p\text{ 不可满足}\qquad \forall x\,P\equiv\lnot\exists x\,\lnot P


关键概念清单

  • [ ] 解释三类建模范式(state-based / variable-based / logic-based)及逻辑推理 vs 模型检测的区别
  • [ ] 写出逻辑 Agent 的 TELL/ASK 循环与三层次(知识/逻辑/执行)
  • [ ] 给出 Wumpus 世界的 PEAS 描述与环境表征
  • [ ] 陈述逻辑三要素(syntax/semantics/inference rules)与蕴涵/推理/可靠/完备的定义
  • [ ] 写出 M(KB)=⋂f∈KBM(f)M(\text{KB})=\bigcap_{f\in\text{KB}}M(f) 及 KB⊨f  ⟺  KB∧¬f\text{KB}\models f\iff\text{KB}\land\lnot f 不可满足
  • [ ] 区分蕴涵 (entailment)、矛盾 (contradiction)、偶然 (contingency)、可满足 (satisfiable)
  • [ ] 默写命题逻辑语法递归定义与 Atom/Literal/Clause 术语
  • [ ] 写出命题逻辑 Hilbert 公理 (L1)-(L3) + MP 及形式证明/推导定义
  • [ ] 默写逻辑等值律全集(交换/结合/双否/逆否/蕴含消去/双条件消去/De Morgan/分配)
  • [ ] 完成 CNF 转换三步并给出例子
  • [ ] 写出确定子句与 Horn 子句定义,说明 MP 在 Horn 上完备且线性
  • [ ] 描述前向链/反向链的思想与对比(数据驱动 vs 目标驱动)
  • [ ] 写出命题归结规则(Unit + General)与归结反演流程
  • [ ] 列出 FOL 语法基本元素(常量/谓词/函数/变量/联结词/等词/量词)与项/原子句/复合句定义
  • [ ] 写出量词正确搭配(∀⇒, ∃∧\forall\Rightarrow,\ \exists\land)及常见错误
  • [ ] 陈述量词性质(可交换/不可交换)与量词对偶
  • [ ] 用 FOL 建模亲属/集合/Wumpus/电路领域
  • [ ] 区分诊断规则与因果规则
  • [ ] 默写知识工程七步
  • [ ] 写出 UI 与 EI 规则,说明 EI 用 Skolem 常数、仅一次、可满足等价非逻辑等价
  • [ ] 陈述 Herbrand 定理与 FOL 半可判定性
  • [ ] 给定两原子式,求其合一置换与 MGU;说明标准化分离
  • [ ] 写出 GMP 形式并证明其可靠性(含引理 p⊨pθp\models p\theta)
  • [ ] 说明 GMP 对一般 FOL 不完备、对确定子句完备
  • [ ] 完成 FOL 转 CNF 六步(尤其 Skolem 化两种情况)
  • [ ] 写出前束范式转换规则
  • [ ] 写出全一阶归结规则(含合一)与归结反演流程
  • [ ] 陈述 FOL 不可判定性与半可判定性
  • [ ] 说明 Algorithm = Logic + Control 及 Prolog 规则 A←A1,…,AmA\leftarrow A_1,\dots,A_m 与 Horn 子句关系
  • [ ] 定义 Herbrand 域/基/模型,陈述极小 Herbrand 模型唯一性
  • [ ] 写出 SLD 归结规则