Adding Linear Constraints over Real Numbers to Curry

Constraint logic programming languages are an extension of logic programming languages where unification has been replaced by constraint solving. Constraint solving techniques allow to reduce the search space of a logic program dramatically and have been shown to be useful in a wide area of application domains. Functional-logic languages are a different branch in the group of declarative languages, which combine the reduction of expressions with unification. In contrast to purely functional languages, functional-logic languages allow for computations with partially known data and offer builtin search strategies, allowing for a more concise formulation of programs. Compared to purely logic languages, functional-logic languages provide functions and a declarative approach to I/O, thus avoiding the need for non-declarative language constructs (e.g. the ubiquitous cut in Prolog). In this paper we will consider the integration of constraint programming and functional-logic programming in the context of the language Curry. Curry is a multi-paradigm declarative language, which aims at unifying the different lines of research in functional-logic programming. In particular, we have chosen the domain of linear constraints over real numbers and will describe the semantic and operational issues of this integration.

[1]  Roland H. C. Yap,et al.  The CLP(R) language and system: an overview , 1991, COMPCON Spring '91 Digest of Papers.

[2]  J StuckeyPeter,et al.  The CLP( ℛ ) language and system , 1992 .

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

[4]  Wolfgang Lux Implementing Encapsulated Search for a Lazy Functional Logic Language , 1999, Fuji International Symposium on Functional and Logic Programming.

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

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

[7]  Peter J. Stuckey,et al.  Semantics of constraint logic programs with optimization , 1993, LOPL.

[8]  Alain Colmerauer,et al.  Opening the Prolog III universe , 1987 .

[9]  François Fages On the Semantics of Optimization Predicates in CLP Languages , 1993, FSTTCS.

[10]  WadlerPhilip,et al.  Report on the programming language Haskell , 1992 .

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

[12]  Roland H. C. Yap,et al.  The CLP( R ) language and system , 1992, TOPL.

[13]  Patrick Lincoln,et al.  Le Fun: Logic, Equations and Functions , 1987, SLP.

[14]  Mats Carlsson,et al.  SICStus Prolog User''s Manual , 1993 .

[15]  Gert Smolka,et al.  The Oz Programming Model , 1996, Computer Science Today.

[16]  Uday S. Reddy,et al.  Imperative functional programming , 1996, CSUR.

[17]  Michael Hanus,et al.  Controlling search in functional logic programs , 1998, ICLP 1998.

[18]  Pascal Van Hentenryck,et al.  On the Handling of Disequations in CLP over Linear Rational Arithmetic , 1991, WCLP.

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