Theorem: It is undecidable whether a first order logic formula is provable (or true under all possible interpretations).
Proof: Suppose there is an algorithm B that, given a first order logic and a formula in that logic, decides whether that formula is valid (holds under all possible interpretations). I will use that to give a decision algorithm for the language {(M,w) | M is the description of a Turing machine that accepts the string w}. As the latter problem is undecidable this will show that B cannot exists.
Given M and w, create a first order logic by declaring a constant , a unary function symbol a for every letter a in the alphabet, and a binary predicate fq for every state q of M.
Consider the following interpretation of this logic: Variables x range over strings over the given alphabet, denotes the empty string, a(w) denotes the string aw, and fq(x,y) indicates that M, when given input w, can reach a configuration with state q, in which xy is on the tape, with x in reverse order, and the head of M points at the first position of y. Under this interpretation fq0(,w) is certainly a true formula, as the initial configuration is surely reachable. Here q0 is the initial state, and w is a representation of w made from the constant and function symbols of the logic. Furthermore the formula x y: fq-acc(x,y) with q-acc the acceptance state, holds iff M accepts w.
Whenever M has a transition from state q to state r, reading a, writing b, and moving right, the formula
x y: fq(x,ay) => fr(bx,y)
holds. Here x and y are variables. Likewise, if M has a transition from state q to state r, reading a, writing b, and moving left, the formulasx y: fq(cx,ay) => fr(x,cby)
hold for every choice of a letter c. In addition we havex y: fq(,ay) => fr(,by),
covering the case that M cannot move left, because its head is already in the left-most position. Finally, there are variants of the formulas above for the case that a is the blank symbol and that square of the tape is visited for the first time:
x
y:
fq(x,) =>
fr(bx,)
x
y:
fq(cx,) =>
fr(x,cb)
x
y:
fq(,) => fr(,b).
fq0(,w) & T => x y: fq-acc(x,y).
In case M accepts w, there is a valid computation leading to an accept state. Each step therein corresponds with a substitution instance of one of the conjuncts in T, and using the laws of first order logic it is easy to check that the formula above is provable and thus true under all interpretations. If, on the other hand, the formula above is true under all interpretations, it is surely true in the given interpretation, which implies that M has an accepting computation starting on w.Thus, in order to decide whether or not M accepts w, it suffices to check whether or not the formula above is a theorem of first order logic.
Rob van Glabbeek | rvg@cs.stanford.edu |