[ library(suspend) | Reference Manual | Alphabetic Index ]

# ::(?Var, ?Range, ?Bool)

Reified range constraint with optional integrality constraint

Var
  Variable or number
Range
  Variable or Lo..Hi, where Lo and Hi are variables or numeric expressions
Bool
  Variable, 0 or 1

## Description

Reified version of ::/2, i.e. the truth value of the range constraint is reflected in the value of the 0/1 variable Bool.

This constraint suspends until its first two arguments are ground. It then unifies Bool according to the truth value of the corresponding ::/2 constraint.

Note: as opposed to ::/2, the first argument cannot be a list.

### Modules

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

## Examples

        ?- ::(X, 1 .. 5, B), X = 3.
        B = 1
        X = 3
        Yes (0.00s cpu)

        ?- ::(X, 1.0 .. 5.0, B), X = 3.0.
        B = 1
        X = 3.0
        Yes (0.00s cpu)

        % range violated
        ?- ::(X, 1 .. 5, B), X = 6.
        B = 0
        X = 6
        Yes (0.00s cpu)

        % integrality violated
        ?- ::(X, 1 .. 5, B), X = 3.0.
        B = 0
        X = 3.0
        Yes (0.00s cpu)

## See Also

:: / 2