1.2 Finite Domains: ic
1.2.1 Integer Domain
The standard constraint solver offered by most constraint programming
systems is the finite domain solver, which applies constraint
propagation techniques developed in the AI community
ECLiPSe supports finite domain constraints via the ic
This library implements finite domains of integers, and the usual
functions and constraints on variables over these domains.
1.2.2 Symbolic Domain: ic_symbolic
In addition to integer domains, ECLiPSe offers finite domains of
ordered non-numeric values, for example red, green, blue.
These are implemented by the ic_symbolic library.
Whilst there is a standard set of constraints supported by the
ic library in ECLiPSe and in
most constraint programming systems, many more finite domain
constraints have been introduced which have uses in specific
applications and do not belong in a generic constraint programming
The behaviour of these constraints is to prune the finite domains of
their variables, in just the same way as the standard
Therefore ECLiPSe offers several further libraries which implement more
constraints using the ic library.
1.2.3 Global Constraints: ic_global
One such library is ic_global.
It supports a variety of constraints, each of which takes as an argument
a list of finite domain variables, of unspecified length.
Such constraints are called “global” constraints .
Examples of such constraints, available from the ic_global library
1.2.4 Scheduling Constraints
There are several ECLiPSe libraries implementing global constraints for
scheduling applications. The constraints have the same semantics,
but different propagation. The constraints take a list
of tasks (start times, durations and resource needs), and a maximum
resource level. They reduce the finite domains of the task start times
by reasoning on resource bottlenecks . Three ECLiPSe libraries
implementing scheduling constraints are
cumulative, edge_finder and edge_finder3.