You are on page 1of 13

2022/10/25

谓词逻辑表示注意事项: 练习
 用谓词演算公式表示下列句子。
 (1)猫比老鼠跑得快。
• (1) 分析命题中表示性质和关系的谓词,分别符号化为一元
 (2)有的猫比所有老鼠跑得快。
和n(n  2)元谓词。  (3)并不是所有的猫比老鼠跑得快。
 (4)不存在跑得同样快的两只猫。
• (2) 根据命题的实际意义选用全称量词或存在量词。
 解 C(x):x是猫;M(y):y是老鼠;Q(x,y):x
• (3) 在不同的个体域中,命题符号化的形式可能不一样。如 比y跑得快;L(x,y):x和y跑得同样快。
 这4个命题分别符号化为:
果事先没有给出个体域,都应以全总个体域为个体域。  (1)(x )(y)[C(x)∧M(y) → Q(x,y)];
• (4) 多个量词同时出现时,不能随意颠倒它们的顺序,颠倒  (2)(x)[C(x)∧(y)(M(y) → Q(x,y))];
 (3) ¬ (x)(y)[C(x)∧M(y) → Q(x,y)];
后会改变原命题的含义。  (4) ¬ (x)(y)[C(x)∧C(y)∧L(x,y)]。

72

练习
 如果张三比李四大,那么李四比张三小。 练习
 Older(x,y):x比y大  1 并不是所有的学生选修了历史和生物。
 Younger(x,y):x比y小  2 所有选修人工智能课程的学生都喜欢玩游戏。
 Older(Zhang,Li)→ Younger(Li,Zhang)  3 选修人工智能课程的学生都不喜欢玩游戏。
 所有老实人都不会说谎。  4 并不是所有选修人工智能课程的学生都喜欢玩游戏。
 Honest(x):x是老实人
 Lie(x):x说谎  S(x): x是学生;T(x,y): x选修y课程
 (x)[ Honest(x) → ¬ Lie(x)]  Like(x,y): x喜欢y
 For every set x, there is a set y, such that the cardinality  H:历史;B:生物;AI:人工智能;Game:游戏
of y is greater than the cardinality of x.  ( ¬,  ,  , → ,(x), (x) )
 (x){Set(x) → (y)(u)(v)[Set(y) ∧Card(x, u)
∧Card(y, v) ∧G(v, u)]} 73 74

作业(习题4)
用谓词公式表示下列语句。 置换&合一
一个表达式的置换就是在该表达式中用置换项置换变量。
 1 历史考试中有学生不及格。
 2 凡是选修人工智能课程的学生都参加了
 置换(Subtitution)是形如{ t1/x1, t2/x2, …, tn/xn}的有限集合。
人工智能课程的考试。
其中,ti是不同于xi的项(常量、变量、函数);x1,x2,…,xn
 3 不存在两片相同的树叶。
 4 星期六,未选修人工智能课程的学生都 是互不相同的变量; ti/xi表示用ti代换xi。
去舞会了。  例子:

{a/x, w/y, f(s)/z}, {g(x)/x}是置换;


{x/x}, {y/f(x)}不是置换;

75

1
2022/10/25

合一
置换&合一
• 合一(Unification)
 例 表达式P[x,f(y),B]的4 合一:寻找项对变量的置换,以使两表达式一致。
于是,我们可得到P[x,f(y),B]
个置换为 • 如果一个置换s作用于表达式集{Ei}的每个元素,则我们用
的4个置换的例,如下: {Ei}s来表示置换例的集。
 s1={z/x,w/y}
• P[x,f(y),B] s1=P[z,f(w),B]
 s2={A/y} • 称表达式集{Ei}是可合一的,如果存在一个置换s,使得:
• P[x,f(y),B]s2=P[x,f(A),B] E1s= E2s= E3s=…
 s3={q(z)/x,A/y}
• P[x,f(y),B]s3=P[q(z),f(A),B] • 我们称此s为{Ei}的合一者,因为s的作用是使集合{Ei}成为
 s4={c/x,A/y}
