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
[21].
ECL^{i}PS^{e} supports finite domain constraints via the *ic*
library^{2}.
This library implements finite domains of integers, and the usual
functions and constraints on variables over these domains.

In addition to integer domains, ECL^{i}PS^{e} 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 ECL^{i}PS^{e} 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
library.
The behaviour of these constraints is to prune the finite domains of
their variables, in just the same way as the standard
constraints.
Therefore ECL^{i}PS^{e} offers several further libraries which implement more
constraints using the *ic* library.

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 [2].
Examples of such constraints, available from the ic_global library
are
`alldifferent/1`

, `maxlist/2`

, `occurrences/3`

and
`sorted/2`

.

There are several ECL^{i}PS^{e} 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 [13]. Three ECL^{i}PS^{e} libraries
implementing scheduling constraints are
*cumulative*, *edge_finder* and *edge_finder3*.

- 2
- There is also an older implementation, the
*fd*library, whose use is deprecated