CHR

Constraint Handling Rules is a serious logic programming language (or set of related languages), that may be of interest to esolang fans.

Essentially, CHR does constraint rewriting. One form of constraint rewriting is simplification, such as transforming an if-and-only-if into two implications, one in each direction. Simplification eliminates the starting constraints. Another form of constraint rewriting is propagation. Given two implications A=>B and B=>C, one can deduce A=>C. Propagation does not eliminate the starting constraints. So called "simpagation" combines these two paradigms, eliminating some but not all of the starting constraints.

A recent scholarly survey article is As time goes by: Constraint handling rules -- A survey of CHR research between 1998 and 2007 (2009) by by Jon Sneyers, Peter Van Weert, Tom Schrijvers and Leslie De Koninck.

External resources

 * Constraint Handling Rules at Wikipedia
 * Documentation of SWI-Prolog's implementation of CHR
 * CCHR, an implementation of CHR compiling to C