Ordering lists
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”)