nThere must be a way of comparing objects to determine which should come first. There
must be an ordering relation.
nThere must be an operator to compare the objects to put them in order.
nThe ordering is antisymmetric. (a < b -> b !<a)
nThe ordering is transitive. (a<b,b<c -> a<c)
nThe ordering is total
with respect to some
“equivalence” on the class. (a<b or a>b or a==b, but only one; here “==“ means
“equivalent with respect to the
ordering”)