The constraint system is based on domain constraints and indexicals. A
domain constraint is an expression `X``::`

`I`, where
`X` is a domain variable and `I` is a nonempty set of
integers.

A set `S` of domain constraints is called a
store. `D(X,S)`, the domain of `X` in `S`, is
defined as the intersection of all `I` such that
`X``::`

`I` belongs to `S`. The store is
contradictory if the domain of some variable is empty;
otherwise, it is consistent. A consistent store `S'` is an
extension of a store `S` iff, for all variables
`X`, `D(X,S')` is contained in `D(X,S)`.

The following definitions, adapted from [Van Hentenryck et al. 95], define important notions of consistency and entailment of constraints wrt. stores.

A ground constraint is true if it holds and false otherwise.

A constraint `C` is arc-consistent wrt. `S` iff,
for each variable `Xi` and value `Vi` in
`D(Xi,S)`, there exist values `Vj` in `D(Xj,S)`,
`1 =< j =< n \land i \neq j`, such that
`C(V1,...,Vn)` is true.

A constraint `C` is arc-entailed by `S` iff, for
all values `Vj` in `D(Xj,S)`, `1 =< j =< n`,
`C(V1,...,Vn)` is true.

Let `D'(X,S)` denote the interval `[`min`(D(X,S)),`max`(D(X,S))]`.

A constraint `C` is bound-consistent wrt. `S` iff,
for each variable `Xi`,
there exist values `Vj` and `Wj` in
`D'(Xj,S)`, `1 =< j =< n, i \neq j`, such that
`C(V1,...,\min(D(Xi,S)),...,Vn)` and
`C(W1,...,\max(D(Xi,S)),...,Wn)` are both true.

A constraint `C` is bound-entailed by `S` iff, for
all values `Vj` in `D'(Xj,S)`, `1 =< j =< n`,
`C(V1,...,Vn)` is true.

Finally, a constraint is arc-disentailed (bound-disentailed) by `S`
iff its negation is arc-entailed (bound-entailed) by `S`.

Send feedback on this subject.