The C(L)P programming paradigm has some resemblance to traditional Operations Research (OR) approach, in that the general path to a solution is:

- 1.
- Analyzing the problem to solve, in order to understand clearly which are its parts;
- 2.
- determining which conditions/relationships hold among those parts: these relationships and conditions are key to the solving, for they will be used to model the problem;
- 3.
- stating such conditions/relationships as equations; to achieve this step not only the right variables and relationships must be chosen: as we will see, C(L)P usually offers a series of different constraint systems, some of which are better suited than others for a given task;
- 4.
- setting up these equations and solving them to produce a solution; this is usually transparent to the user, because the language itself has built-in solvers.

There are, however, notable differences with OR, mainly in the
possibility of selecting different domains of constraints, and in the
dynamic, generation of those constraints. This seamless combination
of programming and equation solving accounts for some of the unique
components of *Constraint Programming*:

- the use of sound mathematical methods: well-known and proved algorithms are provided as intrinsic, builtin components of C(L)P languages and tools;
- the provision of means to perform programmed search, especially in CLP (were search is implicit in language itself);
- the possibility of developing modular, hybrid models, when necessary: many C(L)P systems offer different constraint systems, which can be combined to model the various parts of the problem using the tool more adequate for them;
- the flexibility provided by the programming language used, which allows the programmer to create the equations to be solved dynamically, possibly depending on the input data.

1998-12-03