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

From: vc <boston103_at_hotmail.com>
Date: 16 Dec 2005 09:02:25 -0800
Message-ID: <1134752545.776971.114510_at_g47g2000cwa.googlegroups.com>


Jon Heggland wrote:
> In article <1134692154.971636.72460_at_g14g2000cwa.googlegroups.com>,
> boston103_at_hotmail.com says...
> >
> > > > One can infer the 'variable' meaning from "The fact that the letters m,
> > > > n do not "look like" any of the integers does not prevent them from
> > > > actually having integer values in an expression such as m + n, m - n,
> > > > or an assertion that m * m = m.", but it would be a strange
> > > > interpretation.
> > >
> > > Hardly. The analogy must be that 'unknown' can actually *have* a truth
> > > value (true or false), which implies that it cannot actually *be* a
> > > truth value.
> >
> > It is a truth value by virtue of its being used in Codd's truth tables.
> > Such use simply does not admit any other interpretation unless of
> > course you want to redefine the very notion of truth table.
>
> Well, perhaps Codd wasn't as crystal clear on that as you are. How do
> you interpret his integer analogy, then?

As a mistake.

>

[...]

> > > Just like you interpret that 0 * NULL is not 0.
> >
> > I do not. I think such interpretation is nonsensical although formally
> > admissible. TRUE OR NULL evaluating to NULL is even more insane.
>
> I think it is nonsense, too. But *given* that traditional strangeness, I
> think TRUE OR NULL being NULL is consistent.

Consistently insane ? Quite a win ...

>
> > As I said earlier, you cannot define any operation using NULL (or any
> > other entity) without NULL( or any other entity) being a member of
> > some set. Unless of course, you want to create a new 'math' where the
> > notion of function is something entirely different from the thing used
> > in the traditional math.
>
> Perhaps; my mind thinks in computer programming functions. You argue
> with theoretical purity, which I normally sympathise with, but I can't
> really see the practical problems here.

Abandoning the fundamental notion of function is not a problem ? OK.

> > > Alternatively, I can compare them using IS NULL.
> >
> > I thought we've already been through that.
>
> So did I, and I though we agreed on it. It seems we have very much
> trouble understanding one another.

The trouble is not with*how* one determines if two truth tables are equal, but rather with the peculiar idea that they can be equal while their components are not. It's, like, weird or what...

>
> > > Like I said, what you just described as sensible: That you can consider
> > > truth tables equal even when they contain NULLs.
> >
> > So on one hand, you state that NULL is not equal NULL in the context
> > of truth values, on the other hand you state that some truth tables
> > containing NULL(s) are equal (" have every property in common"). How
> > do you manage to reconcile these two assertions ?
>
> By being used to SQL. :) Such apparent contradictions crop up everywhere
> in that language; cf. my set operator example. Furthermore, I am
> apparently as sensible as the Oracle and SQL Server designers you
> praised earlier.

As I said before, they give the silly tools to the user because they want to be compliant with the standard, but internally they are smart enough to understand the logical equaivalence notion correctly as evidenced by their optimizer that can transform original query without paying much attention to the nonsense about UNKNOWN being unequal to another UNKNOWN.

>
> I'll say it again: I'm not saying that SQL and SQL-99 are paragons of
> logic and language design, just that they sort of work---so the alleged
> killing of logic may perhaps not be all that serious after all.

It's not that serious because logic is only partially dead and can be resurrected almost entirely by using various tricks. I am just curious on what grounds one might defend such slaughter. 'Uniformity', as a/the reason or defense for such eclectic system, just does not quite cut it.

>
> > The function you so adamantly desire is already there. It's called
> > Kleene's biconditional. You do not need to give up on the simple
> > notion of equality in the context of truth values, you do not need to
> > talk about 'meta' stuff, you do not need to create a new math where
> > NULL is not a member of any set. All you need to do is just to define
> > another logical connective.
>
> Still, the simple notion of equality has been given up in all other
> domains if you consider NULLs values. Why not instead twist the
> definitions slightly so that NULL is not a value, but the name for a
> special state for a variable?

Whatever you call it, you will have to define for 'it' some operations in some domains. Such definition inexhorably will make you include NULL (or its substitute) in the respective domains. Otherwise, your operations won't make any sense.

> If I had my way, "NULL" wouldn't be a
> valid expression. We would just have IS_NULL() and SET_NULL(), and NULL
> as such couldn't possibly show up in a truth table or literal
> expression.

Sounds good, but this approach will almost define NULL out of existence, you can as well just not use it. Would any operation with NULL fail except those three you've defined ? Could you give a couple of examples where such NULL definition might be useful ?
> --
> Jon
Received on Fri Dec 16 2005 - 18:02:25 CET

Original text of this message