4.5.5 boolean expressions
A boolean expression is an int expression used in a logical context:
An int expression <> 0 evaluates to TRUE (represented by 1),
0 evaluates to FALSE (represented by 0).
The following is the list of available comparisons of objects of the same type.
Note: There are no comparisons for ideals and modules, resolutions
and maps.

integer comparisons:
 i == j
i != j // or i <> j
i <= j
i >= j
i > j
i < j


number comparisons:
 m == n
m != n // or m <> n
m < n
m > n
m <= n
m >= n
 For numbers from Z/p or from field extensions not all operations are useful:
 0 is always the smallest element,
 in Z/p the representatives in the range (p1)/2..(p1)/2 when p>2 resp.
0 and 1 for p=2 are used for comparisons,
 in field extensions the last two operations
(>=,<= ) yield always TRUE (1) and
the < and > are equivalent to != .

polynomial or vector comparisons:
 f == g
f != g // or f <> g
f <= g // comparing the leading term w.r.t. the monomial order
f < g
f >= g
f > g


intmat or matrix comparisons:
 v == w
v != w // or v <> w


intvec or string comparisons:
 f == g
f != g // or f <> g
f <= g // comparing lexicographically
f >= g // w.r.t. the order specified by ASCII
f > g
f < g


boolean expressions combined by boolean operations (
and ,
or , not )
Note:
All arguments of a logical expression are first evaluated and
then the value of the logical expression is determined. For example, the
logical expression (a  b) is evaluated by first evaluating
a and b , even though the value of b has no
influence on the value of (a  b) , if a evaluates to
true.
Note that this evaluation is different from the lefttoright, conditional
evaluation of logical expressions (as found in most programming
languages). For example, in these other languages, the value of (1
 b) is determined without ever evaluating b .
See Major differences to the C programming language.
