Clauses
A Clause is a disjunction of literals, where a literal is either an atom or its negation, .
Clausal Normal Form
Unlike Conjunctive Normal Form, a formula and its representation in clausal normal form are not necessarily equivalent, but they must be equally satisfiable. This means that either (satisfiable) or (unsatisfiable) is a valid clausal normal form representation of every formula. However, determining which of these is correct for a given formula is computationally intensive as it is equivalent to checking for satisfiability. As such, we wish to find a clausal normal form for a formula which is not hard to construct. In order to achieve this, we introduce definitions. For every subformula, we introduce a definition for it and replace its occurrence with this new variable. For the example formula:
there are two subformulae, the formula itself and . We can introduce a definition for the top-level formula as
ensuring that the definition contains no more than two variables. In order to achieve this, we introduce a new definition for the right hand side of the implication, . We do not need to introduce a definition for as this is already a literal. We must then define as:
We can then transform these to clauses and state a clausal normal form for this example as:
Warning
It is important to remember to include the top-level definition as a single-variable clause (likely ), otherwise the resultant set of clauses will always be satisfiable.
For subformulae containing , or , their definitions should be used to obtain a set of clauses for that subformula.
Optimised Clausal Normal Form
We can reduce the number of clauses required through optimisation based on the Polarity of introduced variables.
If the subformula occurs positively in the original formula, then the left hand side of the bi-implication can be dropped. If the occurrence is negative, then the right hand side can be dropped. In the example above, occurs positively and as such can be defined as
This allows the clauses associated with the other side of the bi-implication to be removed from the clausal normal form representation. This would allow the omission of the following clauses from the above example: