Constraint Handling Rules (CHR) are available free and online now at:
http://www.pms.informatik.uni-muenchen.de/~webchr/
Click on the link above to run the latest release of CHR in Sicstus Prolog on our server. Choose among dozens of constraint solvers written in CHR. Ask any query. Or even write your own constraint solvers.
CHR are a rule-based high-level language to write constraint systems. CHR make it easy to define constraint reasoning: simplification and propagation as well as incremental solving (satisfaction) of constraints. Also, CHR have been successfully used as general purpose concurrent constraint language with ask and tell, as fairly efficient production rule system, as special kind of theorem prover, as system combining forward and backward chaining, as high-level language for manipulating attributed variables.
CHR are essentially a committed-choice language consisting of guarded rules with multiple head atoms. CHR define simplification of, and propagation over, constraints. Simplification rewrites constraints to simpler constraints while preserving logical equivalence (e.g. X>Y,Y>X <=> false). Propagation adds new constraints which are logically redundant but may cause further simplification (e.g. X>Y,Y>Z ==> X>Z). Repeatedly applying the rules incrementally solves constraints (e.g. A>B,B>C,C>A leads to false). With multiple heads and propagation rules, CHR provide two features which are essential for non-trivial constraint handling.
Test-Drive CHR. Run CHR online. Do a demo. Try it out now!
Thom Fruehwirth