2.4.4 归结法的完备性 对于给的定理来说,我们使用归结方法建立了推理证明过程。问题是:若定理成立,是否使用归结方法必能得到证明呢?或对一个公理体系来说,使用归结法能推出的定理和所有成立的定理个数上看少不少?这就是归结法的完备性(值得注意的是完备性还有其他的理解)。结论是归结法是完备的。对一个推理方法而言尽管不是完备的,但能推出相当一部分定理,而且效率也较高,仍是可取的。一个推理方法提出后,困难的往往是完备性的证明,如一阶逻辑的公理系统的完备性就不容易证明。归结法完备性证明要使用 Herbrand 定理,从这个意义上说,归结原理是建立在 Herbrand 定理之上的。 1. 归结与语义树"倒塌"过程 我们以一个简单的例子来说明,对子句集S和相应的语义树T,当将S的任意两子句的归结式加入S后,相应的语义树T(1)较T"倒塌"了两个分枝,随着不断地归结T就不断地"倒塌",当S是不可满足的T将倒塌成只剩下根结点了。
(1)P (2)~P∨ Q (3)~P∨~Q (4)~P (2)(3)归结 (5)□ (1)(4)归结 从树T*上看,先观察N11结点,有子结点N21,N22对应的 I(N21)={P,Q} 使子句(3)为假。 I(N22)={P,~Q} 使子句(2)为假。 从而N21,N22都是失败结点,因I(N11)={P}不会使S的子句为假。N11的特点是它有两个分枝对应的子结点N21,N22都是失败的结点,这时相应的子句(2)(3)必可做归结,有归结式~P。 进而将~P并入S得S∪{~P},这时的I(N11)={P},已使 S∪{~P}的子句~P为假了。从而N11是S∪{~P}的语义树(同T)的失败结点了,其封闭树为T(1)。这就是说作一次归结,就使封闭语义树倒塌两个分枝N11N21,N11N22,或说N11N21, N11N22被剪枝了。 对T(1)的结点N0,有两个分枝对应的子结点N11,N12都是S∪{~P}的失败结点,又 I(N21)={P} 使子句(4)为假 I(N22)={~P} 使子句(1)为假 这时子句(1)(4)又可做归结,有归结式□。 将□并入S∪{~P}得S∪{~P,□},N0已是失败结点,其封闭树为T(2),是只剩下根结点N0的树了。 这个例子说明归结过程同语义树的倒塌过程是一回事。从而启发我们,若要有归结过程使由S可归结出□,就可从S的语义树T出发,说明必有两个失败结点所对应的子句做归结,将归结式放入S,就使T倒塌。重复这个过程直到语义树仅由树根组成为止。树根N0是失败结点,I(N0)=Φ,必然是已归结出空子句□所致。 然而上述从语义树入手的分析,仅能说明失败结点所对应的S的两个子句的基例可做归结。归结法完备性要求说明当S不可满足时,子句间必可做归结直到得出□。于是还需解决由基例间可做归结到怎样实现子句间的可做归结的问题,也就是由常量子句可做归结导出变量子句也可做归结的问题。这一步很重要,由提升引理给出。 2. 提升引理 ![]() ![]() ![]() ![]() ![]() ![]()
今以 ![]() ![]() 为例来说明提升引理的证明过程。 (1)θ={f(b)/x,f(b)/y,a/z,b/u,c/v}下, C1'= ![]() C2' = ![]() R'=~Q(a)∨W(c)。 (2)Φ1=P(x),Φ2=P(y)是 ![]() ~ψ1=~P(f(u)),~ψ2=~P(f(b))是 ![]() (3)σ为{Φ1,Φm}的mgu, ∴σ={x/y} Φ1σ=Φ2σ=Φ″=P(x) τ为{~ψ1,~ψ2}的mgu ,∴τ={b/u} ~ψ1τ=~ψ2τ=~ψ″=P(f(b)) δ=σ∪τ={x/y,b/u} (4)Φ'=P(f(b))是 Φ″=P(x)的例。 ψ'=P(f(b))是 ψ″=P(f(b))的例。���� Φ″,ψ″必可合一,有mgu r={f(b)/x} (5)R={ ![]() ![]() =~Q(z) ∨W(v) δ・r={x/y,b/u}・{f(b)/x}={f(b)/y,b/u,f(b)/x} R' =~Q(a)∨W(c) R' =R・λ 其中λ ={a/z,c/v} 3.完备性定理
|