Constraint Handling Rules (CHR)

Constraint Handling Rules (CHR) is a concurrent committed-choice constraint logic programming language consisting of guarded rules that transform multi-sets of atomic formulas (constraints) until exhaustion. It was designed by Thom Frühwirth in 1991.

CHR can embed many rule-based formalisms and systems, and it can describe algorithms in a compact declarative way without compromising efficiency. The clean semantics of CHR ensures that several desirable properties hold for CHR programs and also facilitates sophisticated program analysis. Dozens of CHR libraries exist for programming languages such as Prolog, Java and Haskell.

So far, worldwide more than 200 academic and industrial projects use CHR and 2000 research publications investigate CHR. There is a yearly workshop and a biannual summer school on CHR.