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

From: vc <boston103_at_hotmail.com>
Date: 1 Dec 2005 20:07:26 -0800
Message-ID: <1133496446.794271.267450_at_z14g2000cwz.googlegroups.com>


Jon Heggland wrote:
> In article <1133399157.887590.131540_at_g49g2000cwa.googlegroups.com>,
> boston103_at_hotmail.com says...
> > Jon Heggland wrote:
> > > In article <1133365672.244152.260720_at_z14g2000cwz.googlegroups.com>,
> > > boston103_at_hotmail.com says...
> > > >
> > > > Please read the original article I've referenced for justification and
> > > > the debate beween Codd and Date on the issue of nulls:
> > > > http://www.dbdebunk.com/page/page/1706814.htm.
> > >
> > > I found no justification in the original article; that's why I asked! I
> > > have read the Codd/Date debate; it seems that Codd is confused about how
> > > 3VL works.
> >
> > What specifically is he confused about with respect to 3VL ?
>
> Tautologies, for one thing, as pointed out by Clement-Davies.

Au contraire, it's Clement -Davies who does not get Codd's point. Codd correctly remarks that checking whether a logical formula is a tautology would be nice, but unrealistic even in the 2L because in the FOL on which the RM is based the problem is simply undecidable.

It's unclear at all what Clement -Davies means by this : "Since the example he gives [regarding birth years] isn't a tautology in Lukasiewicz's system and any system of three-valued logic in which this was made to be a tautology would show unfortunate effects elsewhere"

[...]
> > The 3VL equivalence is a logical operator (or connective) whose meaning
> > is defined by a truth table in the same way as it is for the 2VL
> > equivalence (sometimes called a biconditional). The equality operation
> > is a predicate/relation defined over a set of values.
> > I do not know why they call equivalence EQUALS.
>
> Because the result of the the evaluation of equivalence

of what ?

 and equality

of what ?

> should be / is the same, perhaps? Or maybe it's just happy coincidence
> that it is in 2VL ... What practical (or indeed logical) consequences
> has such a separation of equality and equivalence for database theory?

Logical equivalence is defined over a set of wffs whose truth tables are the same. E.g.,

p & q <=> not (not p or q)

Clearly, we have two different formulas that are logically equivalent because their truth tables are the same. In other words, '<=>' partitiones the set of wffs into equivalence classes.

> Do you think it is a good idea to define a system where 0 is equivalent
> to 0, but not equal to 0?

What's that supposed to mean ? What set is your equivalence is defined over ? What set is your equality is defined on?

>
> > > > He uses the same symbol (NULL) both to talk about the unknown as an
> > > > unknown value and to talk about the unknown as a logical constant as
> > > > you noticed earlier yourself. It's confusing, but one can easily
> > > > deduce from the context what exactly he means. In order to avoid
> > > > confusion, one can use NULL to represent only an unknown value and
> > > > UNKNOWN to represent the additional [to TRUE/FALSE] logical constant.
> > >
> > > The problem is that NULL = NULL and thus UNKNOWN = UNKNOWN is not true,
> >
> > There is no 'thus', the problem is that you are missing the context.
>
> Codd uses the same symbol, omega/null for both his 'value (of any type)
> at present unknown' and for the unknown truth value. Or do you claim
> that when null is encountered as a 3VL boolean (lukasiewiczian?), Codd
> says null = null should yield true?

As I said before, the domains (contexts) are different so what's the problem ? When we use {0,1,2} in the 3vl, we do not claim that 0,1,2 are integers, do we ?

>
> > Now, we
> > can consider a set consisting of three elements {TRUE, FALSE, UNKNOWN}.
> > It's a trivial observation that we can define equality over such set
> > where UNKNOWN = UNKNOWN evaluates to TRUE
>
> We can define anything we want, I guess.

Sure we can.

>
> > (UNKNOWN does not have any special meaning, you could as well use
> > QWERTY instead).
>
> Just like you can use ASDFGH for TRUE and ZXCVBN for FALSE? What's your
> point?

The point is that we can [re]-use the same symbols for different things as I hope I've demonstrated above.

>
> > Further, you
> > can use NULL instead of UNKNOWN, nothing really changes, you still
> > have a three element set {TRUE, FALSE, NULL} where you can define
> > equality so that NULL=NULL evaluates to TRUE. In other words, we
> > establish different rules for say {0,1,2,3, ..., NULL} and {FALSE,
> > TRUE, NULL}.
>
> In which case it is a really, really stupid idea to use the same symbol.

Are you saying that say Lukasiewicz's was stupid because he used {0,1/2, 1} for his system confusing the fraction (1/2) with a truth constant ?

> To use the same argument, we can call the empty string NULL, and say
> that in a string context, NULL = NULL is true.

I cannot parse that.

>Or use NULL instead of
> TRUE, and "nothing really changes". Possible? Yes. Practical? No.

See above.

>
> But anyway, does Codd or SQL do this?

Do what ?

> If not, what is the point of your
> argument? That we can, if we want, design really horrendous formal
> systems? I won't dispute that.
>
> > > I never claimed such a thing. I do claim that 0 = 0, 1 = 1 and 2 = 2,
> > > though.
> >
> > See above.
>
> Come on. Your argument above says essentially "we can define it to be if
> we want to". I'm asking why we (or Codd) wouldn't want to.

I do not understand that. "Would not want to" do what ?

> --
> Jon
Received on Fri Dec 02 2005 - 05:07:26 CET

Original text of this message