Programming Languages: Implementations, Logics, and Programs

Volume 1292 of the series Lecture Notes in Computer Science pp 191-206


An open-ended finite domain constraint solver

  • Mats CarlssonAffiliated withSICS
  • , Greger OttossonAffiliated withComputing Science Dept., Uppsala University
  • , Björn CarlsonAffiliated withXerox PARC

* Final gross prices may vary according to local VAT.

Get Access


We describe the design and implementation of a finite domain constraint solver embedded in a Prolog system using an extended unification mechanism via attributed variables as a generic constraint interface. The solver is essentially a scheduler for indexicals, i.e. reactive functional rules encoding local consistency methods performing incremental constraint solving or entailment checking, and global constraints, i.e. general propagators which may use specialized algorithms to achieve a higher degree of consistency or better time and space complexity.

The solver has an open-ended design: the user can introduce new constraints, either in terms of indexicals by writing rules in a functional notation, or as global constraints via a Prolog programming interface. Constraints defined in terms of indexicals can be linked to 0/1-variables modeling entailment; thus indexicals are used for constraint solving as well as for entailment testing. Constraints can be arbitrarily combined using the propositional connectives by automatic expansion to systems of reified constraints.


Implementation of Constraint Systems Constraint Programming Finite Domains Indexicals Global Constraints