• P[x,f(y),B]s4=P[c,f(A),B] 单一形式。

小结
合一
• 例:表达式集{P[x,f(y),B],P[x,f(B),B]}的合一者为
•合式公式
•谓词逻辑的表示方法
• s={A/x,B/y}
• 因为
• P[x,f(y),B]s=P[x,f(B),B]s =P[A,f(B),B]
• 即s使表达式成为单一形式
• P[A,f(B),B]

目 消解原理

• 前面介绍过谓词公式、合式公式性质以及置换、合一等概念。

1 在此基础上,进一步介绍消解原理。
消解原理
• 消解原理又称为归结原理。该原理是Robinson提出的一种基
2 子句集的求取 于逻辑的、采用反证法的推理方法。
• 由于其理论上的完备性,归结原理成为机器定理证明的主要
方法。

2
2022/10/25

消解原理
消解原理 分析:
• 令C= F1F2 …Fn
• 证明的基本思想是:
• (C→G)等价于 ¬C∨ G
设F1、 F2 …、Fn、G为公式,G为F1、F2 …、Fn的逻辑推论
• ¬(C→G)等价于 ¬ (¬ C∨ G),可化为C  ¬ G,
,当且仅当公式
• 即(F1…Fn  ¬ G)
((F1 F2 …Fn)→G)是有效的 。
• 归结法的本质上就是一种反证法,它是在归结推理规则的基础上
• 可以采用反证法的思想:
实现的:为了证明一个命题P恒真,它证明其反命题¬P恒假,即
设F1、F2 …、Fn、G为公式,G为F1、F2 …、Fn的逻辑推论
不存在使得¬P为真的解释,从而证明了命题P恒真。
,当且仅当公式(F1F2 …Fn  ¬ G)是不可满足的 。
• 只要证明((F1…Fn)→G)的否定,即(F1…Fn  ¬ G)是不可满
足的(找不到一个解释使其为真),则说明原公式成立。

基本概念 基本概念
文字:一个原子公式和原子公式的否定都叫做文字,如:
P(x), ¬P(x,f(x)),Q(x, g(x)) 设C1,C2,C3…,Cn为n个子句
互补的文字:形如P和¬P,Q(x)和¬Q(x)的文字对称为互补的文
合取范式:C1 ∧C2 ∧C3… ∧Cn
子句集: S= {C1 ,C2 ,C3… ,Cn}

任何谓词公式 F 都可通过等价关系及推理规则化为
子句:由文字的析取组成的公式,如:
相应的子句集S。
P(x)∨Q(x), ¬P(x,f(x))∨Q(x,g(x))
空子句:不包含任何文字的子句。
子句集:由子句构成的集合。
例:{P(x)∨Q(x) , ¬ P(x,f(x))∨Q(x,g(x)) }

分析:
消解 • 要证明: ¬ P∨R是¬ P∨Q和¬ Q∨R的逻辑结论,
就是要证明使¬ P∨Q和¬ Q∨R为真的解释I,也使
• 当消解可使用时,消解过程被应用于母体子句对,以
得¬ P∨R为真。
便产生一个导出子句。
• 设I是使¬ P∨Q和¬ Q∨R为真的任一解释。
• 例如,如果存在某个公理¬ P∨Q和另一公理¬ Q∨R,
那么¬ P∨R在逻辑上成立。这就是消解,而称¬ P∨R • 若解释I下的Q为真,则¬ Q为假,又已知¬ Q∨R为
为¬ P∨Q和¬ Q∨R的消解式(resolvent)。 真,则在I下,R为真,故¬ P∨R为真。
• 若解释I下的Q为假,又已知¬ P∨Q为真,则在I下,
¬ P为真,故¬ P∨R为真。
• 故¬ P∨R是¬ P∨Q和¬ Q∨R的逻辑结论。

3
2022/10/25

消解
小结
• 所以,以后遇到形如¬ P∨Q和¬ Q∨R的子句 •消解原理
,就可以直接得到一个新子句¬P∨R,这个新
子句是由上面两个子句导出的,并且可以看成
是消去互补文字Q和¬ Q后剩余部分进行析取
构成的新子句,这个过程就是消解。 思考
 为什么说¬ P∨R是¬ P∨Q和¬Q∨R的逻辑结论?

