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

# neg ?Expr

Expr arithmetically evaluates to 0

Expr
  A boolean expression

## Description

Suspends until Expr is ground, and then evaluates it. Succeeds if it evaluates to 0.

Typically, the expression contains reifiable constraints, in which case a corresponding reified constraint is set up, and the expression is replaced by the resulting boolean variable.

### Modules

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

### Fail Conditions

Expr does not evaluate to 0

### Exceptions

(24) number expected
  Expr is not an arithmetic expression.

## Examples

    	?- neg B, B = 1.
    	No (0.00s cpu)

    	?- neg B, B = 0.
    	B = 0
    	Yes (0.00s cpu)

    	% arguments are typically reifiable expressions:
    	?- neg X > 7, X = 8.
    	No (0.00s cpu)

    	% the previous example is equivalent to:
    	?- >(X,7,B), neg B, X=8.
    	No (0.00s cpu)

    	% and/or/=>/neg are themselves reifiable:
    	?- neg(X > 7 or X < 5), X = 7.
    	X = 7
    	Yes (0.00s cpu)

## See Also

neg / 2, and / 2, or / 2, => / 2, ic : neg / 1, gfd : neg / 1