A Higher Order Rewriting Logic for Functional Logic Programming

According to a well known conception, programs in a declarative programming language can be viewed as theories in some suitable logic, while computations can be viewed as deductions. In our opinion, there is yet no general assent on the logic to be viewed as the foundation of higher order, lazy functional logic languages. In this paper, we argue that a specific rewriting logic can play this role, and we justify the adequacy of our proposal by means of proof-theoretical and model-theoretical results. Moreover, we present a sound and complete lazy narrowing calculus for goal solving, and we discuss a circuit synthesis problem that illustrates the expressiveness of our approach. This example has been tested in an implemented system.

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

[2]  Uday S. Reddy,et al.  Narrowing as the Operational Semantics of Functional Languages , 1985, SLP.

[3]  Mario Rodríguez-Artalejo,et al.  A Rewriting Logic for Declarative Programming , 1996, ESOP.

[4]  Dana S. Scott,et al.  Some Domain Theory and Denotational Semantics in Coq , 2009, TPHOLs.

[5]  Mario Rodríguez-Artalejo,et al.  Denotational Versus Declarative Semantics for Functional Programming , 1991, CSL.

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

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

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

[9]  Michael Hanus,et al.  The integration of functions into logic programming: a survey , 1994 .

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

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

[12]  Gopalan Nadathur,et al.  Uniform Proofs as a Foundation for Logic Programming , 1991, Ann. Pure Appl. Log..

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

[14]  H. Hussmann Nondeterminism in Algebraic Specifications and Algebraic Programs , 1993, Progress in Theoretical Computer Science.

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

[16]  Giorgio Levi,et al.  A Model-Theoretic Reconstruction of the Operational Semantics of Logic Programs , 1993, Inf. Comput..

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

[18]  Zohar Manna,et al.  Proving termination with multiset orderings , 1979, CACM.

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

[20]  Philip Wadler,et al.  Packrat parsing:: simple, powerful, lazy, linear time, functional pearl , 2002, ICFP '02.