The Prolog CHR compiler exploits user:term_expansion/6
rules to translate the
constraint handling rules to plain Prolog. These rules are loaded from library(chr)
.
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 library(chr)
as exemplified below:
:- module(zebra, [ zebra/0 ]). :- use_module(library(chr)). :- chr_constraint ...