One of the main ambitions of Constraint Programming is the separation of Modelling, Algorithms and Search. This is best characterised by two pseudo-equations. The first one is paraphrased from Kowalski [12]
Solution = Logic + Control
and states that we intend to solve a problem by giving a logical, declarative description of the problem and adding control information that enables a computer to deduce a solution.
Control = Reasoning + Search
is motivated by a fundamental difficulty we face when dealing with combinatorial problems: we do not have efficient algorithms for finding solutions, we have to resort to a combination of reasoning (via efficient algorithms) and (inefficient) search.
We can consider every constraint program as an exercise in combining the 3 ingredients:
In this chapter we will focus on the first issue, Problem Modelling, and how it is supported by ECL^{i}PS^{e}.