P

Part P

Programming propagators

Christian Schulte, Guido Tack

This part explains how to program propagators as implementations of constraints.

Basic material. Getting started shows how to implement simple propagators for simple constraints over integer variables. It introduces the basic concepts and techniques that are necessary for any propagator.

Programming techniques. The bulk of this part describes a wide range of techniques for programming efficient propagators:

  • Avoiding execution discusses techniques for avoiding propagator execution. The examples used in this chapter introduce view arrays for propagators and Boolean views.

  • Reification and rewriting discusses how to implement propagators for reified constraints and how to optimize constraint propagation by propagator rewriting.

  • Domain propagation explains various programming techniques for propagators that perform domain propagation. The chapter also describes modification event deltas as information available to propagators and staging as a technique for speeding up domain propagation.

  • Advisors is concerned with advisors for efficient incremental propagation. Advisors can be used to provide information to a propagator which of its views have changed and how they have changed.

  • Views shows how to straightforwardly and efficiently reuse propagators for implementing several different constraints by using views. As it comes to importance, this chapter ranks second after Getting started. However, it comes rather late to be able to draw on the example propagators presented in the previous chapters.

Overview material. The following chapters summarize or provide an overview of topics related to programming propagators: