# Module arith

This module provides additional number predicates. The predicates
between/3 and above/2 allow enumerating numbers in a given range
by the unit step. For both predicates the type of the result is
the type of the lower bound. The predicate above/2 doesn't have an
upper bound and will return numbers forever.

Examples:

?- between(1, 3, X).

X = 1 ;

X = 2 ;

X = 3

?- between(1, 3, 4).

No

The predicates plus/3 and succ/2 allow solving primitive numeric
addition equations. These predicates will not enumerate solutions,
but they will work in different modes. The predicate plus/3
requires at least two instantiated arguments and the predicate
succ/2 requires at least one instantiated argument.

The following arith predicates are provided:

**between(L, H, X):**
- The predicate succeeds in unit steps for every number X
between the two numbers L and H..
**above(L, X):**
- The predicate succeeds in unit steps for every number X above
the number L.

**plus(A, B, C):**
- The predicate succeeds for numbers A, B and C such that A+B
=:= C. At least two arguments have to be instantiated.
**succ(A, B):**
- The predicate succeeds for numbers A and B such that A+1 =:=
B. At least one arguments has to be instantiated.

## Comments