2.3.4 Herbrand 定理 回顾针对一阶谓词描述下的 ![]() ![]() ![]() 的证明问题,我们已经作了足够的准备。首先将这个证明问题化成 G= ![]() ![]() ![]() 的不可满足问题,进而将G化成 SKOLEM 标准形建立了相应的子句集S,并将一般论域D上的讨论简化成H域上的讨论,最后还引入了语义树。现在就可阐明 Herbrand 给出的两个定理了。
应该指出 Herbrand 定理给出了一阶逻辑的半可判定算法。其中的"半"字指的是有条件下的判定算法,即仅当被证定理是成立的,使用该算法方可得证。而当被证定理并不成立时,使用该算法得不出任何结果。说是算法,那指的是有限步内是可实现的。因为无论从有限的封闭树观点,还是从不可满足的有限基例集观点都是可判定的,因为这已是有限的命题逻辑问题了。 使用 Herbrand 定理,来证明定理或S是不可满足的,或是寻找有限的封闭树或是寻找有限的不可满足的基例集。 一个具体实现证明的方法是,对S的H域中的Hi做出基例集Si',即将Hi中的元素依次代入S中的各子句便构成了Si',若Si'是不可满足的必有S是不可满足的,或说相应的定理成立。若被证定理成立,必可在有限步内证明某个S'N是不可满足的。 1960年 Gilmore 编制了生成Si'的程序,进而将Si'化成析取范式,当每个析取项都含有互补对时便知Si'是不可满足的。然而化成析取范式并不是好方法,如下规则可简化计算过程(由于Herbrand 定理已将证明问题化成了命题逻辑问题,所以只需在命题逻辑范围来简化)。 重言式子句可删除规则 S中的重言式子句,不会为S的不可满足提供任何信息,应该删除。 如 S={P∨~P, ![]() ![]() 那么S的逻辑含义是(P∨~P)∧ ![]() ![]() ![]() ![]() 单文字删除规则 如S={L ,L∨ ![]() ![]() ![]() ![]() 其中C3,C4不含L和~L。先作S'再作S", S':{~L∨ ![]() ![]() ![]() S":{ ![]() ![]() ![]() 那么 若S'为空集,便知S是可满足的。 若S'非空,便知S与S" 同时是不可满足的。 这个结论是不难证明的。如S'为空集,那么S形如{L,L∨ ![]() ![]() S"|I"=T 即 ![]() ![]() ![]() 那么令 I= I"∪{L,…},这时必有S|I=T,这与S不可满足是矛盾的。反过来设S"是不可满足的而S是可满足的,有I使 S|I=T 其中I必含L,而且(~L∨ ![]() ![]() ![]() ![]() ![]() ![]() 纯文字删除规则 当文字L出现于S中,而~L不出现于S中,便说L为S的纯文字。若从S中删除含L的子句得S',而为空集,那么S是可满足的。而当S'非空,那么S'与S同时是不可满足的。 分离规则 若 S=(L∨A1)∧…∧(L∨Am)∧(~L∨B1)∧…∧(~L∨Bn)∧R 其中R是不含L和~L的子句集。 令 S'={A1,…,Am,R} S"={B1,…,Bn,R} 则S不可满足当且仅当S'和S" 同时是不可满足的。 这几条删除规则的使用,将会简化S不可满足的证明过程。纯文字和分离规则可同单文字规则一样得到证明。 |