在本节中,我们将介绍一类特殊的公式,它们对逻辑编程特别感兴趣。此外,事实证明,这些公式允许对可满足性进行有效的测试。
如果公式是 CNF 且每个析取最多包含一个正文字,则该公式为 Horn 公式。Horn 子句是最多包含一个正文字的子句。
-
-
其中 是重言式,而 是不可满足的公式。
用子句形式可以写成
在逻辑编程的语境下,这写成
-
-
-
对于 Horn 公式,存在一种有效的算法来测试公式 的可满足性。
上述算法是正确的,并在 步之后停止,其中 是公式中原子数量。
作为直接结果,我们看到,如果一个 Horn 公式没有形式为 的子公式,则它是可满足的。
Horn 公式允许唯一的最小模型,即 是 的唯一最小模型,如果对于每个模型 和 F 中的每个原子 B 成立:如果 ,那么 。注意,这种唯一的最小模型性质不适用于非 Horn 公式:例如, 显然是非 Horn 的。 是一个最小模型,并且 也是,因此我们有两个最小模型。
令 为一个命题逻辑公式, 为 中出现的原子公式的子集。令 为将 中所有出现的原子公式 替换为 所得的公式。例如:。证明或反驳:存在一个 使得
- 或
- ,使得 等价于一个 Horn 公式 (即 )。
将标记算法应用于以下公式 F。
哪个是最小模型?
判断哪些 CNF 是 Horn 公式,并将它们转换为蕴含式的合取形式