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;归结规则;反演:KBp    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, X1X2=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_CPCP_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(仅局部感知当前格)、DeterministicSequentialStaticDiscreteSingle-agent(Wumpus 实为自然特征)。

KB 推理示例

感知 breeze ⟹ 相邻方格可能有 pit;感知 stench ⟹ 相邻可能有 wumpus。据此标记安全方格并规划路径。(探索过程图示见原课件 lec7.pdf,需对照查看。)


1.4 逻辑的一般概念 (Ingredients of a Logic)

⭐ 一个逻辑由三要素构成:

要素 定义
语法 (Syntax) 合法公式集合 RainWet\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\alphaKBα\text{KB}\models\alpha(推出的都真)。
  • 完备性 (Completeness):若 KBα\text{KB}\models\alphaKBα\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, fg, fg, fg, fg\lnot f,\ f\land g,\ f\lor g,\ f\to g,\ f\leftrightarrow g 也是公式。
  • 公式本身只是符号(语法),尚无含义(语义)。

术语

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

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

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

形式证明与推导(pl_fol)

  • 形式证明pp 的序列 p1,,pn=pp_1,\dots,p_n=p,每步是公理或由前序 pi,pj(=pipk)p_i,p_j(=p_i\to p_k) 经 MP。记 p\vdash pppLL 的内定理)。
  • 形式推导(从 Γ\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(fg,w)=I(f,w)I(g,w)I(f\land g,w)=I(f,w)\land I(g,w)
    • I(fg,w)=I(f,w)I(g,w)I(f\lor g,w)=I(f,w)\lor I(g,w)
    • I(fg,w)=¬I(f,w)I(g,w)I(f\to g,w)=\lnot I(f,w)\lor I(g,w)
    • I(fg,w)=(I(f,w)I(g,w))I(f\leftrightarrow g,w)=(I(f,w)\leftrightarrow I(g,w))

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

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


1.7 核心语义关系

关系 定义
蕴涵 (Entailment) KBf\text{KB}\models f M(f)M(KB)M(f)\supseteq M(\text{KB})ff 未添加新信息) RainSnowSnow\text{Rain}\land\text{Snow}\models\text{Snow}
矛盾 (Contradiction) M(KB)M(f)=M(\text{KB})\cap M(f)=\emptyset RainSnow\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

核心等价(贯穿全章)

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

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

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

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

复杂性(pl_fol)

  • 判定 KBp\text{KB}\models pcoNP-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) ⭐⭐⭐

pq\models p\leftrightarrow q,则 ppqq 逻辑等值。等值替换规则:若 qq\models q\leftrightarrow q',则在 pp 中用 qq' 替换子公式 qqpp',则 pp\models p\leftrightarrow p'

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

1.10 合取范式 (CNF / DNF)

术语 定义
文字 (literal) 原子或其否定,如 x, ¬xx,\ \lnot x
子句 (clause) 文字析取,如 x1¬x2x3x_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(x2x3))x2(x_1\land(x_2\to x_3))\to x_2

  • \to¬(x1(¬x2x3))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
  • 分配律:(¬x1x2)(¬x1x2¬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,pqq\frac{p,\quad p\to q}{q}

推理规则一般式:f1,,fkg\dfrac{f_1,\dots,f_k}{g}派生 (Derivation)KBf\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)(p1pk)q(p_1\land\dots\land p_k)\to q,其中 pip_ik0k\ge 0)与 qq 是命题符号。

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

Horn 子句 (Horn clause):确定子句 目标子句 (p1pk)(p_1\land\dots\land p_k)\to\bot(等价 ¬(p1pk)\lnot(p_1\land\dots\land p_k))。

Modus Ponens on Horn clauses

p1,,pk,(p1pk)qq\frac{p_1,\dots,p_k,\quad (p_1\land\dots\land p_k)\to q}{q}

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

KBp      KBp\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不可满足

归结反演:证明 KBp\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,2P2,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) ffnn 元函项符号,tit_i 是项 ⟹ f(t1,,tn)f(t_1,\dots,t_n) 是项。
  • 公式:(1) PPnn 元谓词,tit_i 项 ⟹ P(t1,,tn)P(t_1,\dots,t_n) 原子公式;(2) ¬p,pq,pq,pq,pq\lnot p, p\to q, p\land q, p\lor q, p\leftrightarrow q 复合公式;(3) xp, xp\forall x\,p,\ \exists x\,p 量化公式。

术语(pl_fol)

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

