11.1 Constraint Logic Programming
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 
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.
Solution = Logic + Control
The second equation
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.
Control = Reasoning + 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 ECLiPSe.
Logic - The design of a declarative Model of the problem.
- Reasoning - The choice of clever Constraint Propagation
algorithms that reduce the need for search.
- Search - The choice of search strategies and heuristics for
finding solutions quickly.