next up previous contents
Next: Compiler generated predicates Up: The Extended CHR Implementation Previous: Executing Propagation and simpagation

Options and Built-In Predicates

The check_guard_bindings and already_in_store options from the old chr library are supported. Note that the extended compiler can actually detect some cases where guard bindings cannot constrain any global variables (for example, var/1), and will in such cases no check guard bindings.

New options, intended to control the way the compiler tries to optimise code, are introduced. These are intended for the developers of the compiler, and will not be discussed in detail here. The only currently supported option in this category is single_symmetric_simpagation.

A new built-in predicate, in_chrstore/1, is used to inspect the constraint store:

in_chrstore(+Constraint)

is used to test if Constraint is in the constraint store or not. It can be used to prevent the addition of redundant constraints:

X leq Y, Y leq Z ==> \+in_chrstore(X leq Z)| X leq Z.

The above usage is only useful if the already_in_store option is off. Note that as the state of a constraint that appears in the head is not defined in the guard, it is strongly suggested that the user does not perform this test in the guard for such constraints,



Joachim Schimpf
Sun Jul 19 22:34:17 BST 1998