V. Lifschitz, L. Morgenstern, D. Plaisted 21
allow the user to select from among a number of inference strategies for first-order
logic as well as strategies for equality. For equality, it may be possible to specify a
termination ordering to guide the application of equations. Sometimes the user will
select incomplete strategies, hoping that the desired proof will be found faster. It is
also often possible to set a size bound so that all clauses or literals larger than a cer-
tain size are deleted. Of course one does not know in advance what bound to choose,
so some experimentation is necessary. A sliding priority approach to setting the size
bound automatically was presented in [211]. It is sometimes possible to assign vari-
ous weights to various symbols or subterms or to variables to guide the proof search.
Modern provers generally have term indexing [222] built in to speed up inference,
and also have some equality strategy involving ordered paramodulation and rewriting.
Many provers are based on resolution, but some are based on model elimination and
some are based on propositional approaches. Provers can generate clauses rapidly;
for example, Vampire [227] can often generate more than 40,000 clauses per second.
Most provers rapidly fill up memory with generated clauses, so that if a proof is not
found in a few minutes it will not be found at all. However, equational proofs involve
considerable simplification and can sometimes run for a long time without exhaust-
ing memory. For example, the Robbins problem ran for 8 days on a SPARC 5 class
UNIX computer with a size bound of 70 and required about 30 megabytes of memory,
generating 49,548 equations, most of which were deleted by simplification. Some-
times small problems can run for a long time without finding a proof, and sometimes
problems with a hundred or more input clauses can result in proofs fairly quickly.
Generally, simple problems will be proved by nearly any complete strategy on a mod-
ern prover, but hard problems may require fine tuning. For an overview of a list of
problems and information about how well various provers perform on them, see the
web site at www.tptp.org, and for a sketch of some of the main first-order provers in
use today, see http://www.cs.miami.edu/~tptp/CASC/ as well as the journal articles
devoted to the individual competitions such as [253, 254]. Current provers often do
not have facilities for interacting with other reasoning programs, but work in this area
is progressing.
In addition to developing first-order provers, there has been work on other logics,
too. The simplest logic typically considered is propositional logic, in which there are
only predicate symbols (that is, Boolean variables) and logical connectives. Despite
its simplicity, propositional logic has surprisingly many applications, such as in hard-
ware verification and constraint satisfaction problems. Propositional provers have even
found applications in planning. The general validity (respectively, satisfiability) prob-
lem of propositional logic is NP-hard, which means that it does not in all likelihood
have an efficient general solution. Nevertheless, there are propositional provers that
are surprisingly efficient, and becoming increasingly more so; see Chapter 2 of this
Handbook for details.
Binary decision diagrams [43] are a particular form of propositional formulas for
which efficient provers exist. BDD’s are used in hardware verification, and initiated a
tremendous surge of interest by industry in formal verification techniques. Also, the
Davis–Putnam–Logemann–Loveland method [69] for propositional logic is heavily
used in industry for hardware verification.
Another restricted logic for which efficient provers exist is that of temporal logic,
the logic of time (see Chapter 12 of this Handbook). This has applications to con-