[ Term Manipulation | Reference Manual | Alphabetic Index ]

# set_var_bounds(?Var, +Lower, +Upper)

Impose bounds on a numeric variable in a generic way

Var
  Variable or number.
Lower
  A number.
Upper
  A number.

## Description

This predicate is intended to be used on attributed variables that have a numeric domain. The bound information is distributed to the variable's attributes via their set_bounds-handlers. Only existing attributes are involved, no new attributes are created!

The bounds can be given as any numeric type, the set_bounds handlers are expected to interpret them appropriately.

### Modes and Determinism

- set_var_bounds(?, +, +) is semidet

### Fail Conditions

Fails if imposing the bounds results in an empty domain

### Exceptions

(5) type error
  Var is not a variable or number

## Examples

        [eclipse 1]: lib(fd), lib(ic).
        yes.

        % update both attributes:
        [eclipse 2]: ic:(X::3.0..9.0), fd:(X::1..7), set_var_bounds(X, 5, 6.5).
        X = X{ic : 5.0..6.5, fd:[5, 6]}
        yes.

        % no attribute - no effect:
        [eclipse 13]: set_var_bounds(X, 5, 6.5).
        X = X
        yes.

        [eclipse 15]: set_var_bounds(0, 5, 6.5).
        no (more) solution.

        [eclipse 14]: set_var_bounds(a, 3,7).
        type error in set_var_bounds(a, 3, 7)

## See Also

get_var_bounds / 3, set_bounds handler