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

From: Jon Heggland <heggland_at_idi.ntnu.no>
Date: Sun, 11 Dec 2005 12:50:52 +0100
Message-ID: <MPG.1e0630fc51d5328098973d_at_news.ntnu.no>


In article <1134174476.373085.313290_at_f14g2000cwb.googlegroups.com>, boston103_at_hotmail.com says...
> Jon Heggland wrote:
> > In article <1134060103.915048.159540_at_g14g2000cwa.googlegroups.com>,
> > boston103_at_hotmail.com says...
> > > 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.

You asked for equivalence, I gave you equivalence. :)

> 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'd guess that the above is a substitute for a truth table for NOT, meant to convey the exact same information. Note its context, and the fact that Codd doesn't provide an actual truth table for NOT---so "what the NOT truth table already says" is not given.

> > 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).

But how do you reconcile this with his THETA-SELECT example, where R[A = r] does produce a result? By your definition, A is certainly not equal to r.

> 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).

So let me see: w <--> w can be anything we want, according to how we define its truth table. Lukasiewicz says it is TRUE; Kleene says it is w. w <==> w, on the other hand, is necessarily TRUE, because the truth tables for w and w are (trivially) equal / the same. Did I get that right?

So the question then is what '=' should mean when used for truth values in e.g. a THETA-SELECT, and what the opinions of Codd and the SQL standard are on this.

> I am not sure if my answer clarifies or further muddies this stuff for
> you.

I'm so deep in the mud that I don't know up from down. What was our original disagreement again?

> > 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.

I still don't understand what the 'lethal' problem is. Can you give an example?

> > 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.

It would have helped your case if Codd had included that word. Seems to me that either:

  1. There is no problem, even if you apply this to truth values
  2. There is a problem, but Codd wasn't aware of it
  3. Codd was aware, but was really bad at explaining things
  4. The problem is so obvious that it is pointless to mention it

I lean towards 1 or 2. Do you subscribe to 4, or do you have other alternatives?  

> >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.

Point. I agree there is a dichotomy there. So if we then agree that saying "NULL = NULL is UNKNOWN" implies a redefinition of the [mathematical] equivalence relation, the question is whether Codd meant to do this for truth values as well.

You say he didn't, because that would be stupid and break logic.

I say he did, because he doesn't say otherwise; and in fact talks about 'uniform treatment'.

Is that a reasonable summary?

-- 
Jon
Received on Sun Dec 11 2005 - 12:50:52 CET

Original text of this message