Principles and Practice of Constraint Programming — CP96

Volume 1118 of the series Lecture Notes in Computer Science pp 531-532


Towards an open finite domain constraint solver

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

* 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 SICStus Prolog system using an extended unification mechanism via attributed variables as a generic constraint interface. The solver is based on indexicals, i.e. reactive functional rules performing incremental constraint solving or entailment checking. Propagation is done using the arc-consistency algorithm AC-3, adapted for non-binary constraints. At the heart of the algorithm is an evaluator for indexicals.

The solver provides the usual predefined search strategies (fixed order, failfirst principle, branch and bound for minimization or maximization). Access predicates for the relevant variable attributes (domain value, bounds and size etc.) are also provided, making customized search strategies easily programmable.

A design goal has been to keep the solver open-ended and extendible as well as to keep a substantial part written in Prolog, partly contradicting conventional wisdom in implementing constraint solvers.