[ 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

- succ(+, -) is semidet
- succ(-, +) is semidet

### 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