Almost all propositions are expressed in conjunctive normal form (CNF) to simplify them into a consistent form.

Naïve Satisfiability Algorithm

  1. Convert formula to CNF
  2. Brute-force resolutions by choosing any two clauses and trying to obtain a resolution from them.

This algorithm will always terminate.

Horn Clause Satisfiability Algorithm

If the problem can be converted into CNF and every clause is a Horn clause, then a faster algorithm exists:

Let be the formula that we are evaluating:

  1. Create a list of all atoms in , plus and
  2. ‘Mark’ any occurrences of (initially, one will be marked)
  3. While there exists a definite Horn clause :
    1. If are all marked and is unmarked:
      1. Mark
  4. If is marked, return unsatisfiable, else return satisfiable