Higher-Order Narrowing with Definitional Trees

Functional logic languages with a sound and complete operational semantics are mainly based on narrowing. Due to the huge search space of simple narrowing, steadily improved narrowing strategies have been developed in the past. Needed narrowing is currently the best narrowing strategy for first-order functional logic programs due to its optimality properties w.r.t. the length of derivations and the number of computed solutions. In this paper, we extend the needed narrowing strategy to higher-order functions and λ-terms as data structures. By the use of definitional trees, our strategy computes only incomparable solutions. Thus, it is the first calculus for higher-order functional logic programming which provides for such an optimality result. Since we allow higher-order logical variables denoting λ-terms, applications go beyond current functional and logic programming languages.

[1]  James R. Slagle,et al.  Automated Theorem-Proving for Theories with Simplifiers Commutativity, and Associativity , 1974, JACM.

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

[3]  Jan Willem Klop,et al.  Combinatory reduction systems , 1980 .

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

[5]  Henk Barendregt,et al.  The Lambda Calculus: Its Syntax and Semantics , 1985 .

[6]  J. Roger Hindley,et al.  Introduction to combinators and λ-calculus , 1986, Acta Applicandae Mathematicae.

[7]  Simon L. Peyton Jones,et al.  The Implementation of Functional Programming Languages , 1987 .

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

[9]  Corrado Moiso,et al.  Lazy Unification Algorithms for Canonical Rewrite Systems , 1989 .

[10]  Dale Miller,et al.  A Logic Programming Language with Lambda-Abstraction, Function Variables, and Simple Unification , 1991, J. Log. Comput..

[11]  Wayne Snyder,et al.  Higher-Order Unification Revisited: Complete Sets of Transformations , 1989, J. Symb. Comput..

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

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

[14]  Wolfgang Thomas,et al.  Handbook of Theoretical Computer Science, Volume B: Formal Models and Semantics , 1990 .

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

[16]  Tobias Nipkow,et al.  Higher-order critical pairs , 1991, [1991] Proceedings Sixth Annual IEEE Symposium on Logic in Computer Science.

[17]  Computations in Orthogonal Rewriting Systems, I , 1991, Computational Logic - Essays in Honor of Alan Robinson.

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

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

[20]  Dale Miller,et al.  A Logic Programming Language with Lambda-Abstraction, Function Variables, and Simple Unification , 1991, J. Log. Comput..

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

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

[23]  Mario Rodríguez-Artalejo,et al.  On the Completeness of Narrowing as the Operational Semantics of Functional Logic Programming , 1992, CSL.

[24]  S. Antoy Deenitional Trees , 1992 .

[25]  Simon L. Peyton Jones,et al.  Report on the programming language Haskell: a non-strict, purely functional language version 1.2 , 1992, SIGP.

[26]  Carlos Loría-Sáenz,et al.  A theoretical framework for reasoning about program construction based on extensions of rewrite systems , 1993 .

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

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

[29]  V. van Oostrom,et al.  Confluence for Abstract and Higher-Order Rewriting , 1994 .

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

[31]  John W. Lloyd,et al.  Combining Functional and Logic Programming Languages , 1994, ILPS.

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

[33]  Cosimo Laneve,et al.  Interaction Systems I: The Theory of Optimal Reductions , 1994, Math. Struct. Comput. Sci..

[34]  Jürgen Avenhaus,et al.  Higher Order Conditional Rewriting and Narrowing , 1994, CCL.

[35]  Christian Prehofer,et al.  Higher-Order Narrowing with Convergent Systems , 1995, AMAST.

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

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

[38]  Christian Prehofer,et al.  A Call-by-Need Strategy for Higher-Order Functional-Logic Programming , 1995, ILPS.

[39]  Michael Hanus,et al.  Efficient Translation of Lazy Functional Logic Programs into Prolog , 1995, LOPSTR.

[40]  Lee Naish,et al.  Higher-order logic programming , 1996 .

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

[42]  Vincent van Oostrom,et al.  Higher-Order Families , 1996, RTA.

[43]  Christian Prehofer,et al.  Multi-paradigm Logic Programming Some Applications of Functional-logic Programming , 1996 .

[44]  Sergio Antoy Needed Narrowing in Prolog (Extended Abstract) , 1996, PLILP.

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

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

[47]  Michael Hanus,et al.  A unified computation model for functional and logic programming , 1997, POPL '97.

[48]  Christian Prehofer,et al.  Solving Higher-Order Equations , 1998, Progress in Theoretical Computer Science.