Conditional narrowing without conditions

We present a new evaluation strategy for functional logic programs described by weakly orthogonal conditional term rewriting systems. Our notion of weakly orthogonal conditional rewrite system extends a notion of Bergstra and Klop and covers a large part of programs defined by conditional equations. Our strategy combines the flexibility of logic programming (computation of solutions for logic variables) with efficient evaluation methods from functional programming. In particular, it is the first known narrowing strategy for this class of programs that evaluates ground terms deterministically. This is achieved by a transformation of conditional term rewriting systems (CTRS) into unconditional ones which is sound and complete w.r.t. the semantics of the original CTRS. We show that the transformation preserves weak orthogonality for the terms of interest. This property allows us to apply a relatively efficient evaluation strategy for weakly orthogonal unconditional term rewriting systems (parallel narrowing) on the transformed programs.

[1]  Gert Smolka The Oz Programming Model , 1996 .

[2]  Enno Ohlebusch,et al.  Term Rewriting Systems , 2002 .

[3]  Corrado Moiso,et al.  Notes on the Elimination of Conditions , 1987, CTRS.

[4]  Enno Ohlebusch,et al.  Transforming Conditional Rewrite Systems with Extra Variables into Unconditional Systems , 1999, LPAR.

[5]  Rita Loogen,et al.  Lazy Narrowing in a Graph Machine , 1990, ALP.

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

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

[8]  Sergio Antoy Definitional Trees , 1992, ALP.

[9]  John W. Lloyd,et al.  Programming in an Integrated Functional and Logic Language , 1999, J. Funct. Log. Program..

[10]  Jean-Jacques Lévy,et al.  Computations in Orthogonal Rewriting Systems, II , 1991, Computational Logic - Essays in Honor of Alan Robinson.

[11]  Michael Hanus,et al.  Curry: an integrated functional logic language (version 0 , 2003 .

[12]  Sergio Antoy Constructor-based conditional narrowing , 2001, PPDP '01.

[13]  Michael J. O'Donnell,et al.  Equational Logic as a Programming Language , 1985, Logic of Programs.

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

[15]  Rita Loogen,et al.  A Demand Driven Computation Strategy for Lazy Narrowing , 1993, PLILP.

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

[17]  Patrick Viry,et al.  Elimination of Conditions , 1995, J. Symb. Comput..

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

[19]  Claus Hintermeier,et al.  How to Transform Canonical Decreasing CTRSs into Equivalent Canonical TRSs , 1994, CTRS.

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

[21]  Jan A. Bergstra,et al.  Algebraic Specifications of Computable and Semicomputable Data Types , 1987, Theor. Comput. Sci..

[22]  M. Hanus,et al.  Curry: An Integrated Functional Logic Language , 2003 .

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

[24]  Michael Hanus,et al.  An implementation of narrowing strategies , 2001, PPDP '01.

[25]  Salvador Lucas,et al.  Strongly Sequential and Inductively Sequential Term Rewriting Systems , 1998, Inf. Process. Lett..

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

[27]  Michael Hanus,et al.  A Parallel Narrowing Strategy , 1996 .

[28]  Rachid Echahed,et al.  Parallel Evaluation Strategies for Functional Logic Languages , 1997, ICLP.

[29]  Chang Liu,et al.  Term rewriting and all that , 2000, SOEN.

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

[31]  Thomas Johnsson,et al.  Lambda Lifting: Treansforming Programs to Recursive Equations , 1985, FPCA.

[32]  Zoltan Somogyi,et al.  The Execution Algorithm of Mercury, an Efficient Purely Declarative Logic Programming Language , 1996, J. Log. Program..

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

[34]  Michael Hanus,et al.  Reduction Strategies for Declarative Programming , 2001, WRS.

[35]  Massimo Marchiori,et al.  Unravelings and Ultra-properties , 1996, ALP.

[36]  Francisco Javier López-Fraguas,et al.  TOY: A Multiparadigm Declarative System , 1999, RTA.