Content deleted Content added
→References: this is not a metatheorem in any clear way |
No edit summary |
||
Line 1:
{{Confusing|article|date=February 2009}}
The '''Davis–Putnam algorithm''' was developed by [[Martin Davis]] and [[Hilary Putnam]] for checking the validity of a [[first-order logic]] formula using a [[resolution]]-based decision procedure for [[propositional logic]].
The procedure is based on [[Herbrand's theorem]], which implies that an [[satisfiable|unsatisfiable]] formula has an unsatisfiable [[ground instance]], and on the fact that a formula is [[valid]] if and only if its negation is unsatisfiable. Taken together, these facts imply that to prove the validity of <math>\phi</math> it is enough to prove that a ground instance of <math>\lnot\phi</math> is unsatisfiable. If <math>\phi</math>
▲The procedure is based on [[Herbrand's theorem]], which implies that an [[satisfiable|unsatisfiable]] formula has an unsatisfiable [[ground instance]], and on the fact that a formula is [[valid]] if and only if its negation is unsatisfiable. Taken together, these facts imply that to prove the validity of <math>\phi</math> it is enough to prove that a ground instance of <math>\lnot\phi</math> is unsatisfiable. If <math>\phi</math> isn't valid, then the search for an unsatisfiable ground instance will not terminate.
The procedure roughly consists of these three parts:
* put the formula in [[prenex]] form and eliminate quantifiers
* generate one by one all propositional ground instances
*
The last part is probably the most innovative one, and works as follows:
Line 17 ⟶ 18:
** remove all original clauses containing the variable or its negation
At each step, the intermediate formula generated is [[equisatisfiable]] to the original formula, but it does not retain [[Logical equivalence|equivalence]]. The resolution step leads to a worst-case exponential blow-up in the size of the formula. The [[DPLL algorithm]] is a refinement of the propositional satisfiability step of the Davis–Putnam procedure, that requires only a linear amount of memory in the worst case.
==See also==
|