Implementation of Lazy Narrowing Calculi in Mathematica

This paper describes the implementation of narrowing calculi developed by Symbolic COmputation REsearch group (SCORE) at the University of Tsukuba. Narrowing was originally conceived as an Euni cation procedure in the framework of equational theorem proving, but was rediscovered as a computation model of functional logic programming languages. Narrowing as given in the standard literature is a complex operation. Several attempts have been made to simulate narrowing by a simple inference system de ned by a small set of inference rules. Among these, are narrowing calculi called OINC (Outside-In Narrowing Calculus) of T. Ida and K. Nakahara [8], LNC (Lazy Narrowing Calculus) of A. Middeldorp, S. Okui, and T. Ida [13], and LCNC (Lazy Conditional Narrowing Calculus) of M. Hamada and A. Middeldorp [3]. In this paper we give full implementation of these three narrowing calculi using Mathematica. We demonstrate that the implementation of the narrowing calculi is feasible. This means that existentially quanti ed equations are solvable by our narrowing calculi with respect to given rewrite rules, and thus we extended the symbolic computation language Mathematica based on higher-order conditional rewriting. Our implemented calculi can be used as a research tool usable within Mathematica for studying equation solving with respect to various classes of (conditional) term rewriting systems.

[1]  Jean-Louis Lassez,et al.  Computational logic: essays in honor of Alan Robinson , 1991 .

[2]  Viggo Stoltenberg-hansen,et al.  In: Handbook of Logic in Computer Science , 1995 .

[3]  Steffen Hölldobler,et al.  Foundations of Equational Logic Programming , 1989, Lecture Notes in Computer Science.

[4]  Tetsuo Ida,et al.  Lazy Narrowing: Strong Completeness and Eager Variable Elimination , 1996, Theor. Comput. Sci..

[5]  Aart Middeldorp,et al.  A Deterministic Lazy Narrowing Calculus , 1998, J. Symb. Comput..

[6]  J. Lloyd Foundations of Logic Programming , 1984, Symbolic Computation.

[7]  Stephen Wolfram,et al.  The Mathematica Book , 1996 .

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

[9]  Mohamed Hamada,et al.  Strong completeness of a lazy condi - tional narrowing calculus , 1997 .

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

[11]  Tetsuo Ida,et al.  Leftmost outside-in narrowing calculi , 1997, Journal of Functional Programming.

[12]  Christian Prehofer,et al.  Solving higher order equations: from logic to programming , 2012 .