Arithmetic  is  performed  by  built-in  procedures which take as arguments
numeric  expressions  and  evaluate  them.   A numeric expression is a term
built  from evaluable functors, integers, reals and variables.  At the time
of  evaluation,  each variable in an numeric expression must be bound to an
integer,  or  real  or, for the interpreter ONLY, to an numeric expression.
The  resultant  type  of  any numeric valuation is an integer except when a
component  of the expression is a real.  In this case, the result is also a
real.

Each  evaluable  functor stands for an arithmetic operation.  The evaluable
functors are as follows, where X and Y are numeric expressions:-

     X+Y   addition

     X-Y   subtraction

     X*Y   multiplication

     X/Y   division

     X^Y    exponentiation (Y >= 0).

     X mod Y   X integer remainder after dividing X by Y

     -X   unary minus


The  arithmetic built-in procedures are as follows, where X and Y stand for
arithmetic expressions, and Z for some term:-

Z is X

     Numeric  expression  X  is evaluated and the result is unified with Z.
     Fails and delivers a warning if X is not an numeric expression.

X == Y

     The values of X and Y are equal.

X /= Y

     The values of X and Y are not equal.

X < Y

     The value of X is less than the value of Y.

X > Y

     The value of X is greater than the value of Y.

X <= Y

     The value of X is less than or equal to the value of Y.

X >= Y

     The value of X is greater than or equal to the value of Y.
