定义:
命题变项及其否定的统称为文字。不含任何文字的简单析取式为空简单析取式,记作。规定空简单析取式是不可满足的(因为对于任何赋值,空简单析取式中都没有文字为真),因而,含有简单析取式的合取范式是不可满足的。
下面用S表示合取范式,C表示简单析取式,l表示文字,设a是关于S中命题变项的赋值,用a(l),a(C),a(S)分别表示在a下l,C,S的赋值。设S和S’是两个合取范式,用SS’表示S是可满足的当且仅当S’是可满足的。l'为非l。
定理:C1∧C2≈Res(C1,C2)
证 (1)当C1∧C2可满足,则(C1'Vl)∧(C2'V¬l)可满足。由于Res(C1,C2)=C1'∨C2',而l与¬l中一定有一者为假,故前者可满足,后者也可满足。
(2)当Res(C1,C2)可满足是时,讲将l的真赋值给C1',C2'中成假项C1∧C2便可满足。
综上所述,两者的可满足行性质相同,故定理成立。
否证
设S为一个合取范式,C1,C2,...,Cn是一个简单析取式序列,如果对于每一个i(1<=i<=n),Ci是S中的一个简单析取式或者Ci是它之前的某两个简单析取式Cj,Ck(1<=j<k<i)的消解结果,则称此序列是由S导出的C的消解序列。当Cn为空简单析取式,则称此序列是S的一个否证。
接下来介绍二个定理:
一、如果合取范式S有否证,则S不是可满足的。如果合取范式S不是可满足的,S一定有否证。(消解的完全性)
二、含有简单析取式l的合取范式S,从S中删去所有包含l的简单析取式,再从剩下的简单析取式中删去l',把这样得到的合取范式记作S',则S’S
定理的证明运用数学归纳法,留给读者证明。
下面给出判断合式公式是否是可满足的消解算法:
消解算法
消解算法:
输入:合式公式A
输出:若A是可满足的则回答yes,否则回答no。
1.求A的合取范式S
2.令S0,S2为不含任何元素的几何,S1为S的所有简单析取式组成的集合
3.对S0中的每一个简单析取式C1与S1中的每一个简单析取式C2
4. 如果C1,C2可以消解,则
5. 计算C=Res(C1,C2)
6. 如果C为空简单析取式,则
7. 输出no,计算结束
8. 如果S0,S1都不包含C,则
9. 把C加入S2
10.对S1中的为一对子句C1,C2
11. 如果C1,C2可以消解,则
12. 计算C=Res(C1,C2)
13. 如果C为空简单析取式,则
14. 输出no,计算结束
15. 如果S0,S1都不包含C,则
16. 把C加入S2
17.如果S2中没有任何元素,则
18. 输出yes,计算结束
19.否则把S1加入S0,令S1等于S2,清空S2,返回3.