基于逻辑的问题求解方法

              子   句

 1、子句的定义

    由文字的析取组成的公式称为子句。

 

 2、重要概念

  变量标准化即使每个量词采用不同的变量。根据量词的性质 "(x)P(x)º"(y)P(y)         "(x)P(x)º"(y)P(y),公式中的约束变量可以用其它变量符号代替,而不影响公式的真值。

      Skolem化考虑一个合式公式 ,即对所有的y,总存在一个x使P(x)为真。显然, 这里的变量x的取值依赖于变量y的取值。因此可以把x记为g(y),这个函数称 为   Skolem函数,用Skolem函数代替每个存在量词量化的变量的过程称为Skolem化。注意,这里的函数g应是原合式公式中没有的符号。因此有

            ("y)[($x)P(x,y)®("y)P(g(y),y)

       常量化如果该存在量词不在任何一个全称量词的辖域中,则该存在量词就不    依赖于任何其它的变量,因此可以用一个常量代替,该常量应是原合式公式中没有   的符号,这称为常量化。因此有($x)P(x)®P(A)

       前束形:就是把所有的全称量词都移到公式的前部,由于公式中已无存在量词,   且所有的全称量词的约束变量完全不同,因此可  以把所有的全称量词放在公式前  面,是每个量词的辖域都包括公式后面的整个部分。前束形的公式就由全称量词串   组成的前缀和称为母式的无量词公式组成。

    合取范式:就是子句的合取式,可以反复应用合式公式的分配律实现从任一母式向合取范式的转换:

      X1∨(X2∧X3)≡(X1∨X2)∧(X1∨X3)

      (X1∧X2)∨(X1∧X3)≡X1∧(X2∨X3)

  

   3、由于归结方法必须应用于子句形式,因此我们首先介绍任一个谓词演算公式

如何化为一个子句集

    设有一个谓词演算公式

      ("x){[ØP(x)ÚØQ(x)®($y)[S(x,y)ÙQ(x)]}Ù("x)[P(x)Úb(x)]

转化成子句的过程如下:

 (1)消去蕴含符号,办法是应用性质X1ÞX2ºØX1ÚX2。上例变成

  ("x){Ø[ØP(x)ÚØQ(x)Ú($y)[S(x,y)ÙQ(x)]}Ù("x)[P(x)Úb(x)]

 (2)把否定符号Ø移到每个谓词符号的前面,办法是应用第三章知识表示叙

述的摩根定律其他等价关系。上例公式可写成

        ("x){[P(x)ÙQ(x)Ú($y)[S(x,y)ÙQ(x)]}Ù("x)[P(x)Úb(x)]

  (3)变量标准化,得到

     ("x){[P(x)ÙQ(x)Ú($y)[S(x,y)ÙQ(x)]}Ù("w)[P(w)Úb(w)]

   (4)消去存在量词。采取两种方法:Skolem化常量化方法。根据以上所述,   将上例Skolem化的结果为

   ("x){[P(x)ÙQ(x[S(x,f(x))ÙQ(x)]}Ù("w)[P(w)Úb(w)]

              下接