I always forget what strict weak ordering means, but it’s quite simple, actually.
My explanation is based on the Programming Conversation of last week and I hope this will help me remember the next time I hear about this.
Let’s start with ordering. A relation is an ordering if it is transitive.
ordering --> for all a, b, c: r(a, b) and r(b, c) => r(a, c)
And now strict
.
strict --> for all a: !r(a, a)
This means that for a strict relation comparing a with itself will never be
true. An example of r
that is strict is <
. A value will never be less than
itself.
The complement of strict
is reflexive
.
reflexive --> for all a: r(a, a)
This means that for a strict relation comparing a with itself will always be true. An example of relation that is reflexive is equality.
total --> for all a, b: r(a, b) or r(b, a) or a = b
weak --> for all a, b: r(a, b) or r(b, a) or (!r(a, b) and !(r(b, a))
Total ordering means that two objects relate to each other in one of three
ways: a < b
or b < a
or a = b
.
Weak ordering means the two objects relatie to each other in one of three
ways: a < b
or b < a
or ( !(a < b) && !(b < a) )
.