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

# ?Result tent_is +Expr

Maintain tentative result of arithmetic expression

Result
  A (free or tentative) variable
Expr
  Arithmetic expression containing tentative variables

## Description

Implementation of arithemtic invariants.

This is similar to the normal arithmetic is/2 predicate, but evaluates the expression based on the tentative values of its variables. The result is delivered as (an update to) the tentative value of the Result variable. Once initiated, tent_is will stay active and keep updating Result's tentative value eagerly whenever the tentative value of any variable in Expression changes.

### Modes and Determinism

- tent_is(+, ?) is det

### Modules

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

## Examples

        ?- [X, Y] tent_set [3, 4], Z tent_is X + Y.
        X = X{3 -> 0}
        Y = Y{4 -> 0}
        Z = Z{7 -> 0}
        Yes (0.00s cpu)

        ?- [X, Y] tent_set [3, 4], Z tent_is X + Y, X tent_set 7.
        X = X{7 -> 0}
        Y = Y{4 -> 0}
        Z = Z{11 -> 0}
        Yes (0.00s cpu)

## See Also

tent_set / 2, tent_get / 2