Node:CHR Constraint Handlers, Next:, Previous:CHR Programming Hints, Up:CHR

### Constraint Handlers

The CHR library comes with plenty of constraint handlers written in CHR. The most recent versions of these are maintained at http://www.pst.informatik.uni-muenchen.de/~fruehwir/chr-solver.html

`arc.pl`
classical arc-consistency over finite domains
`bool.pl`
simple Boolean constraints
`cft.pl`
feature term constraints according to the CFT theory
`domain.pl`
finite domains over arbitrary ground terms and interval domains over integers and reals, but without arithmetic functions
`gcd.pl`
elegant two-liner for the greatest common divisor
`interval.pl`
straightforward interval domains over integers and reals, with arithmetic functions
`kl-one.pl`
terminological reasoning similar to KL-ONE or feature trees
`leq.pl`
standard introductory CHR example handler for less-than-or-equal
`list.pl`
equality constraints over concatenations of lists (or strings)
`listdom.pl`
a straightforward finite enumeration list domains over integers, similar to `interval.pl`
`math-elim.pl`
solves linear polynomial equations and inequations using variable elimination, several variations possible
`math-fougau.pl`
solves linear polynomial equations and inequations by combining variable elimination for equations with Fourier's algorithm for inequations, several variations possible
`math-fourier.pl`
a straightforward Fouriers algorithm to solve polynomial inequations over the real or rational numbers
`math-gauss.pl`
a straightforward, elegant implementation of variable elimination for equations in one rule
`minmax.pl`
simple less-than and less-than-or-equal ordering constraints together with minimum and maximum constraints
`modelgenerator.pl`
example of how to use CHR for model generation in theorem proving
`monkey.pl`
classical monkey and banana problem, illustrates how CHR can be used as a fairly efficient production rule system
`osf.pl`
constraints over order sorted feature terms according to the OSF theory
`oztype.pl`
rational trees with disequality and OZ type constraint with intersection
`pathc.pl`
the most simple example of a handler for path consistency--two rules
`primes.pl`
elegant implementations of the sieve of Eratosthenes reminiscent of the chemical abstract machine model, also illustrates use of CHR as a general purpose concurrent constraint language
`scheduling.pl`
simple classical constraint logic programming scheduling example on building a house
`tarski.pl`
most of Tarski's axiomatization of geometry as constraint system
`term.pl`
Prolog term manipulation built-in predicates `functor/3, arg/3, =../2` as constraints
`time-pc.pl`
grand generic handler for path-consistency over arbitrary constraints, load via `time.pl` to get a powerful solver for temporal constraints based on Meiri's unifying framework. `time-rnd.pl` contains a generator for random test problems.
`time-point.pl`
quantitative temporal constraints over time points using path-consistency
`tree.pl`
equality and disequality over finite and infinite trees (terms)
`type.pl`
equalities and type constraints over finite and infinite trees (terms)

You can consult or compile a constraint handler from the CHR library using e.g.:

```| ?- [library('chr/examples/gcd')].
| ?- compile(library('chr/examples/gcd')).
```
If you want to learn more about the handlers, look at their documented source code.

In addition, there are files with example queries for some handlers, their file name starts with `examples-` and the file extension indicates the handler, e.g. `.bool`:

```examples-adder.bool
examples-benchmark.math
examples-deussen.bool
examples-diaz.bool
examples-fourier.math
examples-holzbaur.math
examples-lim1.math
examples-lim2.math
examples-lim3.math
examples-puzzle.bool
examples-queens.bool
examples-queens.domain
examples-stuckey.math
examples-thom.math
```