Built-In Predicates

This table lists the predicates made available by the CHR library. They are meant for advanced users, who want to tailor the CHR system towards their specific needs.

current_handler(?Handler, ?Module)

nondeterminately enumerates the defined handlers with the module they are defined in.

current_constraint(?Handler, ?Constraint)

nondeterminately enumerates the defined constraints in the form Functor/Arity and the handlers they are defined in.

insert_constraint(+Constraint, -Id)

Inserts Constraint into the constraint store without executing any rules. The constraint will be woken and reconsidered when one of the variables in Constraint is touched. Id is unified with an internal object representing the constraint. This predicate only gets defined when a handler and constraints are declared (see CHR Declarations).

insert_constraint(+Constraint, -Id, ?Term)
Inserts Constraint into the constraint store without executing any rules. The constraint will be woken and reconsidered when one of the variables in Term is touched. Id is unified with an internal object representing the constraint. This predicate only gets defined when a handler and constraints are declared (see CHR Declarations).
find_constraint(?Pattern, -Id)

nondeterminately enumerates constraints from the constraint store that match Pattern, i.e., which are instances of Pattern. Id is unified with an internal object representing the constraint.

find_constraint(-Var, ?Pattern, -Id)

Nondeterminately enumerates constraints from the constraint store that delay on Var and match Pattern, i.e., which are instances of Pattern. The identifier Id can be used to refer to the constraint later, e.g. for removal.

findall_constraints(?Pattern, ?List)

Unifies List with a list of Constraint # Id pairs from the constraint store that match Pattern.

findall_constraints(-Var, ?Pattern, ?List)
Unifies List with a list of Constraint # Id pairs from the constraint store that delay on Var and match Pattern.
remove_constraint(+Id)

Removes the constraint Id, obtained with one of the previous predicates, from the constraint store.

unconstrained(?Var)

Succeeds if no CHR constraint delays on Var. Defined as:

          unconstrained(X) :-
              find_constraint(X, _, _), !, fail.
          unconstrained(_).
          

notify_constrained(?Var)

Leads to the reconsideration of the constraints associated with Var. This mechanism allows solvers to communicate reductions on the set of possible values of variables prior to making bindings.