## On Extra Variables in (Equational) Logic Programming

**Michael Hanus**
*Technical Report MPI-I-94-246, Max-Planck-Institut fuer Informatik*

Extra variables in a clause are variables which occur in the body but
not in the head. It has been argued that extra variables are necessary
and contribute to the expressive power of logic languages. In the
first part of this paper, we show that this is not true in general. For
this purpose, we provide a simple syntactic transformation of each
logic program into a logic program without extra variables. Moreover,
we show a strong correspondence between the original and the
transformed program with respect to the declarative and the
operational semantics. In the second part of this paper, we use a
similar technique to provide new completeness results for equational
logic programs with extra variables. In equational logic programming
it is well known that extra variables cause problems since narrowing,
the standard operational semantics for equational logic programming,
may become incomplete in the presence of extra variables. Since extra
variables are useful from a programming point of view, we characterize
new classes of equational logic programs with extra variables for
which narrowing and particular narrowing strategies are complete.
In particular, we show the completeness of narrowing strategies
in the presence of nonterminating functions and extra variables
in right-hand sides of rewrite rules.

Available:
DVI
BibTeX-Entry