子句集的求取
目  任一谓词演算公式可以都化成一个子句集。其变换过程由下列
录 九个步骤组成:
(1)消去蕴涵符号
1
消解原理 只应用∨和¬符号,以¬A∨B替换A → B。
(2)减少否定符号的辖域
2 子句集的求取  每个否定符号¬最多只用到一个谓词符号上,并反复应用德·

根定律。例如:
以¬A∨ ¬B代替¬ (A∧B)
以¬A∧¬ B代替¬ (A∨B)
以(∃x){¬A}代替¬ (∀x)A
以(∀x){¬A}代替¬ (∃x)A
以A代替¬ (¬A)

子句集的求取 子句集的求取
(3)对变量标准化 (4)消去存在量词
在任一量词辖域内,受该量词约束的变量为一哑元(虚构变 (a) 如果要消去的存在量词在某些全称量词的辖域内
 Skolem函数: 在公式(∀y)[(∃x)P(x,y)]中,存在量词是在全称量词的辖
量),它可以在该辖域内处处统一地被另一个没有出现过的任意
域内,我们允许所存在的x可能依赖于y值。令这种依赖关系用函数
变量所代替,而不改变公式的真值。合式公式中变量的标准化, g(y)定义,它把每个y值映射到存在的那个x。这种函数叫做Skolem
意味着对哑元改名以保证每个量词有其自己唯一的哑元。 函数。如果用Skolem函数代替存在的x,我们就可以消去全部存在
量词,并写成:
例如,把 (x){P(x) → (x)Q( x)} (y)P(g( y), y)
标准化而得到: (x){P(x) → (y)Q( y)}
 Skolem函数所使用的函数符号必须是新的,即不允许是公式中已经
出现过的函数符号。

4
2022/10/25

子句集的求取 子句集的求取
 (4)消去存在量词 (5)化为前束形

 (b)如果要消去的存在量词不在任何一个全称量词的辖域 到这一步,已不留下任何存在量词,而且每个全称量词都

内,那么就使用不含变量的Skolem函数即常量。 有自己的变量。把所有全称量词移到公式的左边,并使每个量
词的辖域包括这个量词后面公式的整个部分。所得公式称为前
 例如,(∃x)P(x)化为P(A),其中常量符号A用来表示我们
束形。前束形公式由前缀和母式组成,前缀由全称量词串组成,
知道的存在实体。A必须是个新的常量符号,它未曾在公
母式由没有量词的公式组成,即
式中其它地方使用过。
前束形 = (前缀) (母式)
全称量词串 无量词公式

子句集的求取 子句集的求取
(7) 消去全称量词
(6) 把母式化为合取范式
到了这一步,所有余下的量词均被全称量词量化了。同时,
任何母式都可写成由一些谓词公式和(或)谓词公式的
全称量词的次序也不重要了。因此,我们可以消去前缀,即消
否定的析取的有限集组成的合取。这种母式叫做合取范
去明显出现的全称量词。
式。我们可以反复应用分配律。把任一母式化成合取范
(8) 消去合取符号∧
式。例如,我们把A∨{B∧C}化为{A∨B}∧{A∨C}。
用{(A∨B),(A∨C)}代替(A∨B)∧(A∨C),以消去明显的
符号∧。反复代替的结果,最后得到一个有限集,其中每个公
式是文字的析取。任一个只由文字的析取构成的合式公式叫做
一个子句。

子句集的求取 子句集的求取
(9) 更换变量名称
可以更换变量符号的名称,使一个变量符号不出现在一 例1:将下列谓词演算公式化为一个子句集

( x )P ( x ) → (y ) P ( y ) → P ( f ( x, y ) )  (y ) Q ( x, y ) → P ( y )


