The Prolog CHR compiler exploits
user:term_expansion/6 rules to translate the
constraint handling rules to plain Prolog. These rules are loaded from
They are activated after finding a declaration of the format:
:- chr_constraint ...
It is advised to define CHR rules in a module-file, where the module
declaration is immediately followed by loading
as exemplified below:
:- module(zebra, [ zebra/0 ]). :- use_module(library(chr)). :- chr_constraint ...