On Extra Variables in (Equational) Logic Programming

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.

[1]  Michael Hanus,et al.  Combining Lazy Narrowing and Simplification , 1994, PLILP.

[2]  Rachid Echahed,et al.  A needed narrowing strategy , 2000, JACM.

[3]  Nachum Dershowitz,et al.  Confluence of Conditional Rewrite Systems , 1988, CTRS.

[4]  Harald Ganzinger,et al.  Completion-Time Optimization of Rewrite-Time Goal Solving , 1989, RTA.

[5]  Franco Turini,et al.  A Transformational Approach to Negation in Logic Programming , 1990, J. Log. Program..

[6]  Jan Willem Klop,et al.  Term Graph Rewriting , 1995, HOA.

[7]  Franco Turini,et al.  Intensional Negation of Logic Programs: Examples and Implementation Techniques , 1987, TAPSOFT, Vol.2.

[8]  Peter Padawitz Generic Induction Proofs , 1992, CTRS.

[9]  Marko C. J. D. van Eekelen,et al.  Term Graph Rewriting , 1987, PARLE.

[10]  Rachid Echahed,et al.  On Comleteness of Narrowing Strategies , 1988, CAAP.

[11]  Corrado Moiso,et al.  Kernel-LEAF: A Logic plus Functional Language , 1991, J. Comput. Syst. Sci..

[12]  Jan Willem Klop,et al.  Term Rewriting Systems: From Church-Rosser to Knuth-Bendix and Beyond , 1990, ICALP.

[13]  Juan José Moreno-Navarro,et al.  Logic Programming with Functions and Predicates: The Language BABEL , 1992, J. Log. Program..

[14]  Michael Hanus,et al.  The Integration of Functions into Logic Programming: From Theory to Practice , 1994, J. Log. Program..

[15]  Alberto Martelli,et al.  An Efficient Unification Algorithm , 1982, TOPL.

[16]  Jean-Marie Hullot,et al.  Canonical Forms and Unification , 1980, CADE.

[17]  Heinrich Hußmann,et al.  Unification in Conditional Equational Theories , 1985, European Conference on Computer Algebra.

[18]  Jean-Pierre Jouannaud,et al.  Rewrite Systems , 1991, Handbook of Theoretical Computer Science, Volume B: Formal Models and Sematics.

[19]  Yoshihito Toyama,et al.  Church-Rosser Property and Unique Normal Form Property of Non-Duplicating Term Rewriting Systems , 1994, CTRS.

[20]  Rachid Echahed,et al.  On Completeness of Narrowing Strategies , 1990, Theor. Comput. Sci..

[21]  Michael Hanus,et al.  Improving Control of Logic Programs by Using Functional Logic Languages , 1992, PLILP.

[22]  Michael Hanus,et al.  Compiling Logic Programs with Equality , 1990, PLILP.

[23]  Andreas Werner,et al.  An Optimal Narrowing Strategy for General Canonical Systems , 1992, CTRS.

[24]  Rachid Echahed,et al.  Design and Implementation of a Generic, Logic and Functional Programming Language , 1986, ESOP.

[25]  José Meseguer,et al.  Models and Equality for Logical Programming , 1987, TAPSOFT, Vol.1.

[26]  Nachum Dershowitz,et al.  A Rationale for Conditional Equational Programming , 1990, Theor. Comput. Sci..

[27]  Laurent Fribourg,et al.  SLOG: A Logic Programming Language Interpreter Based on Clausal Superposition and Rewriting , 1985, SLP.

[28]  Stéphane Kaplan,et al.  Simplifying Conditional Term Rewriting Systems: Unification, Termination and Confluence , 1987, J. Symb. Comput..

[29]  John Wylie Lloyd,et al.  Foundations of Logic Programming , 1987, Symbolic Computation.

[30]  Alberto Pettorossi,et al.  Completeness of some Transformation Strategies for Avoiding Unncecessary Logical Variables , 1994, GULP.

[31]  Jan A. Bergstra,et al.  Conditional Rewrite Rules: Confluence and Termination , 1986, J. Comput. Syst. Sci..

[32]  Corrado Moiso,et al.  A Completeness Result for E-unification Algorithms Based on Conditional Narrowing , 1986, Foundations of Logic and Functional Programming.