
4.4 Total Theory Model Elimination — MSR-Version 103
or otherwise x/∈ V . In the latter case we will say that x is an extra variable
introduced by σ .
Concerning the completeness item, it should be noted that the restriction
to Var (M)
15
is crucial for the theory-case (again, it is not needed in the
non-theory case). For instance, let the theory be given by the clause set
{¬p(f(x))}. Consider M = {|p(z)|}. Clearly, σ = {z ← f(a)} is a T -refuter
for M. A most general T -refuter is σ
0
= {z ← f(y)}. However, it does not
hold that σ
0
≤ σ, because we would have to have δ = {y ← a} in order to
have p(z)σ
0
δ = p(z)σ. But then, clearly, yσ
0
δ 6= yσ which gives us σ
0
δ 6= σ
and, more generally, σ
0
6≤ σ. However it holds σ
0
≤ σ [Var (M)] as expected.
Note 4.4.1 (Need for Protected Variables.). We will argue here for the need
to protect variables and prove a calculus not using it as incomplete.
Protected variables are not needed in the case of syntactical unification.
The reason is, that the usual unification algorithm will not introduce extra
variables. In order to see the importance of protected variables in the theory
case consider M = {|p(x)|}, and suppose that p(x) occurs in a derivation which
has also q(x, z) in its context. Further suppose that a T -refuter σ
0
= {x ←
f(a)} is applied in this derivation. This yields p(f(a)) and q(f(a),z) wrt.
context. For lifting purposes suppose now that σ = {x ← f(z)} is a more
general T -refuter. However, then we have to find δ = {z ← a} in order to
obtain σ
0
= σδ [{x}]. Although p(x)σδ = p(f(a)) = p(x)σ
0
, we have, with
regard to the context,
q(x, z)σδ = q(f (a),a) 6= q(f(a),z)=q(x, z)σ
0
. (4.2)
Thus, we would have had to set the protected variables V = {z} and to find
a T -refuter from CSR
T
({|p(x)|})[{z}].
Note our demand that the variables from Var (M) must — by definition
— never be protected. Such a restriction is not present e.g. in
[
Snyder, 1991
]
).
The advantage of our approach is that the T -refuters are allowed to introduce
variables already contained in the problem statement; it relieves the unifica-
tion algorithm of always unnecessarily inventing new variables. Sometimes
this would result in very “unnatural” and unexpected results. For instance,
if p(x) and ¬p(f(y)) are to be unified syntactically, we would like to have
σ = {x ← f(y)} as a T -refuter. However, this would not be possible if y is
protected. In this case, a suitable T -refuter would be σ
0
= {x ← f(z),y ← z}
(provided that z is not protected). Note that the usual unification algorithm
(see e.g.
[
Lloyd, 1987
]
)isnot capable of computing such a substitution and
thus cannot be used in applications which need to protect variables in the
problem statement.
Substantial problems arise when protection of variables is not used. More
specifically, the lifting proof below needs at its very heart equivalences of the
form stated in (4.2) and will thus not work with the proposed substitution σ.
15
Alternatively, the restriction to Var (σ
0
) should do as well.