Constraint Logic Programming (CLP) extends logic programming in two ways. Firstly it admits special predicates called constraints,
which are not defined by clauses, but which are handled instead by specific constraint solvers built into the CLP system.
This extension has been formalised as the CLP Scheme. Secondly CLP admits other forms of processing than backwards reasoning
by unfolding, in particular constraint propagation. This extension has been formalised in terms of Information Systems. These
two extensions are now widely applied in industry, in particular to large scale combinatorial optimisation problems. The success
of CLP has inspired a great deal of ongoing research into algorithms (especially hybrid and incremental), languages and applications.