[ Arithmetic | The ECLiPSe Built-In Predicates | Reference Manual | Alphabetic Index ]

succ(?X, ?Y)

Successor relation over natural numbers.
X
an integer or a variable
Y
an integer or a variable

Description

Successor relation over natural numbers. Succeeds if X is an integer greater or equal to zero, and Y is one greater than X. If one of the arguments is uninstantiated, it gets computed from the other by adding or subtracting 1, respectively.

If the system is in coroutining mode and both arguments are uninstantiated, succ/2 delays until at least one argument is known.

Modes and Determinism

Fail Conditions

Fails if X or Y are negative integers, or if Y is 0

Exceptions

(5) type error
an argument is a non-integer number
(4) instantiation fault
both arguments are uninstantiated (non-coroutining mode only)
(24) number expected
X or Y is not a number

Examples

   Success:
   	succ(0, 1).
   	succ(7, 8).
   	succ(10000000000000000000, 10000000000000000001).
   	succ(0, Y).		(gives Y=1)
   	succ(X, 3).		(gives X=2)

   Fail:
   	succ(X, 0).
   	succ(X, -5).
   	succ(-1, Y).

   Error:
   	succ(X, Y).		(error 4)
   	succ(0.0, Y).		(error 5)
   	succ(a, Y).		(error 24)

See Also

plus / 3, + / 3, - / 3