公理系统 KK

  • (K1) p(qp)p\to(q\to p)
  • (K2) (p(qr))((pq)(pr))(p\to(q\to r))\to((p\to q)\to(p\to r))
  • (K3) (¬p¬q)(qp)(\lnot p\to\lnot q)\to(q\to p)
  • (K4) xp(x)p(t)\forall x\,p(x)\to p(t)(项 ttp(x)p(x)xx 自由)
  • (K5) x(pq)(pxq)\forall x(p\to q)\to(p\to\forall x\,q)xx 不在 pp 自由出现)
  • 推理规则:(MP) p,pqqp,p\to q\vdash q;(UG, Universal Generalization) pxpp\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 上函数集 FFDD 上关系集 PP
    • 常元 aaMDa\mapsto a^M\in Dnn 元函数符号 fM:DnD\mapsto f^M:D^n\to Dnn 元谓词 PMDn\mapsto P^M\subseteq D^n
  • 个体变元指派 V:YDV: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
    • xp\forall x\,p 真 iff 对所有 dDd\in DIx=d(p)I_{x=d}(p) 真。
    • xp\exists x\,p 真 iff ¬x¬p\lnot\forall x\,\lnot p 真。
    • Ix=d=(M,Vx=d)I_{x=d}=(M,V|_{x=d})Vx=d(y)={dy=xV(y)otherwiseV|_{x=d}(y)=\begin{cases}d&y=x\\V(y)&\text{otherwise}\end{cases}

模型与有效性(pl_fol)

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

FOL 模型无穷多

枚举 FOL 模型不可行:域个数 n:1n: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)

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

⚠️ 常见错误\forall\land 搭配——xAt(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)

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

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

量词性质

  • xy=yx\forall x\forall y = \forall y\forall xxy=yx\exists x\exists y = \exists y\exists x
  • xyyx\exists x\forall y \neq \forall y\exists x
    • xyLoves(x,y)\exists x\forall y\,\text{Loves}(x,y):“存在一人爱所有人”。
    • yxLoves(x,y)\forall y\exists x\,\text{Loves}(x,y):“每人被至少一人爱”。

量词对偶 (Duality)

xP¬x¬PxP¬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={xs2})\forall s\ \text{Set}(s)\Leftrightarrow(s=\{\})\lor(\exists x,s_2\ \text{Set}(s_2)\land s=\{x|s_2\})
  • 空集不可分解:¬x,s {xs}={}\lnot\exists x,s\ \{x|s\}=\{\}
  • 子集:s1,s2 s1s2(x xs1xs2)\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)(s1s2s2s1)\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(s1s2)(xs1xs2)\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(s1s2)(xs1xs2)\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],[x1,y],[x,y+1],[x,y1]}\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 与置换 σ\sigmaSσS\sigma 为代入结果。Ask(KB,S)\text{Ask}(\text{KB},S) 返回部分/所有使 KBSσ\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)=1Signal(t)=0\forall t\ \text{Signal}(t)=1\lor\text{Signal}(t)=0101\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)=ORSignal(Out(1,g))=1n 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))=i1Signal(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
  • 调试:可能遗漏 101\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=0n=0\to\infty,用深度 nn 项命题化,查是否蕴涵。
  • 问题:α\alpha 被蕴涵则停;不被蕴涵则死循环。

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

命题化的问题

  • 生成大量无关语句(如 Greedy(Richard)\text{Greedy}(\text{Richard}) 与结论无关)。
  • ppkk 元谓词 + nn 常量 ⟹ pnkp\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}) failxx 同时=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 变量,tivit_i\neq v_i 的项,vivjv_i\neq v_j
  • EθE\theta:同时替换 EE 中所有 viv_itit_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) θ\thetaS1θ==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_kSS 合一则停(σ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,(p1p2pnq)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,(p1pnq)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)。

  • 引理:对任意 ppppθp\models p\theta
  1. (p1pnq)(p1pnq)θ=(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,,pnp1pnp1θ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 多项式迭代终止(至多 pnkp\cdot n^k 文字)。
  • 一般情况 α\alpha 不被蕴涵时可能不终止(不可避免,因确定子句蕴涵半可判定)。

效率

  • 无需在迭代 kk 重新匹配前提未在 k1k-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)

形式 Q1x1QnxnpQ_1 x_1\cdots Q_n x_n\,ppp 无量词(母式 matrix)。

