Abstract. Constraint Handling Rules (CHR) is both an effective concurrent declarative constraint-based programming language and a versatile computational formalism. While conceptually simple, CHR is distinguished by a remarkable combination of desirable features:-a semantic foundation in classical and linear logic, -an effective and efficient sequential and parallel execution model -guaranteed properties like the anytime online algorithm properties -powerful analysis methods for deciding essential program properties. This overview of some CHR-related research and applications is by no means meant to be complete. Essential introductory reading for CHR provide the survey article [125] and the books [56,63]. Up-to-date information on CHR can be found online at the CHR web-page www. constraint-handling-rules.org, including the slides of the keynote talk associated with this article. In addition, the CHR website dtai. cs.kuleuven.be/CHR/ offers everything you want to know about CHR, including online demo versions and free downloads of the language.
Executive SummaryConstraint Handling Rules (CHR) [56] tries to bridge the gap between theory and practice, between logical specification and executable program by abstraction through constraints and the concepts of computational logic. CHR has its roots in constraint logic programming and concurrent constraint programming, but also integrates ideas from multiset transformation and rewriting systems as well as automated reasoning and theorem proving. It seamlessly blends multi-headed rewriting and concurrent constraint logic programming into a compact userfriendly rule-based programming language. CHR consists of guarded reactive rules that transform multisets of relations called constraints until no more change occurs. By the notion of constraint, CHR does not need to distinguish between data and operations, and its rules are both descriptive and executable.In CHR, one distinguishes two main kinds of rules: Simplification rules replace constraints by simpler constraints while preserving logical equivalence, e.g., X≤Y∧Y≤X ⇔ X=Y. Propagation rules add new constraints that are logically redundant but may cause further simplification, e.g., X≤Y∧Y≤Z ⇒ X≤Z. Together with X≤X ⇔ true, these rules encode the axioms of a partial order relation. The rules compute its transitive closure and replace inequalities ≤ by equalities = whenever possible. For example, A≤B∧B≤C∧C≤A becomes A=B∧B=C. More program examples can be found in Section 2. Semantics of CHR are discussed in Section 3.