Constraint Programming is both a rich declarative language for describing combinatorial problems and a set of algorithms and techniques for solving them automatically.
Constraint Programming (CP) is a powerful programming paradigm for solving combinatorial search problems (Rossi et al., 2006). CP is at the intersection of artificial intelligence, computer science, operations research, and many other fields. One of the strengths of the paradigm is the wide variety of constraints it offers. CP is both a rich declarative language for describing combinatorial problems and a set of algorithms and techniques for solving them automatically.