list1 = list2
list1 <> list2
The equality operator = evaluates to true if the
two lists list1 and list2 are equal and false
otherwise. The inequality operator <> evaluates to true
if the two lists are not equal and false otherwise. Two lists
list1 and list2 are equal if and only if for every
index i, either both entries list1[i]
and list2[i] are unbound, or both are
bound and are equal, i.e., list1[i] = list2[i]
is true.
gap> [ 1, 2, 3 ] = [ 1, 2, 3 ];
true
gap> [ , 2, 3 ] = [ 1, 2, ];
false
gap> [ 1, 2, 3 ] = [ 3, 2, 1 ];
false
list1 < list2, list1 <=
list2 list1 > list2,
list1 >= list2
The operators <, <=, > and >=
evaluate to true if the list list1 is less than, less
than or equal to, greater than, or greater than or equal to the list list2
and to false otherwise. Lists are ordered lexicographically,
with unbound entries comparing very small. That means the following. Let
i be the smallest positive integer i, such that neither
both entries list1[i] and list2[i]
are unbound, nor both are bound and equal. Then list1 is less than
list2 if either list1[i] is
unbound (and list2[i] is not) or both are
bound and list1[i] < list2[i]
is true.
gap> [ 1, 2, 3, 4 ] < [ 1, 2, 4, 8 ];
true # '<list1>[3] \<\ <list2>[3]'
gap> [ 1, 2, 3 ] < [ 1, 2, 3, 4 ];
true # '<list1>[4]' is unbound and therefore very small
gap> [ 1, , 3, 4 ] < [ 1, 2, 3 ];
true # '<list1>[2]' is unbound and therefore very small
You can also compare objects of other types, for example integers or permutations with lists. Of course those objects are never equal to a list. Records (see Records) are greater than lists, objects of every other type are smaller than lists.
gap> 123 < [ 1, 2, 3 ];
true
gap> [ 1, 2, 3 ] < rec( a := 123 );
true