由于LATEX 的符号限制,本章笔记中使用 ≡ 代替 ∣=∣ ,以避免输入符号过程过于冗杂。
请注意不要将本章笔记中的 ≡ 与一阶逻辑中的 ≡ 混淆。
命题和联结词
联结词
否定
合取
A |
B |
A 并且 B |
1 |
1 |
1 |
0 |
1 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
合取支:由合取词联结的两个命题。
析取
A |
B |
A 或者 B |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
0 |
0 |
0 |
析取支:由析取支联结的两个命题。
- 相容选言:两个析取支可以同时为真。
- 不相容选言:两个析取支不可同时为真,含义上等价为 A 或者 B 并且 并非 A 并且并非B,再自然语言中往往表达为"要么……要么……"。
蕴涵
A |
B |
如果 A 那么 B / 只有 B 那么 A |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
蕴涵词表示一个充分条件假言命题中的“如果……那么……”。
- 前件:蕴涵词联结的条件。
- 后件:蕴涵词联结的结论。
由真值表可知,只有当前件为真并且后件为假时该假言命题为真。这种性质的蕴涵也称为实质蕴涵。实质蕴涵
撇开了前后件间在具体内容上的一切联系,而仅仅注意前后件的真假与整个命题的真假间的关系,即纯粹的逻辑上的真假关系。
-
在这种情况下,将p→q 读作 “p实质蕴涵q” 可能比读作 “如果p那么q” 更加合适。
-
蕴含怪论 / 蕴涵悖论:一个假命题可以蕴涵任何命题,一个真命题可以被任意命题蕴涵,与人们的直观不相符合。当人们把蕴涵符号解读为“如果……,那么……”时,难以从直观上认同它们的逻辑真理性。
严格蕴涵: 和实质蕴涵是两种不同的蕴涵关系。A≺B 被定义为¬⋄(A∧¬B),即“A真且B假”是不可能的”;也可以被等价地定义为□(A→B),即“A实质蕴涵B”是必然的。
等值
A |
B |
A 当且仅当 B |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
只有当前件
和后件
的真值相同时该命题为真。
联结词、命题和公式
联结词 |
命题 |
公式 |
否定 |
负命题 |
否定式 |
合取 |
联言命题 |
合取式 |
析取 |
选言命题 |
析取式 |
蕴涵 |
充分条件假言命题 |
蕴涵式 |
等值 |
充分必要条件假言命题/等值命题 |
等值式 |
命题语言
命题语言 Lp 包括:
- 表示
原子命题
的命题符号:p,q,r。特别地,⊥ 表示永假命题,⊤表示永真命题。
- 表示
联结词
的联结符号:¬,∧,∨,→,↔
- 标点符号:左右括号(,)。
表达式与公式
表达式: 有限的符号串。则命题公式
/ 公式
可被形式化定义如下:
- 命题符号是公式,称为原子公式。
- 若ϕ,ψ 是公式,则(\neg\phi), (\phi \and \psi),(\phi \or \psi),(\phi \rightarrow \psi),(\phi \leftrightarrow \psi)是公式。
- 有限次使用(1)(2)得到的是公式。
使用BNF表达式,
\phi ::= p|(\neg\phi)|(\phi \and \phi)|(\phi \or \phi)|(\phi \rightarrow \phi)|(\phi \leftrightarrow \phi)
其中p表示任意原子公式,ϕ表示任意已经构建的公式。
Bacus Normal Form,BNF
类似一种数学游戏:从一个符号起始标志
开始,给出替换前面符号的规则。BNF语法定义的书写规范 / 生产式规则形式如下:
symbol:=alternative1∣alternative2⋯
每条规则申明:=/::=左侧的符号必须被右侧的某一个可选项代替。替换项用 ∣ 分割。替换项通常有两个符号和终结符
构成。终结符
没有书写规范,是书写过程的终止。
符号通常被叫做非终止符,也有人叫非终端。
依照定义对命题按照联结词进行分类,则任意命题公式有且只有以下形式:
- 原子公式:形如p
- 否定式:形如(¬p)
- 合取式:形如(p∧q)
- 析取式:形如(p∨q)
- 蕴涵式:形如(p→q)
- 等值式:形如(p↔q)
括号的省略
- 公式最外层的括号可以省略。
- 不违反联结词结合力强弱(
联结词优先级
)的括号可以省略。
语义
公式本身没有真假。
真假赋值
真假赋值: 以所有命题符号为定义域,真假值{0,1}为值域的函数。用v(p)或者pv表示真假赋值v给公式p指派的值。
给定原子公式
的真假赋值,其他公式的真值由联结符号的含义确定:
- pv∈{0,1}
- (¬p)v={1, pv=00, pv=1
- (p∧q)v={1, pv=qv=10, otherwise
- (p∨q)v={0, pv=qv=01, otherwise
- (p→q)v={1, pv=0 or qv=10, otherwise
- (p↔q)v={1, pv=qv0, otherwise
- ⊤v=1
- ⊥v=0
给定一组集合Φ,则Φv=1表示∀ϕ∈Φ,ϕv=1。
公式的分类
对于一个含有n个原子公式的复合公式有 2n种真假赋值,根据这些真假赋值的公式真值结果可将命题分为三类:
- 重言式:公式在任何真假赋值下均为真。
- 矛盾式:公式在任何真假赋值下均为假。
- 可满足式:存在一个在真假赋值,公式在该真假赋值下为真且存在一个在真假赋值,公式在该真假赋值下为假。
使用真值表明晰地说明各真假赋值情况下的真值并做出判断。
可满足性
由此定义公式的可满足性。给定命题公式ϕ,ϕ 是可满足的如果
∃v,ϕv=1
逻辑推论
给定一组命题公式集合Φ 和一个命题公式ϕ,ϕ 是Φ 的逻辑推论 当且仅当
∀v,Φv=1→ϕv=1
记作Φ⊨ϕ。
- 当 Φv=0 时,ϕv的真假值不做要求,即可以为真,也可以为假。即我们不关注Φv=0时的真假。
- 逻辑推论Φ⊨ϕ是否成立只与Φ 中公式和ϕ 的形式有关,而和其中表示命题的具体内容 / 真假赋值无关。
特别地,⊨ϕ 当且仅当
∀v,ϕv=1
由此定义命题ϕ的有效性。
有效性
给定命题公式ϕ,ϕ 是有效的如果
⊨ϕ
Lemma 1
假定Φ 是有穷集合,{ϕ1,ϕ2,⋯,ϕn}⊨ϕ 当且仅当
⊨ϕ1∧ϕ2∧⋯∧ϕn→ϕ
PROOF
{ϕ1,ϕ2,⋯,ϕn}⊨ϕ⇔∀v,(ϕ1v=1)∧(ϕ2v=1)⋯∧(ϕnv=1)→ϕv=1⇔∀v,(ϕ1∧ϕ2∧⋯∧ϕn)v=1→ϕv=1⇔∀v,(ϕ1∧ϕ2∧⋯∧ϕn→ϕ)v=1⇔⊨ϕ1∧ϕ2∧⋯∧ϕn→ϕ
Lemma 2
给定命题公式ϕ,
- ϕ是可满足的 当且仅当 ¬ϕ不是
有效
的;
- ϕ 是有效 的 当且仅当 ¬ϕ 不是
可满足
的。
即可以通过检验一个公式的可满足性来判断这个公式的有效性。
PROOF
∃v,ϕv=1⇔¬(∀v,(¬ϕ)v=1)⇔¬(⊨¬ϕ)
⊨ϕ⇔∀v,ϕv=1⇔¬¬(∀v,ϕv=1)⇔¬(∃v,(¬ϕ)v=1)
Lemma 3
给定一组命题公式集合Φ 和一个命题公式ϕ,Φ⊨ϕ ,当且仅当
Φ∪{¬ϕ}⊨⊥
即Φ∪{¬ϕ}是不可满足的。
PROOF 1
Φ={ϕ1,ϕ2,⋯,ϕn}⊨ϕ⇔⊨ϕ1∧ϕ2∧⋯∧ϕn→ϕ⇔⊨¬(ϕ1∧ϕ2∧⋯∧ϕn)∨ϕ⇔∀v,(¬(ϕ1∧ϕ2∧⋯∧ϕn)∨ϕ)v=1⇔¬(∃v,((ϕ1∧ϕ2∧⋯∧ϕn)∧¬ϕ)v=1)⇔∀v,(ϕ1∧ϕ2∧⋯∧ϕn)∧¬ϕ)v=0⇔⊨ϕ1∧ϕ2∧⋯∧ϕn)∧¬ϕ=0⇔⊨ϕ1∧ϕ2∧⋯∧ϕn)∧¬ϕ→⊥⇔Φ∪{¬ϕ}⊨⊥
PROOF 2
-
先证Φ⊨ϕ⇒Φ∪{¬ϕ}⊨⊥:
由Φ⊨ϕ,即有∀v:Φv=1,ϕv=1。假设此时¬ϕv=1,则ϕv=0,和前述矛盾。故不存在一种赋值使得{Φ∪{¬ϕ}}v=1。
-
再证Φ∪{¬ϕ}⊨⊥⇒Φ⊨ϕ:
由Φ∪{¬ϕ}⊨⊥,即有∀v,{Φ∪{¬ϕ}}v=0,即有∀v,∃ψ:(ψ∈Φ)∨(ψ=¬ϕ),ψv=0。
- 若ψ∈Φ,则∀v,Φv=0,则有Φ⊨ϕ;
- 若ψ=¬ϕ,则∀v,ϕv=1,则有Φ⊨ϕ。
语义等价
给定命题公式ϕ,ψ,ϕ,ψ语义等价 当且仅当
ϕ⊨ψ∧ψ⊨ϕ
记作ϕ∣=∣ψ 。
由于LATEX 的符号限制,本章笔记中使用 ≡ 代替 ∣=∣ ,以避免输入符号过程过于冗杂。
一些常见的语义等价关系包括:
- ¬¬ϕ≡ϕ
- ϕ↔ψ≡(ψ→ϕ)∧(ϕ→ψ)
- ϕ→ψ≡¬ϕ∨ψ
- ¬(ψ∧ϕ)≡¬ϕ∧¬ψ
- ¬(ψ∨ϕ)≡¬ϕ∨¬ψ
- (ψ∧ϕ)∨ρ≡(ψ∨ρ)∧(ϕ∨ρ)
- (ψ∨ϕ)∧ρ≡(ψ∧ρ)∨(ϕ∧ρ)
Lemma 4
等值替换
给定 ϕ≡ψ,且 ϕ 是 ρ 的一部分。则
ρ≡ρ′
若将ρ中的ϕ 替换为 ψ 得到 ρ′。
等价关系
集合X上的二元关系R⊆X×X 是等价关系,当且仅当 R满足
- 自反性:(a,a)∈R;
- 对称性:(a,b)∈R⇔(b,a)∈R;
- 传递性:(a,b)∈R, if ∃c∈X,(a,c)∈R∧(c,b)∈R,
∀a,b∈X。
关于R下 a 的等价类,记作 [a]={x∈X∣(x,a)∈R}。
易知语义等价
关系满足自反性、对称性和传递性,是一种等价关系。
每个命题公式都有唯一的*形式*,但通过语义等价关系可以被变换为其他形式,变换形式后的公式与原公式属于同一等价类。-
合取范式
称ϕ 为 ψ 的合取范式,如果 ϕ≡ψ,且
ϕ=D1∧D2∧⋯∧Dn
其中
- Di 是 ϕ 的子句,形如 L1∨L2∨⋯∨Ln。
- Li 是 子句的文字 literal,为原子公式或原子公式的否定。
析取范式
称ϕ 为 ψ 的析取范式,如果 ϕ≡ψ,且
ϕ=D1∨D2∨⋯∨Dn
其中
- Di 是 ϕ 的子句,形如 L1∧L2∧⋯∧Ln。
- Li 是 子句的文字 literal,为原子公式或原子公式的否定。
子句不可以有否定。故¬¬q 既不是合取范式,也不是析取范式;q∨p既是合取范式,又是析取范式。
形式推演
为了建立一个过程来判读一个有效推理是否成立,我们需要建立一个基于规则的推理系统,称该规则为推理规则。
推理规则:在推理系统内,从一组前提出发,被不断应用可以得到结论的规则。
实现形式推演系统需要考虑规则的选择和应用问题,这与所涉及公式的形式有关。规则越多,公式形式越多样,形式推演各步骤进行规则选择的难度就越大。因此为了提高系统的可实现性,可以
MP规则:蕴含消去
ϕ,ϕ→ψ⊨ψ
形式可推演
给定一组前提集合Φ={ϕ1,ϕ2,⋯,ϕn} 和一个结论ψ,其中 ϕi和ψ都是公式。从前提Φ到这个结论ψ是形式可推演的,如果存在一个证明
1 2 m ψ1ψ2⋯ψm
使得 ψm=ψ。其中,ψi(i=1,2,3,⋯,m) 要么属于 Φ,要么依据{ψ1,⋯,ψi−1} 中的公式通过应用一条推理规则得到。
记为Φ⊢ψ。
推理系统的性质
设 ⊢R 是由一组形式推演规则集合R构成的推理系统
,称为自然演绎系统。对于任意公式集合 Φ和公式 ψ,
- 推理系统 ⊢R是可靠的,当且仅当 如果Φ⊢Rψ,则Φ⊨ψ。
- 推理系统 ⊢R是完备的,当且仅当 如果Φ⊨ψ,则Φ⊢Rψ。
因此,如果一个推理系统是可靠的,那么从一组真命题出发,通过形式推演得到的结论也是真的,确保了推理系统的正确性;如果一个推理系统是完备的,那么从一组真命题出发,可以推出这组真命题所蕴涵的所有结论,确保了推理系统的推理能力。
Exp: 消解原理
消解推演系统
在进行形式推演前,把相关公式转化为合取范式
。
子句公式
- 在一个
子句
中,命题符号
的重复出现和文字
的顺序不影响子句
真值。
- 在一个
合取范式
中,子句
的重复出现和子句
的顺序不影响范式
真值。
因此,可以把一个子句
看成是一个文字
集合,理解为文字
的析取;一个合取范式
看成子句
集合,理解为子句
的合取,即为子句公式。 记
- 文字集合/子句:[L1,L2,⋯,Ln],等价于L1∨L2∨⋯∨Ln,其中Li是
文字
;
- 子句集合/公式:{D1,D2,⋯,Dm},等价于D1∧D2∧⋯∧Dm},其中Di是
子句
。
特别指出,[ ]表示空子句,理解为⊥ ;{ }表示空公式,理解为 ⊤。且 1={ }={[ ]}=0。
消解规则
以子句公式为前提,给定两个子句D1,D2 ,则可从D1∪{L} 和D1∪{L} 推出子句D1∪D2。其中,D1,D2 可为空集[ ]。即
D1∪{L},D1∪{L}⊢RD1∪D2
称D1∪D2 为D1,D2关于L的消解式。
L 是 L的补 : 对于任意原子公式p,
∀p,p=¬p,¬p=p
系统性质
可靠性
Lemma 5
D1∪{L},D1∪{L}⊨D1∪D2
PROOF
∀v:(D1∪{L})v=1,(D2∪{L})v=1
假设 (D1∪D2)v=0。则
D1v=0,D2v=0
则
Lv=1,Lv=1
即有(L∨L)v=1 ,与(L∨L)v=⊥v=0 矛盾。故原式成立。
下证明消解系统的可靠性:
若Φ⊢Res=D, 则Φ⊨D
PROOF
- 基始步骤:∀Di∈Φ,显然有Φ⊨Di。
- 归纳步骤:如果 Φ⊨Di 且 Φ⊨Dj,Dk 是 Di 和 Dj 的消解式,其中i,j,k∈{1,2,⋯,n} 由lemma 5,Φ⊨Dk。
×完备性
PROOF
Counter Example
设Φ={[¬p]},D=[¬p,p]。显然Φ⊨D,但无法构造一个从Φ出发的消解推演D1,D2,⋯,Dn 使得Dn=D。
Summary
- 消解推理系统是可靠的,但不是完备的。
- 当D=[ ],消解推演既是可靠的,又是完备的。即消解系统是否证完备的。
Lemma 6
否证完备
从一组有穷的前提集Φ出发,如果不存在 ⊥ 的 证明,那么Φ是可满足的。
PROOF
上述定理等价为如果一个消解证明没有新子句可以获得,但⊥还没被推出,此时整个公式集合(包括前提)都是可满足的。为表方便定义消解闭包:给定子句集合S,则R(S)是S的消解闭包,若R(S)满足:
- 如果c∈S,则c∈R(S);
- 如果c1,c2∈R(S), 且 c 是 c1 和c2的消解,则c∈R(S)。
则上述定义等价为:若 ⊥∈/R(Φ),则Φ是可满足的。
现对R(Φ)中出现的命题符号数量 n做归纳证明。
-
基始步骤: n=0, 即没有任何公式符号。据定义{} 是可满足的。
-
归纳步骤:假设对于n=1,2,⋯,k,上述断言均成立。则n=k+1时,假设子句集合Φ 满足 ⊥∈/R(Φ),选择任一命题符号记为p,将R(Φ)划分为不相交的三个子集Sp,S¬p,S0:
- Sp : Φ中包含 p 的所有子句的集合。
- S¬p : Φ中包含 ¬p 的所有子句的集合。
- S0 : Φ中既不包含 p ,又不包含 ¬p 的所有子句的集合。易知S0 包含至多k 个命题符号且 ⊥∈/S0,根据假设有 S0 是可满足的: ∃v,S0v=1。
对p在v下的赋值做分类讨论:
- ∀D=p∨D′∈Sp, v(D′)=1: 此时Spv=1,即Sp是可满足的。令pv=0,则∀D=¬p∨D′∈S¬p, v(D)=1,即S¬p是可满足的。即R(Φ)是可满足的。
- ∃D0=p∨D′∈Sp, v(D′)=0:令pv=1,则∀D=p∨D′∈Sp, v(D)=1,即Sp是可满足的。对于S¬p,若为空集,则R(Φ)已为可满足的;若非空集,则∀D=¬p∨D′’∈S¬p,使其与p∨D′ 消解,得到 D′∨D′′,且D′∨D′′不含p,¬p,故必定在S0中。由S0是可满足的,故(D′∨D′′)v=1。即R(Φ)是可满足的。
也即:n=k+1,上述断言成立。
综上,若 ⊥∈/R(Φ),则Φ是可满足的。
Lemma 7
消解算法的复杂性 ,
∃c>1:∀n,∃p:∀v,pv=0,最小消解否证包含cn步骤。
其中 n为p包含的命题符号数量。
霍恩Horn子句逻辑
前述消解系统是难解的。一个系统的计算复杂性与表达能力有关,故可通过降低系统的表达能力降低计算复杂性。对于消解系统来说,霍恩公式是一种降低计算复杂性的方法。
霍恩子句
定义
霍恩子句是形如L1∨⋯∨Ln的子句,其中子句至多包含一个正文字。
- 肯定/确定霍恩子句:子句刚好包含一个肯定文字时。
- 否定霍恩子句:子句不包含肯定文字时。
可将一般的子句
转化为蕴含公式
:
p1∨p2∨⋯∨pm∨¬q1∨¬q2∨⋯∨¬qn≡(q1∧q2∧⋯qn)→(p1∨p2∨⋯¬pm)
约定蕴涵前件的文字之间恒为合取,蕴涵后件的文字之间恒为析取,并按照逻辑编程的惯例,上式也常写作
p1,p2,⋯,pm←q1,q2,⋯,qn
其中m,n∈N。称上式为一个规则,p1,p2,⋯,pm 为头,q1,q2,⋯,qn 称为身体。
RECALL
可废止规则的每条规则包括:
- 规则头 - 论证结论
- 规则身体 - 论证前提
- 规则符号 - 推理关系
形式
则霍恩子句
限制m=0,1,以得到确定的结果。故霍恩子句共有四种形式:
- p←q1,⋯,qm
- p←
- ←q1,⋯,qm
- □ (空子句)
在本课程中 □,[ ],⊥是等价的,只是在不同的的语境中使用。
类似地,从程序设计的角度出发,
- 称形如 p←q1,⋯,qm 的霍恩子句为一个过程 :
- 称 p 称为过程名;
- 称 {q1,⋯,qm} 称为过程体
- 解释 qi 为过程调用。
- 称形如 p←的霍恩子句为一个事实 ;
- 称形如←q1,⋯,qm 的霍恩子句为一个目标。
目标
全部由过程调用
组成,常用来表示一个询问。
- 称 □ 为停机语句,表示程序执行(成功)终止。
霍恩子句逻辑
霍恩子句逻辑是由霍恩子句组成的系统。它是命题演算系统
的子系统。
霍恩子句逻辑程序是指这样一些被称为过程
、目标
和事实
的霍恩子句的集合。
- 给定一个
霍恩子句逻辑程序
,它由目标
中的一个过程调用
与一事实
或与一过程
的过程名
匹配启动。
- 当
过程调用
与一事实
匹配,该过程调用
成功。
- 再由
目标
中另一过程调用
重新启动程序,直至目标
中全部过程调用
成功或者某一 过程调用
失败。(不能与事实或过程名匹配)
- 当
过程调用
与一过程名
匹配,程序需调用该过程
的过程体
,该过程体
中的过程调用
与原目标中余下的过程调用
合并形成新目标,并重新启动程序,寻求匹配。
SAT solver
SAT Solver 是实现可满足性的推理引擎:给定一个公式,建构一个真假赋值使得这个公式为真。
RECALL
消解原理 处理逻辑演绎。给定一个知识库,检查一个命题是否可以被这个知识库所蕴涵。
DPLL算法
给定一个子句集合 Φ,Φ 所包含的所有命题符号集合记作 Σ。DPLL算法 递归调用一个函数 DPLL(Φ) :
DPLL(Φ) Returns{1,∃v,Φv=10,otherwise
递归规则
- 如果Φ=ϕ (空集),返回
可满足
。
- 如果 [ ]∈Φ, 返回
不可满足
。
- 单位传播规则:如果 Φ 包含单位子句C,则给C中的命题符号赋值使得 Cv=1并在该赋值下把Φ简化为Φ′,调用 DPLL(Φ′)。
- 分裂规则:从Σ中选择一个没有被赋值的命题符号 p并赋值pv=1,并在该赋值下把Φ简化为 Φ′,调用 DPLL(Φ′)。
- 如果该调用返
可满足
,则返回可满足
。
- 否则,赋值pv=0,并在该赋值下把Φ简化为 Φ′′,并调用 DPLL(Φ′′)。
从计算复杂性的角度看,SAT,DPLL是NP完全的:在最坏的情况下,其计算复杂性为指数时间。
霍恩子句下的DPLL
-
DPLL 算法在霍恩子句上总能产生霍恩子句。
-
在 DPLL 中,若第一次系列应用单位传播规则
没有导致结束,那么产生的霍恩子句集合不含单位子句。
-
一组既不含单位子句也不含空语句的霍恩子句是可满足的。
所有子句都至少有一个负文字,给所有未赋值命题符号赋真值 0 即可满足公式。
-
依据***3.***可知,每次应用分裂规则时,当前的公式是可满足的 / 错误可以立即被发现。
因此,对于包含 n 个命题符号的 (二叉) 搜索树,最多只有 n 个节点应用了分裂规则。即搜索树的大小是 n 的多项式,故霍恩子句下的DPLL运行时间是多项式的。