Velocity Reviews > Comparisons of incompatible types

# Comparisons of incompatible types

Mark Wooding
Guest
Posts: n/a

 12-10-2010
Steven D'Aprano <(E-Mail Removed)> writes:

> On Thu, 09 Dec 2010 12:21:45 +0000, Mark Wooding wrote:
>
> > John Nagle <(E-Mail Removed)> writes:

>
> >> "sort" has failed because it assumes that a < b and b < c implies a <
> >> c. But that's not a valid assumption here.
> >>
> >> It's not good to break trichotomy.

> >
> > You're confused. The property
> >
> > a < b and b < c => a < c
> >
> > is called `transitivity'.

>
> Yes, but I believe that John is referring to the trichotomy (like a
> dichotomy,

Then why did he say `it assumes that a < b and b < c implies a < c'?
This assumption is transitivity, not trichotomy.

> > 2. Totality: a <= b or b <= a
> >
> > The above list sorting goes wrong because the `float' ordering isn't
> > total. In particular, x </= NaN and NaN </= x for all x (including x =
> > NaN!).

>
> I believe this is equivalent to trichotomy.

No, it isn't. In particular, the definition of totality I gave above
allows a <= b and b <= a and a /= b. You gave a perfectly good
definition of trichotomy, which I have moved out of its original order:

> exactly one of these relations are true:
>
> a < b
> a == b
> a > b

A total preorder (as defined above) doesn't exhibit this property -- but
can be described in terms of a total order (which /does/ exhibit proper
trichotomy) applied to a set of equivalence classes.

> > So, your last remark is in the right direction (though strict trichotomy
> > is unnecessary, as I've mentioned), but apparently only by accident
> > since the preceding discussion is completely wrong.

>
> "Completely" is surely a tad strong -- John might not be using the
> exact same terminology as you, but he's clearly talking about the
> equivalent concepts. He wants and expects all data types to either
> meet a total order, or raise an exception to any of the < > <= and >=
> operators.

No. He was hopelessly confused, describing the problem in terms of a
failure of transitivity (which doesn't, in fact, fail), but using the
word `trichotomy', apparently more by luck than judgement.

I don't want to insist on a total order. Efficient sorting requires a
total preorder, and that's all I want.

-- [mdw]