View-based propagation of decomposable constraints
  Constraints that may be obtained by composition from simpler constraints are
present, in some way or another, in almost every constraint program. The
decomposition of such constraints is a standard technique for obtaining an
adequate propagation algorithm from a combination of propagators designed for
simpler constraints. The decomposition approach is appealing in several ways.
Firstly because creating a specific propagator for every constraint is clearly
infeasible since the number of constraints is infinite. Secondly, because
designing a propagation algorithm for complex constraints can be very
challenging. Finally, reusing existing propagators allows to reduce the size of
code to be developed and maintained. Traditionally, constraint solvers
automatically decompose constraints into simpler ones using additional
auxiliary variables and propagators, or expect the users to perform such
decomposition themselves, eventually leading to the same propagation model. In
this paper we explore views, an alternative way to create efficient propagators
for such constraints in a modular, simple and correct way, which avoids the
introduction of auxiliary variables and propagators.
