在本节中,我们将介绍一类特殊的公式,它们对逻辑编程特别感兴趣。此外,事实证明,这些公式允许对可满足性进行有效的测试。
如果公式是 CNF 且每个析取最多包含一个正文字,则该公式为 Horn 公式。Horn 子句是最多包含一个正文字的子句。




其中
是重言式,而
是不可满足的公式。
用子句形式可以写成
在逻辑编程的语境下,这写成

-

对于 Horn 公式,存在一种有效的算法来测试公式
的可满足性。
上述算法是正确的,并在
步之后停止,其中
是公式中原子数量。
作为直接结果,我们看到,如果一个 Horn 公式没有形式为
的子公式,则它是可满足的。
Horn 公式允许唯一的最小模型,即
是
的唯一最小模型,如果对于每个模型
和 F 中的每个原子 B 成立:如果
,那么
。注意,这种唯一的最小模型性质不适用于非 Horn 公式:例如,
显然是非 Horn 的。
是一个最小模型,并且
也是,因此我们有两个最小模型。
令
为一个命题逻辑公式,
为
中出现的原子公式的子集。令
为将
中所有出现的原子公式
替换为
所得的公式。例如:
。证明或反驳:存在一个
使得
或
,使得
等价于一个 Horn 公式
(即
)。
将标记算法应用于以下公式 F。
哪个是最小模型?


判断哪些 CNF 是 Horn 公式,并将它们转换为蕴含式的合取形式