转换规则QQ^*QQ 对偶量词):

  1. 改名:=Qxp(x)Qyp(y)|= Qx\,p(x)\leftrightarrow Qy\,p(y)(条件)。
  2. 移量词:xx 不在 pp 自由 ⟹ =(pQxq)Qx(pq)|=(p\to Qx\,q)\leftrightarrow Qx(p\to q)xx 不在 qq 自由 ⟹ =(Qxpq)Qx(pq)|=(Qx\,p\to q)\leftrightarrow Q^*x(p\to q)
  3. ¬\lnot 内移:=¬QxpQx¬p|=\lnot Qx\,p\leftrightarrow Q^*x\,\lnot p
  4. =(xpxq)x(pq)|=(\forall x\,p\land\forall x\,q)\leftrightarrow\forall x(p\land q)
  5. =(xpxq)x(pq)|=(\exists x\,p\lor\exists x\,q)\leftrightarrow\exists x(p\lor q)
  6. xx 不在 pp 自由 ⟹ =(pxq)x(pq)|=(p\lor\forall x\,q)\leftrightarrow\forall x(p\lor q)=(pxq)x(pq)|=(p\land\exists x\,q)\leftrightarrow\exists x(p\land q)

3.7 FOL 转 CNF ⭐⭐⭐

六步(示例"爱所有动物者被某人爱" x[yAnimal(y)Loves(x,y)][yLoves(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)][yLoves(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)¬xpx¬p\lnot\forall x\,p\equiv\exists x\,\lnot p¬xpx¬p\lnot\exists x\,p\equiv\forall x\,\lnot p
    x[yAnimal(y)¬Loves(x,y)][yLoves(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[yAnimal(y)¬Loves(x,y)][zLoves(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 x1xm\forall x_1\cdots\forall x_m ⟹ 替换为 f(x1,,xm)f(x_1,\dots,x_m)(新 nn 元函数符号)。
  • 例:xy,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 不可满足;=sp|=s\to p∤ ⁣=ps\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(空子句)。

全一阶归结规则

l1lk,m1mnl1li1li+1mj1mj+1mnθ\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}

ppqq 的 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\alphaKB¬α\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 语法

  • 规则 AA1,A2,,AmA\leftarrow A_1,A_2,\dots,A_mAA(原子),AiA_i(原子合取)。
  • m=0m=0事实(无体,往往省略 \leftarrow)。
  • 一条规则 AA1,,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 pM(P)p\in M(P)
  • 规则真值:IH(R)=tI_H(R)=t iff 对所有常例 RR^*IH(R)=tI_H(R^*)=tR=AA1,,AmR^*=A\leftarrow A_1,\dots,A_m 真 iff AM(P)A\in M(P) 或某 AiM(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)。
  • P1P2MP1MP2P_1\subseteq P_2\Rightarrow M_{P_1}\subseteq M_{P_2}

4.5 SLD 归结规则

HB1,,BnH\leftarrow B_1,\dots,B_n 为程序规则,A1,,Am\leftarrow A_1,\dots,A_m 为目标(已重命名变量),θ\thetaAiA_iHH 的 mgu:

A1,,AmHB1,,Bn(A1,,Ai1,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, pqqp,\ p\to q\vdash q 命题/Horn
Modus Ponens (Horn) p1,,pk, (p1pk)qqp_1,\dots,p_k,\ (p_1\land\dots\land p_k)\to q\vdash q Horn,完备
Generalized MP (GMP) p1,,pn, (p1pnq)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) pxpp\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 子句合取 消→↔ / ¬深入 / 分配
前束范式 Q1x1QnxnpQ_1x_1\cdots Q_nx_n\,p 改名/移量词/¬内移
FOL CNF 前束→Skolem→去∀→CNF 6 步

核心关系速查 ⭐

KBf    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 不可满足xP¬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)=fKBM(f)M(\text{KB})=\bigcap_{f\in\text{KB}}M(f)KBf    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 形式并证明其可靠性(含引理 ppθp\models p\theta
  • [ ] 说明 GMP 对一般 FOL 不完备、对确定子句完备
  • [ ] 完成 FOL 转 CNF 六步(尤其 Skolem 化两种情况)
  • [ ] 写出前束范式转换规则
  • [ ] 写出全一阶归结规则(含合一)与归结反演流程
  • [ ] 陈述 FOL 不可判定性与半可判定性
  • [ ] 说明 Algorithm = Logic + Control 及 Prolog 规则 AA1,,AmA\leftarrow A_1,\dots,A_m 与 Horn 子句关系
  • [ ] 定义 Herbrand 域/基/模型,陈述极小 Herbrand 模型唯一性
  • [ ] 写出 SLD 归结规则