CHR extend the Prolog syntax by a few constructs introduced in the
next sections. Technically, the extension is achieved through the
user:term_expansion/2
mechanism. A file that contains a
constraint handler may also contain arbitrary Prolog code. Constraint
handling rules can be scattered across a file. Declarations and options
should precede rules. There can only be at most one constraint handler
per module.