Thom Frühwirth and Slim Abdennadher Textbook, ISBN: 9780817644451, 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 two decades now.
"...a very valuable book that I wholeheartedly recommend..."
"Anybody looking for a formal, essential but nevershallow introduction to
the field should definitely consider this book."
"...a truly concise summary of constraintbased 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
Video Vortrag (Talk in German): Computer knacken harte Nuesse: Von Sudoku ueber den Aktienhandel zum Robotersegeln, Thom Fruehwirth, 2013.
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. Constraintbased programming languages enjoy elegant theoretical properties, conceptual simplicity, and practical success.
The idea of constraintbased 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 firstorder 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 family of (concurrent) constraint logic programming languages
Preliminaries of Syntax and Semantics
Constraint logic programming (incl. Prolog)
Concurrent committedchoice constraint logic programming
Constraint handling rules (CHR)
Constraint systems and their solvers
Rational Trees
Feature Terms, Description Logic (not in book)
Boolean Constraints
Finite Domains
Linear polynomial equations
NonLinear polynomial equations
Applications
Commercial applications, market and companies
Case study Munich rent advisor on the internet
Case study Planning wireless telecommunication
Case study Timetabling and Roomplanning
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 19982001, at the University of Ulm since 2002, at the German University of Cairo since 2004.
Constraint Programming and Reasoning (Slides, 2019)
Constraint Programming Cheat Sheet
Constraint Systems Cheat Sheet
Supplementary slides:
Global Constraints (2013)
Theorem Proving  Resolution Variants (2002)
University Timetabling Application (2002)
Optimal Sender Placement Application (2002)
Exercises 2014
Exercises 2013
Exercises 2012
3rd CHR Summer School 2013: programming and reasoning with rules and constraints.
More constraint programming languages: Ilog JRules BRMS, Mozart (former OZ), Cosytec CHIP,
Constraint
Papers
Constraint
Links
Thom Frühwirth, updated March 29, 2022