10.10.9.2 Reflection Predicates
The constraint solving method needs access to information about the
current domains of variables. This is provided by the following
predicates, which are all constant time operations.
Checks that X is currently an unbound variable that is known to
the CLPFD solver.
where X is a domain variable (or an integer). Min is
unified with the smallest value in the current domain of X, i.e.
an integer or the atom
inf denoting minus infinity.
where X is a domain variable (or an integer). Max is
unified with the upper bound of the current domain of X, i.e. an
integer or the atom
sup denoting infinity.
where X is a domain variable (or an integer). Size is
unified with the size of the current domain of X, if the domain is
bounded, or the atom
where X is a domain variable (or an integer). Set is
unified with an FD set denoting the internal representation of the
current domain of X; see below.
where X is a domain variable (or an integer). Range is
unified with a ConstantRange (see Syntax of Indexicals)
denoting the current domain of X.
where X is a domain variable (or an integer). Degree is
unified with the number of constraints that are attached to X.
Please note: this number may include some constraints that have
been detected as entailed. Also, Degree is not the number of
neighbors of X in the constraint network.
The following predicates can be used for computing the set of variables
that are (transitively) connected via constraints to some given
Given a domain variable Var, Neighbors is the set of
variables that can be reached from Var via constraints
posted so far.
Given a list Vars of domain variables, Closure is the set of
variables (including Vars) that can be transitively reached via
constraints posted so far. Thus,
fd_closure/2 is the transitive
Send feedback on this subject.