Re: So what's null then if it's not nothing?

From: vc <boston103_at_hotmail.com>
Date: 9 Dec 2005 16:27:56 -0800
Message-ID: <1134174476.373085.313290_at_f14g2000cwb.googlegroups.com>


Jon Heggland wrote:
> In article <1134060103.915048.159540_at_g14g2000cwa.googlegroups.com>,
> boston103_at_hotmail.com says...
> >
> > > ... unless he by '=' means equivalence!
> >
> > I don't know about a single example of him using '=' as equivalence in
> > the logical domain. Could you provide one ?
>
> Something like "NOT(F) = T; NOT(w) = w; NOT(T) = F", you mean?

The above is ambiguous the most likely interpretation is that of *logical equivalence* rather than a biconditional. If the above is a logical equivalence example, then it trivially restates what the NOT truth table already says. If it's a biconditional, then it evaluates accoding to its truth table. I did not see Codd using '=' with logical values in the latter sense which obviously meant when you said 'unless he by '=' means equivalence". An example of such use by COdd would be helpful in order to derive the context.

>
> Apart from that, he uses '=' a lot---calling it a "binary relation"---
> and he defines his theta-select and theta-join using it. He also wants
> to (be able to) store truth values in the database, and he does not say
> that '=' should mean anything else if that is the case.

But, if he calls '=' a binary relation, then it's obvious that he means neither equivalence/biconditional' nor 'ogical equivalence, but rather *equlaity* which indeed is a binary relation (as well as a predicate) (as are <, >, !=, etc).

>Based on this, I
> think it is very likely that he means equivalence in all cases.

No, see above.

> Although
> you complained of my calling equivalence a relation ... Is Codd at fault
> too, or is there another common interpretation of '=' that can safely be
> called a relation?

The usual meaning of '=' is equality which is a binary relation. In algebra, the symbol is often used to denote *equivalence of expressions* (2*x+4*y = x+2). However, in order to avoid ambiguity, in logic, '<-->' is most often used to denote the biconditional/equivalence connective and <==> is used to denote *equivalence of logical expressions* (whose truth tables are the same).  I am not sure if my answer clarifies or further muddies this stuff for you.

Also, importantly '=' is a *binary predicate* whose *interpretation* is a binary [mathematical] relation. Often, maybe confusingly, 'predicate' and [mathematical] 'relation' are used interchangeably. When I said that Cddd had redefined equality, I rather meant that he'd extended the equality predicate so that in addition to handling values of some domain in the usual way, it could cope with NULLs as well. The interpretation of equality as a *binary relation* with certain properties defining such relation remained unchanged.

>
> > > I don't suggest to redefine equality for anything. I don't think Codd
> > > does either.
> >
> > But he does, what else 'null = 7--> unknown' is if not a redefinition
> > ?
>
> A redefinition of equivalence, not equality. I don't think this equality
> enters into the discussion at all, actually.

See above.

>
> > > Fair enough. And this doesn't mean that arithmetic has "ceased to
> > > exist" in SQL due to a redefinition of equality of numbers, because
> > > arithmetic doesn't depend on comparing truth tables?
> >
> > I do not understand the bit about arithmetic.
>
> Me neither. :) I'll rephrase: You say (if I understand you correctly)
> that to claim that NULL = NULL is UNKNOWN even for "truth value NULLs"
> constitutes a redefinition of equality, which renders logic
> useless/unusable. I'm wondering why a similar disaster doesn't happen to
> arithmetic / number theory when we say that NULL = NULL is UNKNOWN for
> "integer NULLs".

Because, for example the integer domain is not harmed so lethally as some logic would be by introdicing elements of which one cannot say whether they are the same or not. In a sense, one can say that the damage inflicted on the integer (or some other) domain by introducing NULL is contained through the use of some logic that has, arguably, ability to reason/make logical derivations when the domain reasoned about has NULL.

>
> > > What's so unclear about it? The very same examples I have used several
> > > times earlier. "select * from Foo where (a < 16) = (b > 7)" if a and b
> > > are numbers; "select * from Bar where a = not b" if a and b are truth
> > > values.
> >
> > I thought we'd covered that earlier. The most likely interpretation is
> > '=' is a biconditional.
>
> I thought so too. But I don't really understand your position here. We
> are discussing what Codd's "[W]hat is the truth value of x = y if x or y
> or both are null? An appropriate result in each of these cases is the
> unknown truth value, rather than true or false" means, right?

Yes, *except* when x, y are variables ranging over truth values. I've tried, apparently unsuccessfully so far, to explain why the word 'except' appropriate.

Vocabulary remarks: equality means a predicate/relation with certain properties;

                                 equivalence can mean (a) a logical
connective (aka biconditional) defined by its truth table; or (b) [mathematical] equivalence relation over some set of which (c) *logical equivalence* [of logical expressions] is an instance.

Probably, henceforth, you'd like to clarify what exact *equivalence* you mean when you use the word. I hope that ther is no ambiguity about 'equality'.

>
> The "null = null is UNKNOWN" statement is a special case of the quote
> above. I believe

Right.

>Codd meant this to hold even for the truth value kind
> of null/w. I also believe that Codd meant '=' to signify equivalence,
> not equality; and this is all consistent if he used Kleene's 3VL.

Ok, if you hypothesize that Codd used '=' as a binary predicate/relation everywhere *except* for truth values in which case he used '=' to denote a biconditional, that might make sense. The problem is that he never supplied the biconditional(equivalence) truth table , and unless I am mistaken, never providen an example of such use  and he kept talking about tautologies which does not make sense in the context of Kleene's logic.

>
> If I understand you correctly, you believe that '=' means equality in
> the quote, and that therefore Codd implicitly meant it to not apply to
> truth value null/w, because that would break logic. That seems a very
> convoluted reading to me, especially when we seem to agree that '='
> means equivalence everywhere else.

The equivalence/biconditional as a logical connective is fundamentally different from equality as a predicate, and I am not sure how lumping them together helps anything.

> If we just leave equality out of it,
> everything falls into place!

Well, it does not.

>
> > > A relational algebra or calculus expression---but we have to use a
> > > textual language anyway, so it doesn't really matter.
> >
> > Please provide an example of such expression.
>
> Never mind; SQL is adequate for this. It makes no difference.
> --
> Jon
Received on Sat Dec 10 2005 - 01:27:56 CET

Original text of this message