V. Lifschitz, L. Morgenstern, D. Plaisted 25
be discussed later), looking for a proof of the empty clause. Formally, such provers
generate R
1
(S), R
2
(S), R
3
(S), and so on, until for some i, R
i
(S) = R
i+1
(S),orthe
empty clause is generated. In the former case, S is satisfiable. If the empty clause is
generated, S is unsatisfiable.
Even though DPLL essentially constructs a resolution proof, propositional reso-
lution is much less efficient than DPLL as a decision procedure for satisfiability of
formulas in the propositional calculus because the total number of resolutions per-
formed by a propositional resolution prover in the search for a proof is typically much
larger than for DPLL. Also, Haken [107] showed that there are unsatisfiable sets S
of propositional clauses for which the length of the shortest resolution refutation is
exponential in the size (number of clauses) in S. Despite these inefficiencies, we intro-
duced propositional resolution as a way to lead up to first-order resolution, which has
significant advantages. In order to extend resolution to first-order logic, it is necessary
to add unification to it.
1.3.2 First-Order Proof Systems
We now discuss methods for partially deciding validity. These construct proofs of
first-order formulas, and a formula is valid iff it can be proven in such a system. Thus
there are complete proof systems for first-order logic, and Gödel’s incompleteness
theorem does not apply to first-order logic. Since the set of proofs is countable, one
can partially decide validity of a formula A by enumerating the set of proofs, and
stopping whenever a proof of A is found. This already gives us a theorem prover, but
provers constructed in this way are typically very inefficient.
There are a number of classical proof systems for first-order logic: Hilbert-style
systems, Gentzen-style systems, natural deduction systems, semantic tableau systems,
and others [87]. Since these generally have not found much application to automated
deduction, except for semantic tableau systems, they are not discussed here. Typically
they specify inference rules of the form
A
1
,A
2
,...,A
n
A
which means that if one has already derived the formulas A
1
,A
2
,...,A
n
, then one
can also infer A. Using such rules, one builds up a proof as a sequence of formulas,
and if a formula B appears in such a sequence, one has proved B.
We now discuss proof systems that have found application to automated deduc-
tion. In the following sections, the letters f, g, h, . . . will be used as function symbols,
a,b,c,...as individual constants, x, y, z and possibly other letters as individual vari-
ables, and = as the equality symbol. Each function symbol has an arity, which is
a non-negative integer telling how many arguments it takes. A term is either a vari-
able, an individual constant, or an expression of the form f(t
1
,t
2
,...,t
n
) where f
is a function symbol of arity n and the t
i
are terms. The letters r,s,t,... will denote
terms.
Clause form
Many first-order theorem provers convert a first-order formula to clause form before
attempting to prove it. The beauty of clause form is that it makes the syntax of first-
order logic, already quite simple, even simpler. Quantifiers are omitted, and Boolean