In this section we cover several
guidelines on how to use CHR to write constraint solvers and how to do
so efficiently.
- Set semantics
The CHR system allows the presence of identical constraints, i.e.
multiple constraints with the same functor, arity and arguments. For
most constraint solvers, this is not desirable: it affects efficiency
and possibly termination. Hence appropriate simpagation rules should be
added of the form: [ constraint \
constraint <=> true ]
- Multi-headed rules
Multi-headed rules are executed more efficiently when the constraints
share one or more variables.