Conjunctive normal form is a structured way of representing formulas to allow them to be resolved more easily. It divides a proposition into disjunctive clauses, joined together by conjunction.
Definition
Disjunctive Clause ^definition-disjunctive-clause
A disjunctive clause, , is of the form:
- is a literal, it can either be an atom () or its negation ()
Conjunctive Normal Form ^definition-cnf
A formula is in conjunctive normal form iff it can be expressed as:
where is a disjunctive clause. Hence, a formula is in CNF if it can be expressed as a conjunction of disjunctive clauses
Clausal Form ^definition-cf
CNF can also be expressed as a multiset, known as its clausal form
- Each set represents a disjunctive phrase : means
- Disjunctive phrases with one literal are singletons : means
- An empty set inside the multiset evaluates to false: means
- Each element in the set is a literal
Because a literal can only be an atom or its negation, for atoms, we have a maximum of literals. There are possible subsets for a set with elements. The longest clausal form of atoms would be a multiset consisting of all its subsets. However, we cannot include an empty subset.
Hence, we have such phrases in the longest possible clause.
For example:
- One atom (): The longest CF we can create is which has phrases.
- Two atoms ( and ): Has phrases
Converting to CNF
Propositional Logic
In propositional logic, to convert to CNF, we first need to convert to Negation Normal Form (NNF):
- First convert to NNF:
- Use distributivity:
It also helps to remove duplicates, tautologies and subsumptions#todo
Predicate Logic
In predicate logic, we still need to obtain a NNF by the same method, but we need to do some additional steps before we can distribute:
- First, convert to NNF
- Apply a proper renaming to any shadowed variables
- Apply a proper renaming such that no two variables in different scopes have the same name.
- Eliminate any existential quantifiers via Skolemization
- ‘Hide’ all universally quantifiers (they are still present, just not shown!)
- Convert to CNF by distributing, same as for propositional:
Theorems
T1: In propositional logic, every proposition has an logically equivalent CNF
Note that this is not true for predicate logic!
T2: Every unsatisfiable of conjunctives clauses has a refutation
Let be a set of conjunctive clauses.
- : is unsatisfiable
- : has a refutation
- : Meta-implication (not material implication!)