A problem related to satisfiability is that of
finite satisfiability, which is the question of determining whether a formula admits a
finite model that makes it true. For a logic that has the
finite model property, the problems of satisfiability and finite satisfiability coincide, as a formula of that logic has a model if and only if it has a finite model. This question is important in the mathematical field of
finite model theory. Finite satisfiability and satisfiability need not coincide in general. For instance, consider the
first-order logic formula obtained as the
conjunction of the following sentences, where a_0 and a_1 are
constants: • R(a_0, a_1) • \forall x y (R(x, y) \rightarrow \exists z R(y, z)) • \forall x y z (R(y, x) \wedge R(z, x) \rightarrow y = z)) • \forall x \neg R(x, a_0) The resulting formula has the infinite model R(a_0, a_1), R(a_1, a_2), \ldots, but it can be shown that it has no finite model (starting at the fact R(a_0, a_1) and following the chain of R
atoms that must exist by the second axiom, the finiteness of a model would require the existence of a loop, which would violate the third and fourth axioms, whether it loops back on a_0 or on a different element). The
computational complexity of deciding satisfiability for an input formula in a given logic may differ from that of deciding finite satisfiability; in fact, for some logics, only one of them is
decidable. For classical
first-order logic, finite satisfiability is
recursively enumerable (in class
RE) and
undecidable by
Trakhtenbrot's theorem applied to the negation of the formula. == Numerical constraints ==