Skip to main content Accessibility help

A general framework for lazy functional logic programming with algebraic polymorphic types

    • Published online: 16 May 2001

We propose a general framework for first-order functional logic programming, supporting lazy functions, non-determinism and polymorphic datatypes whose data constructors obey a set [Cscr ] of equational axioms. On top of a given [Cscr ], we specify a program as a set [Rscr ] of [Cscr ]-based conditional rewriting rules for defined functions. We argue that equational logic does not supply the proper semantics for such programs. Therefore, we present an alternative logic which includes [Cscr ]-based rewriting calculi and a notion of model. We get soundness and completeness for [Cscr ]-based rewriting w.r.t. models, existence of free models for all programs, and type preservation results. As operational semantics, we develop a sound and complete procedure for goal solving, which is based on the combination of lazy narrowing with unification modulo [Cscr ]. Our framework is quite expressive for many purposes, such as solving action and change problems, or realizing the GAMMA computation model.

Hide All
Our research has been partially supported by the Spanish National Project TIC98-0445-C03-02 ‘TREND’ and the Esprit BRA Working Group EP-22457 ‘CCLII’. This paper is a revised and substantially extended presentation of the results from Arenas-Sánchez and Rodríguez-Artalejo (1997a, 1997b).
Recommend this journal

Email your librarian or administrator to recommend adding this journal to your organisation's collection.

Theory and Practice of Logic Programming
  • ISSN: 1471-0684
  • EISSN: 1475-3081
  • URL: /core/journals/theory-and-practice-of-logic-programming
Please enter your name
Please enter a valid email address
Who would you like to send this to? *



Full text views

Total number of HTML views: 0
Total number of PDF views: 0 *
Loading metrics...

Abstract views

Total abstract views: 0 *
Loading metrics...

* Views captured on Cambridge Core between <date>. This data will be updated every 24 hours.

Usage data cannot currently be displayed