在本節中,我們將介紹一類特殊的公式,它們對邏輯程式設計特別感興趣。此外,事實證明,這些公式允許對可滿足性進行有效的測試。
如果公式是 CNF 且每個析取最多包含一個正文字,則該公式為 Horn 公式。Horn 子句是最多包含一個正文字的子句。




其中
是重言式,而
是不可滿足的公式。
用子句形式可以寫成
在邏輯程式設計的語境下,這寫成

-

對於 Horn 公式,存在一種有效的演算法來測試公式
的可滿足性。
上述演算法是正確的,並在
步之後停止,其中
是公式中原子數量。
作為直接結果,我們看到,如果一個 Horn 公式沒有形式為
的子公式,則它是可滿足的。
Horn 公式允許唯一的最小模型,即
是
的唯一最小模型,如果對於每個模型
和 F 中的每個原子 B 成立:如果
,那麼
。注意,這種唯一的最小模型性質不適用於非 Horn 公式:例如,
顯然是非 Horn 的。
是一個最小模型,並且
也是,因此我們有兩個最小模型。
令
為一個命題邏輯公式,
為
中出現的原子公式的子集。令
為將
中所有出現的原子公式
替換為
所得的公式。例如:
。證明或反駁:存在一個
使得
或
,使得
等價於一個 Horn 公式
(即
)。
將標記演算法應用於以下公式 F。
哪個是最小模型?


判斷哪些 CNF 是 Horn 公式,並將它們轉換為蘊含式的合取形式



