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

From: Jon Heggland <heggland_at_idi.ntnu.no>
Date: Fri, 2 Dec 2005 08:39:33 +0100
Message-ID: <MPG.1dfa189115d9385989721_at_news.ntnu.no>


In article <1133496446.794271.267450_at_z14g2000cwz.googlegroups.com>, boston103_at_hotmail.com says...
>
> 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"

I take this to mean that Codd's example is *not* a tautology (in 3VL), whereas Codd claims that it is. In other words, a mistake on Codd's part.

> > Because the result of the the evaluation of equivalence
>
> of what ?

of two 3VL-boolean expressions

> > and equality
>
> of what ?

of two 3VL-boolean expressions

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

I think you are missing a "not" there.

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

Thank you so far. Now, can you explain equality too, and how it differs? Is "p & q" equivalent to "not (not p or [not] q)", but not equal? Are "0", "1" and "2" wffs? Is it equality or equivalence that are used in conditions in programming languages, e.g. in a relational restriction?

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

Would you say that 0 <=> 0? Would you say that 0 = 0?

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

I'll ask you again: Do you claim that when null is encountered as a 3VL boolean (lukasiewiczian?), Codd says null = null should yield true?

> When we use {0,1,2} in the 3vl, we do not claim that 0,1,2
> are integers, do we ?

I don't know why you keep bringing this straw man up. What I *do* claim is that a system where the symbols 0,1,2 are used for *both* 3VL truth values *and* integers, with different rules for each, is confusing and badly designed.

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

And my point is that it is not a good idea to do so *within the same system*.

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

If his system included fraction computation as well as logic, yes! If it didn't (and I doubt it did), then no.

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

We use the symbol NULL for "", just like it is used for the UNKNOWN truth value (0 or 1/2, whatever). Surely there is no problem? After all, the context is different.

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

Shall we agree to disagree?

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

I'll ask you yet again: Do you claim that when null is encountered as a 3VL boolean (lukasiewiczian?), Codd (or SQL) says null = null should yield true?

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

Define 0, 1, 2 and = so that 0 = 0, 1 = 1 and 2 = 2. Or 1/2 = 1/2, for that matter.

-- 
Jon
Received on Fri Dec 02 2005 - 08:39:33 CET

Original text of this message