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