[ library(chr) | The ECLiPSe Libraries | Reference Manual | Alphabetic Index ]

chr_resolve(+Constraint)

Uses the Prolog clauses to solve a constraint Constraint.
+Constraint
A constraint (callable term) defined by constraint handling rules.

Description

Uses the Prolog clauses to solve a constraint Constraint. Used by advanced constraint handling rules users to program labeling procedures for the constraints defined by constraint handling rules.

Modules

This predicate is sensitive to its module context (tool predicate, see @/1).

Fail Conditions

Fails if there are no Prolog clauses for the constraint or if the bodies of all clauses fail.

Resatisfiable

Yes.

Exceptions

(4) instantiation fault
Constraint is a free variable.
(6) out of range
Constraint is term which is not a constraint (defined by constraint handling rules).

Examples

   Example using the constraint handler for Booleans in file  bool.chr:
[eclipse]: chr_resolve(X).
instantiation fault in is_predicate(_g671 / _g639)

[eclipse]: chr_resolve(and(X,Y)).
out of range in chr_resolve(and(X,Y))

[eclipse]: chr_resolve(and(X,Y,Z)).

X = 0
Y = Y
Z = 0     More? (;)

X = 1
Y = Z
Z = Z
yes.

[eclipse]: chr_resolve(and(a,b,c)).
no (more) solution.


   The predicate chr_labeling/0 can be defined as:
labeling :-
   chr_get_constraint(C),
   chr_label_with(C),
   !,
   chr_resolve(C),
   labeling.

labeling.



See Also

chr_labeling / 0, chr_label_with / 1, chr_get_constraint / 1, chr_get_constraint / 2