Previous Up Next

6.2  Basic Constraints

The following constraints implement the basic relationships between two domain values. The constraints require their arguments to come from identical domains, otherwise an error is raised.

?X &= ?Y
X is the same as Y
?X &\= ?Y
X is different from Y
?X &< ?Y
X is strictly before Y in the domain order
?X &> ?Y
X is strictly after Y in the domain order
?X &=< ?Y
X is the same as Y, or before Y in the domain order
?X &>= ?Y
X is the same as Y, or after Y in the domain order
shift(?X,?C,?Y)
Y is C places above X in the domain order. X and Y have symbolic domains, C has an integer domain.
rotate(?X,?C,?Y)
like shift/3 but wraps at domain boundary.
element(?Index,++List,?Value)
Value occurs in List at position Index. Value has a symbolic domain, Index has an integer domain. List is a number of symbolic domain values.

For example

?- [X, Y] &:: weekday, X &< Y.
X = X{[mo, tu, we, th, fr, sa]}
Y = Y{[tu, we, th, fr, sa, su]}
Yes (0.00s cpu)

?- X &:: weekday, X &=< we.
X = X{[mo, tu, we]}
Yes (0.00s cpu)

Previous Up Next