<< Prev | - Up - | Next >> |
A constraint which is more complicated than basic constraints cannot be directly represented in the store. Instead it is represented by a propagator. A propagator is a concurrent agent that observes the store and tries to improve the information in it according to the semantics of the constraint it represents. A propagator has the declarative semantics of the constraint it represents and operational semantics that are described by inference rules.
As an example, consider the disjointness constraint . Its declarative semantics is that it is satisfied only in models where and denote disjoint sets. The operational semantics of the propagator can be specified by the following two inference rules:
i.e. if an integer is known to be in then it must be excluded from , and reciprocally. A propagator is supposed to notice as soon as possible whether its constraint is entailed by the store. For example, if the upper bounds of and are disjoint, then the sets are necessarily disjoint. In such a case, the propagator disappears since its constraint is satisfied and it will no longer be able to improve the information in the store.
<< Prev | - Up - | Next >> |