如果一個語句是一個合取(由一個或多個AND組成的序列),並且每個合取項是一個析取(OR),由一個或多個文字(即,語句字母和否定的語句字母;Mendelson 1997, p. 30)組成,那麼這個語句就處於合取正規化。合取正規化的例子包括
|
(1)
| |
|
(2)
| |
|
(3)
| |
|
(4)
|
其中 表示 OR,
表示 AND,而
表示 NOT (Mendelson 1997, p. 30)。
邏輯中由多個 ,
, 和
s 組合構成的每個語句都可以寫成合取正規化。
可以使用 Wolfram 語言和以下程式碼將表示式轉換為合取正規化
ConjunctiveNormalForm[f_] :=
Not[LogicalExpand[Not[f]]] //. {
Not[a_Or] :> And @@ (Not /@ List @@ a),
Not[a_And] :> Or @@ (Not /@ List @@ a)
}