Re: The naive test for equality

From: David Cressey <david.cressey_at_earthlink.net>
Date: Wed, 03 Aug 2005 12:50:33 GMT
Message-ID: <t43Ie.49$Je.28_at_newsread2.news.atl.earthlink.net>


"Marshall Spight" <marshall.spight_at_gmail.com> wrote in message news:1122991673.984098.255740_at_z14g2000cwz.googlegroups.com...

> Sure. Specifically, it's an equivalence relation. Let's distinguish
> between the equality relation specifically and equivalence relations
> in general. Equality is a much simpler thing.

You are right. Distinguishing between equivalence relations in general, and equality specifically is useful.
I might be dealing with "identity" rather than "equality"... if there's a difference.

>
>
> > But it's a flavor of equality where the combinatorics get quickly out of
> > hand.
> >
> > And that's what interests me in this discussion.
>
> I see. Well, maybe I don't actually. But I'm following you so far.

Well, I could always be wrong. It's happened before. But I think the group of things that can be obtained by permuting the components gets real big, real fast.

The next step in the discussion involves representation and synonyms, again.

If a single referent can be signalled by more than one representation, that's what I'm calling "the synonym problem". In this case, an equality test of the referents may require some kind of equivalence test of the references.

Two examples follow: Floating point numbers and SQL tables.

Traditional floating point numbers, in computers like the VAX, consist of three components, each with a bitwise representation: the mantissa, the exponent, and the sign. The mantissa is a non zero binary fraction, The exponent is an integer power of two, and the sign indicated multiplication by one or minus one. Zero is a special case. The problem with this scheme is that there are synonyms. In general, the floating point hardware will yield any synonym of the correct answer, when performing floating point arithmetic.

That should be good enough. But, in order to avoid confusion, the floating point hardware generally takes one more step before returning the result. This step is generally called "normalizing" (sigh). It consists of adjusting the mantissa and the exponent until the mantissa is less than one, but not less than one half. This result is the "normalized" representation of the right answer. This makes life easier for the rest of the hardware.

Now for SQL tables. In the definition of SQL tables, it's quite clear that the order of the rows is immaterial. This means that, if you have two table values, where one can be obtained by permuting the rows of the other, the two values represent the same thing. They are synonyms. This means that, when we test two SQL table values for equality, we have to test the two table values for equivalence under permutation, and not for equality.

Otherwise, we are performing a naive test for equality. We are testing for equality of the represntations, but not for equality of the things represented. Received on Wed Aug 03 2005 - 14:50:33 CEST

Original text of this message