个以上的子句中。例如,对于子集
{¬P(x)∨ ¬P(y)∨P[f(x,y)],¬P(x)∨Q[x,g(x)],¬P(x)∨ ¬P[g(x)]},
在更改变量名后,可以得到子句集:
{¬ P(x1)∨ ¬ P(y)∨P[f(x1,y)],¬P(x2)∨Q[x2,g(x2)],
¬ P(x3)∨ ¬P[g(x3)]

5
2022/10/25

( x )P ( x ) → (y ) P ( y ) → P ( f ( x, y ) )  (y ) Q ( x, y ) → P ( y ) ( x )P( x )  ( y ) P( y ) Pf
( ( x, y ))  ( y ) Q( x, y )  P( y )

子句集的求取过程 子句集的求取过程
3.对变量标准化
1.消去蕴涵符号
对哑元(虚构变量)改名,以保证每个量词有其自己唯一的哑元。
只应用∨和¬符号,以¬A∨B替换A→B。
( x )P( x )  ( y ) P( y ) Pf
( ( x, y ) )  ( w) Q( x, w )  P( w )
( x )P( x )  (y ) P( y ) Pf
( ( x, y ))  (y ) Q( x, y ) P( y )
4.消去存在量词
2.减少否定符号的辖域
以Skolem函数代替存在量词内的约束变量,然后消去存在量词。
每个否定符号¬最多只是用到一个谓词符号上。 ( x )P( x )  ( y ) P( y ) Pf ( ( x ) )
( ( x, y ) )  Q( x,g( x ) )  Pg
  ( ( x, y ))  ( y ) Q( x, y )  P( y )
( x ) P( x )  ( y ) P( y ) Pf  式中—w=g(x)为Skolem函数

子句集的求取过程
子句集的求取过程 7.消去全称量词

5.化为前束形 所有余下的量词均被全称量词量化了。消去前缀,即消去明

把所有全称量词移到公式的左边,并使每个量词的辖域包括这 显出现的全称量词。
个量词后面公式的整个部分。 {[¬P(x) ∨ ¬P(y) ∨ P(f(x, y))] ∧[¬P(x) ∨Q(x,g(x)) ] ∧[¬P(x) ∨
前束形={前缀} {母式} ¬P(g(x)) ]}
全称量词串 无量词公式
( x )( y )P( x )  P( y ) Pf ( ( x ))
8.消去合取符号∧
( ( x, y ))  Q( x,g( x ))  Pg
用{A,B}代替(A∧B),消去符号∧。最后得到一个有限集,
6.把母式化为合取范式
其中每个公式是文字的析取。
任何母式都可写成由一些谓词公式和(或)谓词公式的否定的
¬P(x) ∨ ¬P(y) ∨ P(f(x, y))
析取的有限集组成的合取。
(∀x) (∀y){[¬P(x) ∨ ¬P(y) ∨ P(f(x,y))] ∧[¬P(x) ∨Q(x,g(x)) ] ¬P(x) ∨Q(x,g(x))
∧[¬P(x) ∨ ¬P(g(x)) ]}
¬P(x) ∨ ¬P(g(x))

子句集的求取过程
例2:
9. 更换变量名称
解:先消去蕴含符号→,得:
可以更换变量符号的名称,使一个变量符号不出现在
一个以上的子句中
再消去存在量词:
¬ P(x1) ∨ ¬P(y) ∨ P[f(x1,y)]
(x )(y )[P( x, y)  Q( x, y)  R( x, f ( x, y))]
¬ P(x2) ∨Q[x2,g(x2)]
最后消去全称量词得子句集:
¬ P(x3) ∨ ¬ P[g(x3)]
S = {P( x, y)  Q( x, y)  R( x, f ( x, y))}

6
2022/10/25

例3:
(x)(y ){[ S ( x)  T ( x, y )] → R( x)}
小结
解:先消去蕴含符号→,得:
(x)(y){[S ( x)  T ( x, y)]  R( x)} •化子句集
减少否定词辖域:
(x)(y){[S ( x)  T ( x, y)]  R( x)}
再消去存在量词:
(y){[S ( A)  T ( A, y)]  R( A)}
母式化为合取范式,消去全称量词,并将母式化为子句集: 思考
(y){[S ( A)  R( A)]  [T ( A, y)  R( A)]}
 化子句集有哪些步骤?
[S ( A)  R( A)]  [T ( A, y)  R( A)]
S = {S ( A)  R( A), T ( A, y)  R( A)}

作业1(习题5) 作业2(习题5)
 将下列谓词公式化为子句集:
 将谓词公式化为子句集:
 (1) (∀x)(∀y)[On(x,y)→Above(x,y)]

(x)(y){P( x, y)  [Q( x, y) → R( x, y)]}  (2)


 (∀x)(∀y)(∀z)[Above(x,y)∧Above(y,z)→Above(x,z)]

 (3) (x){[(y)P( x, y)]→(y)[Q( x, y) → R( x, y)]}

1 1
0 1
9 0

消解反演
目录
在消解原理部分,已经介绍过消解原理(归结原理)的基本思想如下:
 定理证明的任务:
1 消解反演 由前提A1 A2 ... An

2
推出结论B
反演求解
即证明:A1 A2 ... An→B 永真
 转化为证明:
A1 A2 ... An  B为永假式
 消解推理就是:从A1 A2 ... An  B出发,使用消解推理规则来
找出矛盾,最后证明定理A1 A2 ...  An→B的成立。

7
2022/10/25

消解反演 消解反演

• 消解方法是一种机械化的,可在计算机上加以实现的 应用消解原理证明定理的过程称为消解(归结)反演。

推理方法。 • 设F为已知前提的公式集,Q为目标公式(结论),用消解反演进
行证明的步骤是:
• 可认为是一种反向推理形式。
1.否定Q,得到¬Q;
• 提供了一种自动定理证明的方法。 2.把¬Q并入到公式集F中,得到{F, ¬Q};

• 如欲证明B为A1,A2,…,An的逻辑结论,只需证 3.把公式集{F, ¬Q}化为子句集S;


4.应用消解推理规则对子句集S中的子句进行消解,并把每次消
(A1∧A2∧…∧An)∧¬B
解得到的消解式都并入S中。如此反复进行,若出现了空子句,
是不可满足的,或证明其子句集是不可满足的。而子 则停止消解。
句集的不可满足性可用消解原理来证明。

消解反演 消解推理规则
例如,如果存在某个公理¬ P∨Q和另一公理¬ Q∨R,那么¬ P∨R在逻辑上成立
。这就是消解,而称¬ P∨R为¬ P∨Q和¬ Q∨R的消解式(resolvent)。
• 空子句不含有文字,它不能被任何解释满足,所以空子句是
永假的,不可满足的。 • 消解的定义
• 消解过程出现空子句,说明出现互补文字,说明S中有矛盾,
• 令L1,L2为两任意原子公式: L1和L2具有相同的谓词
因此S是不可满足的。
符号,但一般具有不同的变量,已知两个子句L1 ∨ α
和¬L2 ∨ β,如果L1和L2具有最一般合一σ(通过置换
最少的变量以使表达式一致),那么通过消解可以从两
个父辈子句推导出一个新子句(α∨β)σ 。这个新子
句叫做消解式。

 消解式求法 重言式对应于所有解释均为真
含有变量的消解式
P ¬P ∨ Q P∨Q ¬ P ∨ ¬Q 要把消解推理规则推广到含有变量的子句,必须找到一
个作用于父辈子句的置换,使父辈子句含有互补文字。
P∨Q ¬P ∨ ¬Q
Q P ∨ ¬P B(x) ¬ B(x) ∨C(x) P(x) ∨Q(x) ¬ Q[f(y)]

假言推理 Q ∨ ¬Q 重言式 置换σ={f(y)/x}


C(x)
P[f(y)]
P∨Q ¬P ∨ Q
¬P ∨ Q ¬Q ∨ R
即P→Q 即Q→R
Q ∨ Q=Q P[x,f(y)]∨Q(x) ∨R[f(a),y] ¬ P[f(f(a)),z] ∨ R(z,w)
¬P P ¬P ∨ R
合并
即P→R

NIL 链式 σ={f(f(a))/x,f(y)/z}
空子句(矛盾) Q[f(f(a))] ∨ R[f(a),y] ∨R[f(y),w]

8
2022/10/25

消解推理的常用规则
消解反演
父 辈 子 句 消 解 式
• 例1:证明 • 对S作消解:
P和¬P∨Q即(P→Q) Q
• 前提:(P →Q) ¬Q ,结论: ¬P (1) ¬P Q
P∨Q和¬P∨Q Q
P∨Q和¬P∨¬Q Q∨¬Q和P∨¬P • 证明:首先建立子句集: (2) ¬Q
¬ P和P NIL S={¬PQ, ¬Q , P} (3) P
¬ P∨Q(即P→Q)和¬Q∨R(即Q→R) ¬P∨R(即P→R) (4) ¬P (1)(2)消解
B(x)和¬B(x) ∨C(x) C(x) (5) NIL (3)(4)消解
P(x)∨Q(x)和¬Q(f(y)) P(f(y)),σ={f(y)/x}
P(x,f(y)) ∨Q(x) ∨R(f(a),y)和 Q(f(f(a))) ∨R(f(a),y)
∨R(f(y),w) ,
¬P(f(f(a)),z) ∨R(z,w) σ={f(f(a))/x,f(y)/z}

消解反演

例2 已知 F : (x)[(y)(A( x, y)  B( y)) → (y)(C( y)  D( x, y))] 上述消解过程如图所示。


G : (x)C( x) → (x)(y)(A( x, y) →B( y))

求证:G是F的逻辑结论。 ¬A(x,y)∨¬B(y)∨C(f(x)) ¬C(z)


证明:首先把F和¬G化为子句集: {f(x)/z}
F ={A( x, y) B( y)  C(f ( x)), A( x', y ') B( y ')  D( x ',f ( x'))} ¬A(x,y)∨¬B(y) A(a,b)
G ={C( z), A(a,b), B(b)}
{a/x,b/y}
将上述5个公式依次标为(1)-(5),然后进行消解:
¬B(b) B(b)
(6)¬A(x,y)∨¬B(y) 由(1)与(3)消解,{f(x)/z}
(7)¬B(b) 由(4)与(6)消解,{a/x,b/y}
(8)NIL 由(5)与(7)消解 NIL
所以G是F的逻辑结论。

(1)三人中至少录取一人。
消解反演 消解反演 (2)如果录取A而不录取B,则一定录取C。
(3)如果录取B,则一定录取C。
• 例3 求证:公司一定录取C。

• 例3: • 证明:设用P(x)表示录取x。 化为子句集

• 某公司招聘工作人员,A、B、C三人应试,经面试后公司表示 • 把公司的想法用谓词公式表示 (1)P(A)∨P(B)∨P(C)


(2) ¬P(A) ∨ P(B) ∨ P(C)
如下想法: 如下: (3) ¬P(B) ∨ P(C)
• (1)三人中至少录取一人。 • (1)P(A)∨P(B)∨P(C) (4) ¬P(C)

• (2)如果录取A而不录取B,则一定录取C。 • (2)P(A)∧ ¬P(B) → P(C)


• (3) P(B) → P(C) 应用消解原理进行消解:
• (3)如果录取B,则一定录取C。
(5)P(B)∨P(C) (1)与(2)消解
• 求证:公司一定录取C。 • 把要求证的问题否定,并用谓 (6)P(C) (3)与(5)消解
词公式表示出来: (7)nil (4)与(6)消解
所以,公司一定录取C。
• (4) ¬P(C)

9
2022/10/25

目录
小结
1 消解反演
•消解反演
2 反演求解

反演求解过程
从反演树求取答案步骤: 反演求解过程
• (1)把由目标公式的否定产生的每个子句添加到目标公式
 例1:
否定之否定的子句中去。
“如果无论约翰(John)到哪里去,菲多(Fido)也就去那里,
• (2)按照反演树,执行和以前相同的消解,直至在根部得
那么如果约翰在学校里,菲多在哪里呢?”
到某个子句止。
 公式集S:
• (3)用根部的子句作为一个回答语句。
 (∀x)[At(JOHN, x) → At(FIDO, x)]

 At(JOHN,SCHOOL)
实质
• 把一棵根部有NIL的反演树变换为根部带有回答语句的一
棵证明树。

反演求解过程
反演求解过程  目标公式(∃x)At(FIDO,x)的否定 :
 如果我们首先证明公式(∃x)At(FIDO,x)在逻辑上遵循S,然  (∀x)[¬At(FIDO,x)]

后寻求一个存在x的例,那么就能解决“菲多在哪里”的问  其子句形式为: ¬At(FIDO,x)

题。
¬At(FIDO,x)(目标的否定) ¬At(JOHN,y) ∨ At(FIDO,y)(公理1)
 关键想法是把问题化为一个包含某个存在量词的目标公式,

使得此存在量词量化的变量表示对该问题的一个解答。如
¬At(JOHN,x) At(JOHN,SCHOOL)(公理2)
果问题可以从给出的事实得到答案,那么按这种方法建立
的目标函数在逻辑上遵循S。在得到一个证明之后,我们就
试图求取存在量词量化变量的一个例,作为一个回答。 NIL

"菲多在哪里"例题的反演树

10
2022/10/25

反演求解过程 反演求解过程
 (1) 目标公式否定的子句形式为 : ¬At(FIDO,x) ,把它添加至
¬At(FIDO, x) ∨AT(FIDO, x) ¬At(JOHN, y) ∨ At(FIDO, y)
目标公式的否定之否定的子句中去,得重言式
¬At(FIDO,x)∨AT(FIDO,x)。
 (2) 用反演树进行消解,并在根部得到子句: ¬At(JOHN, x) ∨AT(FIDO, x) At(JOHN, SCHOOL)

At (FIDO,SCHOOL)
 (3) 从根部求得答案At(FIDO,SCHOOL),用此子句作为回
At(FIDO, SCHOOL)
答语句。
 因此,子句At (FIDO,SCHOOL)就是这个问题的合适答案 。
从消解求取答案的反演树

反演求解过程 反演求解过程
 答案求取涉及到把一棵根部有NIL的反演树变换为在根 例2:

部带有可用作答案的某个语句的一颗证明树。 已知:

 由于变换关系涉及到把由目标公式的否定产生的每个 (x) (y) (z) [Father(z,x) ∧ Brother(x,y)→Father(z,y)]

子句变换为一个重言式,所以被变换的证明树就是一 Brother(John,Bob)

棵消解的证明树,其在根部的语句在逻辑上遵循公理 Father(Jim,John)

加上重言式,因而也单独地遵循公理。因此被变换的 问:谁是Bob的父亲?
Father(u,Bob), u=?
证明树本身就证明了求取办法是正确的。
解:构造:
Father(u, Bob)∨ Father(u, Bob)

化为子句集:
1 Father(z,x) ∨ Brother(x,y) ∨ Father(z,y)
2 Brother(John,Bob) 反演求解过程
3 Father(Jim,John)
4 Father(u, Bob) ∨Father(u, Bob) 例3:
已知:如果x和y是同班同学,则x的教室也是y的教室
Father(z,x)∨Brother(x,y)∨Father(z,y)
Brother(John,Bob) ;张和李是同班同学;现在张在302教室上课。
John/x, Bob/y
Father(z,John) ∨ Father(z,Bob) 问:现在李在哪个教室上课?
Father(Jim,John)

Jim/z
Father(u, Bob)∨Father(u, Bob) Father(Jim,Bob)

Jim/u
Father(Jim, Bob)

11
2022/10/25

反演求解过程 反演求解过程
把上述公式化为子句集:
解:第一步:定义谓词;
(1) C(zhang, li)
C(x, y) :x和y是同班同学;
(2) ﹁C(x, y)∨﹁At(x, u)∨At(y, u)
At(x, u): x在u教室上课。
(3) At(zhang, 302)
第二步:根据定义的谓词写出上述知识的谓词表示,并化成
把目标的否定化成重言式:
子句集;
(4) ﹁At(li,v) ∨At(li, v)
把已知前提用谓词公式表示如下:
第三步:使用消解原理对子句集进行消解
C(zhang, li)
(5) ﹁C(x, li)∨﹁At(x, v)∨At(li, v) (2)(4)消解,{li/y, v/u}
(∀x) (∀y) (∀u) (C(x, y)∧At(x, u)→At(y,u))
(6) ﹁At(zhang, v)∨At(li, v) (1)(5)消解,{zhang/x}
At(zhang, 302)
(7) At(li, 302) (3)(6)消解,{302/v}
把目标的谓词公式表示如下:
所以,李在302教室上课。
(∃v)At(li, v)

例:已知:A,B,C三人中有人从不说真话,也
把上述公式化成子句集,得到前提子句集S:
有人从不说假话。某人向这三人分别提出同
把已知前提用谓词公式表示如下
¬T(A)  ¬T(B)
一个问题:谁是说谎者? :
¬T(A)  ¬T(C)
A答:“B和C都是说谎者”; 如果A说的是真话,则有:
T(A) → ¬ T(B)  ¬ T(C) T(C)  T(A)  T(B)
B答:“A和C都是说谎者”;
¬T(B)  ¬T(C)
C答:“A和B中至少有一个人是说谎 如果A说的是假话,则有:
¬ T(A) → T(B) T(C) ¬T(C)  ¬T(A)  ¬T(B)
者”。
对B和C说的话作相同的处理,可
T(A) T(C)
• 思考:谁是老实人,谁是说谎者? 得:
T(B)  T(C)
T(B) → ¬T(A)  ¬T(C)
解:首先定义谓词 先求谁是老实人,结论的否定为: ¬(∃x) T(x)
¬T(B) → T(A) T(C)
T(x):表示x说真话
T(C) → ¬T(A)  ¬T(B)
¬T(C) → T(A) T(B)

把目标的否定化成子句式,并用下面的重言式代替: 下面证明A不是老实人,即要证明的结论为: ¬T(A)


¬T(x)  T(x) 将结论的否定¬(¬T(A)) 并入前提子句集S中,应用消解原理对新
把此重言式加入前提子句集S,得到一个新的子句集,对这个新的 的子句集进行消解:
子句集,应用消解原理求出其证明树。

¬T(x)  T(x) ¬T(A)  ¬T(B) T(B)  T(C) T(A) ¬T(A)  ¬T(B) T(B)  T(C)

¬T(A)  T(C) ¬T(A)  ¬T(C)


¬T(A)  T(C) T(A)  T(C)
{C/x}
T(C) ¬T(A)
得证。A不
是老实人
C是老实人 同理可证B不
T(C) 是老实人 NIL

12
2022/10/25

小结 作业1(习题6) :
已知 规则1:任何人的兄弟不是女性。
•反演求解 (x)(y )[ Brother ( x, y ) → Woman( x)]
规则2:任何人的姐妹必是女性。
(x)(y )[ Sister ( x, y ) → Woman( x)]
思考 事实:Mary是Bill的姐妹。

 利用消解反演进行问题求解和利用消解反演进行问题 求证:用消解反演方法证明Mary不是Tom的兄弟。

证明的过程中,主要的差别是什么? 请依次完成以下小题,从而使问题得证。
(1)将上述规则与事实及求证目标的否定化成子句集。
(2)利用消解原理对上面的子句集中的子句进行消解。

作业2(习题6)

 已知规则:对于任意的x,y,z,若x是y的父亲且z是x
的父亲,则z是y的祖父,即
 (x) (y) (z) [F(z,x) ∧ F(x,y) → G(z,y)]。
 已知事实1:John是Bob的父亲,即F(John,Bob)。
 已知事实2:Jim是John的父亲,即F(Jim,John)。
 用消解反演方法求解:谁是Bob的祖父?

1
4
5

13

You might also like