[ 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

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