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 domain-consistent wrt. S iff, for each variable X_i and value V_i in D(X_i,S), there exist values V_j in D(X_j,S), 1 \leq j \leq n \land i \neq j, such that C(V_1,\ldots,V_n) is true.
A constraint C is domain-entailed by S iff, for all values V_j in D(X_j,S), 1 \leq j \leq n, C(V_1,\ldots,V_n) is true.
Let D'(X,S) denote the interval [\min(D(X,S)),\max(D(X,S))].
A constraint C is interval-consistent wrt. S iff, for each variable X_i, there exist values V_j and W_j in D'(X_j,S), 1 \leq j \leq n, i \neq j, such that C(V_1,\ldots,\min(D(X_i,S)),\ldots,V_n) and C(W_1,\ldots,\max(D(X_i,S)),\ldots,W_n) are both true.
A constraint C is interval-entailed by S iff, for all values V_j in D'(X_j,S), 1 \leq j \leq n, C(V_1,\ldots,V_n) is true.
Finally, a constraint is domain-disentailed (interval-disentailed) by S iff its negation is domain-entailed (interval-entailed) by S.