2.7 非归结方法 包括采用了各种控制策略的归结推理过程,仍然避免不了产生大量的归结式,使得归结法还不能处理复杂问题,甚至对人来说较容易得到的一些结果也难于使用归结法得到证明。 从归结法本身来看,采用的是以消去联结词→而引入子句形为出发点的,这是不自然的。因为以P→Q的形式描述因果关系比以子句形~P∨Q要直接,或说子句描述失去了因果信息。再者,子句形描述将定理的条件和结论完全同一化了,无法区分了,这给推理过程引入启发信息人-机交互带来了困难。 由于归结法的弱点,导致人们研究非归结方法,70年代就出现了以Bledsoe的自然演绎法为代表的一些推理方法。 2.7.1 Bledsoe 自然演绎法 自然演绎法是效率较高的一种推理方法。如微积分中连续函数的和仍连续的定理,采用归结法归结出10万个子句尚无结果,而使用了Bledsoe自然演绎法仅27步就得到了证明。 这种方法是保留了联结词→下进行推理的。 消去量词仍是重要的,与归结法不同的是要消去全称量词("x),而消去量词后的公式的变量认为是在存在量词作用下的。 自然演绎法引入了多条推理规则,这也是效率高的原因之一,不像归结法那样仅使用一条归结推理规则,规则形式常是要找置换θ,使得某公式在θ下成立,从而有…结论。这同公式中的变量受存在量词作用是有关的。 推理过程不是反演法,不要化成子句形,从而目标与条件是明显地区分开来了。将问题依推理规则化成一些子问题来证明。 1. 一些简单公式的标准化 有如归下的SKOLEM标准形,这里我们称为SKOLEM*标准形
2. 符号规则 为对一般公式SKOLEM*标准形,需定义公式的正负概念以及公式间的符号规则。 对一个公式E来说,其正负如何依赖于它的子公式的正负,有如下规定: (1)如果A∧B是正(负),那么A和B均为正(负)。 (2)如果A∨B是正(负),那么A和B均为正(负)。 (3)如果~A是正(负),那么A是负(正)。 (4)如果A→B是正(负),那么A是负(正)而B是正(负)。 (5)如果( ![]() ![]() (6)如果( ![]() ![]()
(1) 对只有一个量词的简单公式,规定 ![]()
![]() 当r=0时,则x以常量代入。 当r≠0时,则x 以f( ![]() ![]() 对E中所有变量依次做这样的代入,便可消去全部量词,便得E的SKOLEM*形。
4.推理规则 自然演绎法不同于归结法的反演推理法,是直接来证明公式的成立。例如要证明( ![]() ![]() ![]() (1) MATCH:[H→C] 如果Hθ=Cθ 则θ为所求。 这是最简单的规则了,要求目标C同假设H匹配,如果找到一个置换θ使Hθ=Cθ 。
如果[H→A]在θ下而[H→Bθ]在λ下成立则θ・λ为所求。
如果[H1→C]在θ下,而[H2θ→C] 在λ下成立,则θ・λ为所求。 (4) OR-FORK:[A∧B→C] 如果[A→C]在θ下成立则θ为所求,否则需证[B→C]成立。 (5) BACK-CHAIN:[H ∧(A→B)→C] 如果[B→C]在θ下,而且[H→Aθ]在λ下成立则θ・λ为所求。 我们仅介绍这几条规则。 5. 举例 使用自然演绎方法来证明 (P(a)∧( x)(P(x)→Q(x))→Q(a) 先将这公式化成SKOLEM*形 (P(a) ∧(P(x)→Q(x)))→Q(a) 依规则BACK-CHAIN,有θ={a/x},使 Q(x)θ →Q(a)θ ,即Q(a)→Q(a) 令λ空置换,有 P(a)λ →P(x)θ・λ 即P(a)→P(a) 成立。从而有 θ・λ=θ={a/x},使 (P(a) ∧ (P(x)→Q(x)))→Q(a) 成立。 |