Extending Constraint Logic Programming with Open Functions

Nikolay Pelov and Maurice Bruynooghe

To appear at the 2nd International Conference on Principles and Practice of Declarative Programming (PPDP 2000), Montreal, Canada, September 20-22, 2000


The natural representation of solutions of finite constraint satisfaction problems is as a (set of) function(s) or relation(s). In (constraint) logic programming, answers to queries are in the form of substitutions to the variables in the query. This results in a not very declarative programming style where a table has to be presented as a complex term. Recently, stable logic programming, also called answer set programming and abductive logic programming have been proposed as approaches supporting a more declarative style for solving such problems.

The approach developed in this paper is to extend the constraint domain of a constraint logic programming language with open functions, functions for which the interpretation is not fixed in advance. Their interpretation contains the solution of the problem. This enrichment of the constraint domain yields a language which is almost as expressive as abductive logic programming and is very well suited for expressing finite domain constraint satisfaction problems. Implementation requires only to extend the constraint solver of the underlying CLP language.