results of searching for a satisfying assignment will be nondeterministic and unpredictable. Establishing confluence is usually done by way of the following three properties: A CHR program is locally confluent if all its critical pairs are joinable. A CHR program is called terminating if there are no infinite computations. A terminating CHR program is confluent if all its critical pairs are joinable. See also Constraint programming Constraint logic programming Logic programming Production system (computer science) Business rules engines Rewriting References Further reading Christiansen, Henning. "CHR grammars." Theory and Practice of Logic Programming 5.4-5 (2005): 467-501. External links CHR Bibliography The CHR mailing list The K.U.Leuven CHR System WebCHR: a CHR web interface Constraint logic programming Declarative programming languages Constraint programming languages Concurrent programming languages