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

From: vc <boston103_at_hotmail.com>
Date: 2 Dec 2005 03:47:18 -0800
Message-ID: <1133524038.308500.314090_at_g47g2000cwa.googlegroups.com>


Jon Heggland wrote:
> 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.

Well, Codd claims no such thing. In fact, he says that the 3vl cannot express the tautology (obviously):

"it evaluates the whole condition to be unknown. This is an example of a mild error. This kind of error is just as likely to occur (and other kinds much more likely) if the responsibility for handling missing information is placed totally on the users.

Now, an obvious cure for this is to equip the DBMS not only with 3VL, but also with the capability of recognizing for any whole condition whether it is a tautology.
"

To me, it's unclear what C.-D means by "any system of three-valued logic in which this
 was made to be a tautology would show unfortunate effects elsewhere". He does not show *how *exactly Codd's example can be made a tautology in any 3vl system and *what* specific unfortunate effects elsewhere it would have.

More importantly, he ignores the crucial point that tautology determination is undecidable in even the traditional 2vl FOL.

>
> > > Because the result of the the evaluation of equivalence
> >
> > of what ?
>
> of two 3VL-boolean expressions

3VL boolean expression is almost an oxymoron. If you mean equivalence of two 3VL formulas, then its determined in the same way as the 2vl wff equivalence: the truth tables should be the same.

>
> > > and equality
> >
> > of what ?
>
> of two 3VL-boolean expressions

Two 3vl expressions are equal iff they are the same. E.g. (X and Y) = (X and Y).

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

Thank you, I am.

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

As. I believe Tarsky. said, "x = y if, and only if, x and y have every property in common."
In simpler words, x and y are equal iff they are the same.

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

If the first zero denotes a logical constant, then yes. I do not know what zero denotes in the second case, so the answer is , "I do not know"..

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

Of course, as a logical constant, null=null evaluates to true (assuming our 3vl logical constants set is {true, false, null} with the usual truth tables): it denotes the same thing on both side of the '=' sign.  No one uses the equality explicitly, since it's blindingly obvious.

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

So the standard Boolean logic that uses 0 and 1 as logical constants is badly designed ? I agree that reusing the same symbol for different purposes *may* be confusing, but that's a standard practice in math.

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

If you carefully use NULL as an empty string designation within a string operations context, then no, there is no problem. .

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

As a logical constant, yes, as an unknown/missing value, no.

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

I am missing something. Codd has a special eqaulity rule only for NULL, not for anything you've mentioned above (assuming you assum the standard meaning for those symbols).
> --
> Jon
Received on Fri Dec 02 2005 - 12:47:18 CET

Original text of this message