Thom Frühwirth and Slim Abdennadher|
Textbook, Springer Verlag, 2003.
The first book that presented constraint logic programming languages and constraint solving systems in a uniform and concise way. A standard reference for more than ten years.
"...a very valuable book that I wholeheartedly recommend..."
"Anybody looking for a formal, essential but never-shallow introduction to
the field should definitely consider this book."
"...a truly concise summary of constraint-based logic
programming...comprehensive...by far the best summarization..."
Errata (thanks to Marc Meister and Walter Guttmann).
Slides Introducing Constraint Programming
Other Slides Introducing Constraint Programming
The use of constraints had its scientific and commercial breakthrough in the 1990s. Programming with constraints makes it possible to model and specify problems with uncertain, incomplete information and to solve combinatorial problems, as they are abundant in industry and commerce, such as scheduling, planning, transportation, resource allocation, layout, design, and analysis. Constraint-based programming languages enjoy elegant theoretical properties, conceptual simplicity, and practical success.
The idea of constraint-based programming is to solve problems by simply stating constraints (conditions, properties) which must be satisfied by a solution of the problem. Constraints can be considered as pieces of partial information. Constraints describe properties of unknown objects and relationships between them. Constraints are formalized as distinguished, predefined predicates in first-order predicate logic. The unknown objects are modeled as variables.
For example, consider a bicycle number lock. We forgot the first digit, but remember some constraints about it: The digit was an odd number, greater than 1, and not a prime number. Combining the pieces of partial information expressed by these constraints (digit, greater than 1, odd, not prime) we are able to derive that the digit we are looking for is "9".
As it runs, a constraint program successively generates constraints. As a special program, the constraint solver stores, combines, and simplifies the constraints until a solution is found. The partial solutions can be used to influence the run of the program.
The formally well-founded presentation introduces the common classes of constraint programming languages and constraint systems in a uniform way. It also includes application examples from real life. We first introduce the basic ideas behind the family of (concurrent) constraint logic programming languages in a calculus-based framework. Constraint solving algorithms are specified and implemented in the constraint handling rules language (CHR) in a uniform high-level executable notation. The most common constraint domains, their solvers and applications such as Boolean constraints for circuit design, terms and trees for unification, linear polynomial equations for financial and engineering applications and finite domains for scheduling, are presented.
The family of (concurrent) constraint logic programming languages
Preliminaries of Syntax and Semantics
Constraint logic programming (incl. Prolog)
Concurrent committed-choice constraint logic programming
Constraint handling rules (CHR)
Constraint systems and their solvers
Feature Terms, Description Logic (not in book)
Linear polynomial equations
Non-Linear polynomial equations
Commercial applications, market and companies
Case study Munich rent advisor on the internet
Case study Planning wireless telecommunication
Case study Timetabling and Roomplanning
Constraint Programming Cheat Sheet
Courses by the authors were held at the University of Pisa in 1999 and 2002, at the University of Venice in 2004 and yearly at the University of Munich from 1998-2001, and at the University of Ulm since 2002, at the German University of Cairo since 2004.
Constraint Programming and Reasoning (short version, 366 Slides, 1
on 1, 2013, pdf)
Constraint Programming and Reasoning (401 Slides, 1 on 1, 2009, pdf)
Additional slides, 2013, (pdf):
Additional slides, 2002, (ps.gz):
Theorem Proving - Resolution Variants
University Timetabling Application
Optimal Sender Placement Application
Exercises, 2013 (link to pdf)
Exercises, 2012 (link to pdf)
Exercise 1 - Exercise 2 - Exercise 3 - Exercise 4 (boole.pl) - Exercise 5 - Exercise 6 (dl-ex6.pl) - Exercise 7 (fd-ex7.pl).
Exercise 1 - Exercise 2 - Exercise 3 - Exercise 4 - Exercise 5 - Exercise 6 - Exercise 7 - Exercise 8 - Exercise 9 - Exercise 10 - Exercise 11 - Exercise 12 - Exercise 13.
Constraint Programming Links
Constraint Programming Languages
Constraint Handling Rules (CHR)
Popular Prolog implementations with constraints and CHR:
SWI Prolog, Sicstus Prolog, Yap Prolog.
More constraint programming languages:
Ilog Optimization Suite, Mozart (former OZ), Cosytec CHIP, IF Prolog.
Thom Frühwirth, updated April 8, 2013