Evaluation strategies for functional logic programming

Abstract Recent advances in the foundations and the development of functional logic programming languages originate from far-reaching results on narrowing evaluation strategies. Narrowing is a computation similar to rewriting which yields substitutions in addition to normal forms. In functional logic programming, the classes of rewrite systems to which narrowing is applied are, for the most part, subclasses of the constructor-based, possibly conditional, rewrite systems. Many interesting narrowing strategies, particularly for the smallest subclasses of the constructor-based rewrite systems, are generalizations of well-known rewrite strategies. However, some strategies for larger non-confluents subclasses have been developed just for functional logic computations. In this paper, I will discuss the elements that play a relevant role in evaluation strategies for functional logic programming, describe some important classes of rewrite systems that model functional logic programs, show examples of the differences in expressiveness provided by these classes, and review the characteristics of narrowing strategies proposed for each class of rewrite systems.

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

[2]  Aart Middeldorp Call by need computations to root-stable form , 1997, POPL '97.

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

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

[5]  Jc Shepherdson,et al.  Essays in honour of Alan Robinson , 1991 .

[6]  Richard Kennaway Sequential Evaluation Strategies for Parallel-Or and Related Reduction Systems , 1989, Ann. Pure Appl. Log..

[7]  J. C. Gonz Alez-Moreno,et al.  An Approach to Declarative Programming Based on a Rewriting Logic , 2022 .

[8]  Sergio Antoy,et al.  A monadic semantics for core Curry , 2003, WFLP.

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

[10]  Tetsuo Ida,et al.  A Complete Narrowing Calculus for Higher-Order Functional Logic Programming , 1995, PLILP.

[11]  Juan Carlos González Moreno A Correctness Proof for Warren's HO into FO Translation , 1993, GULP.

[12]  Sergio Antoy,et al.  Typed Higher-Order Narrowing without Higher-Order Strategies , 1999, Fuji International Symposium on Functional and Logic Programming.

[13]  Michael J. O'Donnell,et al.  Computing in systems described by equations , 1977, Lecture Notes in Computer Science.

[14]  Ralf Hinze,et al.  Haskell 98 — A Non−strict‚ Purely Functional Language , 1999 .

[15]  Femke van Raamsdonk,et al.  Higher-Order Rewriting , 1999, RTA.

[16]  Christian Prehofer,et al.  Higher-order narrowing with definitional trees , 1999, Journal of Functional Programming.

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

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

[19]  Richard S. Bird,et al.  Introduction to functional programming , 1988, Prentice Hall International series in computer science.

[20]  Jan M. Smith,et al.  Program Derivation in Type Theory: A Partitioning Problem , 1986, Comput. Lang..

[21]  Heinrich Hußmann Nondeterministic Algebraic Specifications and Nonconfluent Term Rewriting , 1988, ALP.

[22]  Christian Prehofer,et al.  Higher-order narrowing , 1994, Proceedings Ninth Annual IEEE Symposium on Logic in Computer Science.

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

[24]  Michael Hanus,et al.  Compiling Multi-Paradigm Declarative Programs into Prolog , 2000, FroCoS.

[25]  Mario Rodríguez-Artalejo,et al.  A Higher Order Rewriting Logic for Functional Logic Programming , 1997, ICLP.

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

[27]  Francisco Javier López-Fraguas,et al.  Functional Logic Programming with Failure: A Set-Oriented View , 2001, LPAR.

[28]  Anjo Anjewierden Richard A. O'Keefe: The Craft of Prolog , 1991 .

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

[30]  Christian Prehofer,et al.  Higher-order narrowing with definitional trees , 1999 .

[31]  Dale A. Miller,et al.  AN OVERVIEW OF PROLOG , 1988 .

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

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

[34]  Mario Rodríguez-Artalejo,et al.  Polymorphic Types in Functional Logic Programming , 2001, J. Funct. Log. Program..

[35]  Ramin Sadre,et al.  Pakcs: The portland aachen kiel curry system , 2000 .

[36]  Sergio Antoy Non-Determinism and Lazy Evaluation in Logic Programming , 1991, LOPSTR.

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

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

[39]  Hassan Aït-Kaci,et al.  An Overview of LIFE , 1990, East/West Database Workshop.

[40]  Juan José Moreno-Navarro,et al.  Using Static Analysis to Compile Non-sequential Functional Logic Programs , 1999, ICLP.

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

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

[43]  Edsger W. Dijkstra,et al.  A Discipline of Programming , 1976 .

[44]  Germán Vidal,et al.  Operational Semantics for Functional Logic Languages , 2002, WFLP.

[45]  Enrico Pontelli,et al.  Practical Aspects of Declarative Languages: Second International Workshop, PADL 2000 Boston, MA, USA, January 17-18, 2000. Proceedings , 2000 .

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

[47]  G Boudol Computational semantics of term rewriting systems , 1986 .

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

[49]  Corrado Moiso,et al.  Narrowing vs. SLD-Resolution , 1988, Theor. Comput. Sci..

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

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

[52]  Bobbi J. Barry Needed Narrowing as the Computational Strategy of Evaluable Functions in an Extension of Goedel , 2000 .

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

[54]  Sergio Antoy Optimal Non-deterministic Functional Logic Computations , 1997, ALP/HOA.

[55]  Herbert Kuchen,et al.  Higher Order Babel: Language and Implementation , 1996, ELP.

[56]  Alan Robinson,et al.  Computational Logic - Essays in Honor of Alan Robinson , 1991, Computational Logic - Essays in Honor of Alan Robinson.

[57]  Richard A. O'Keefe,et al.  The Craft of Prolog , 1990 .