Tech Report CS-91-05
Constraint Logic Programming
Pascal Van Hentenryck
Constraint logic programming (CLP) is a generalization of logic programming (LP) where unification, the basic operation of LP languages, is replaced by constraint handling in a constraint system. The resulting languages combine the advantages of LP (declarative semantics, nondeterminism, relational form) with the efficiency of constraint-solving algorithms. For some classes of combinatorial search problems, they shorten the development time significantly while preserving most of the efficiency of imperative languages.
This paper surveys this new class of programming languages from their underlying theory, to their constraint systems, and to their applications to combinatorial problems.
(complete text in pdf)