||Constraint Handling Rules is a declarative programming language extension introduced in 1991 by Thom Frühwirth. Originally designed for developing (prototypes of) constraint programming systems, CHR is increasingly used as a high-level general-purpose programming language.
CHR is not commonly used as a programming language in its own right. Rather, it is used to extend a host language with constraints. A CHR program is a sequence of guarded rules for simplification, propagation and "simpagation" of conjunctions of constraints. In contrast to Prolog, the rules are multi-headed and are executed in a committed-choice manner.