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

From: vc <boston103_at_hotmail.com>
Date: 13 Dec 2005 07:43:29 -0800
Message-ID: <1134488609.199682.139210_at_g49g2000cwa.googlegroups.com>


Jon Heggland wrote:
> In article <1134398244.343117.214050_at_g44g2000cwa.googlegroups.com>,
[...]
> > > > > I still don't understand what the 'lethal' problem is. Can you give an
> > > > > example?
> > > >
> > > > Evaluating w=w to w where = denotes equality.
> > >
> > > That may be the *cause* of a problem. What is the *problem*?
> >
> > Not being able to say whether two truth table for arbitrary expressions
> > are in fact the same. Did not I say that, like, a dozen times ?
>
> Wouldn't it be easy to fudge it using some IS NULL construct?

How ?

>And when

> do you need to do this anyway in a database context? I am looking for an
> scenario as concrete as my 3VL capital knowledge example; that's why I'm
> not satisfied with what you've said a dozen times before.
>

OK. In your system (I cannnot call it logic), where truth tables cannot be judged equal, you cannot prove anything (since each derivation step is supposed to be truth-preserving and you cannot determine that). It may be OK in your system if it's never supposed to be used used for any sort of deduction, though.

Similarly, no two 'logical' expressions can be considered equivalent. You cannot show, for example, this:

A & B <=> B & A

or even that:

A<=> ^(^A)

Almost every 'logical' expression in your system is unique and underivable from other expressions, the fact that has profound implication for formulating and understanding queries.

The optimizer cannot do much with your queries as it cannot rearrange and transform predicates to achieve better performance.

> > > And for what it's worth: The SQL-99 standard seems to have interpreted
> > > Codd the way I do. But I'm not sure if that weakens or strengthens my
> > > position. :)
> >
> > Codd, at least, never called a contraption with three wheels a
> > bicycle.
>
> Well, it's just a name. Just a language design thing, no logical flaw.

It's not "just a name" because 'Boolean' already has the established default interpretation of dealing with a domain of *two*, not three or five elements. You are free to override the meaning of course, by saying something like 'Henceforth, let's use the label 'two' for something which in fact consists of three elements", but it hardly makes communicating your ideas easier.

>

> > They also define a number of predicates, like '=', '>' over
> > their 'Boolean' domain not even realizing that '=' is in fact Kleene's
> > biconditional/equivalence, but they probably never heard about the
> > fellow so it's hard to blame them.
>

> I don't see why '<' is something to get worked up about. Why is it bad
> to define some (arbitrary) order for truth values?

Because, they call something for which the name like a 'logical connective' or a 'logical operation' has been used for ages. In math, a predicate domain has traditionally been anything but it's co-domain (the set of truth values). Would you find it enlightening if a primary school teacher said "for whole numbers, we have two operations, addition and subtraction, and also two mappings called multiplication and division" ? However, it's not as bad as denying truth table equaility.

>As for defining a
> strange '=', they do so for the other domains

"Other domains" do not have logical connectives, there, we just *extend* the existing naturally defined predicates, not create new unusual ones (No logic I am familiar with deals with predicates over the domain of truth values, and why would it ?).

>(and I think Codd does it

> too), and Codd's article doesn't mention Kleene either. It seems strange
> if Codd didn't bother to correct the SQL committee if it got things so
> very wrong.
> --
> Jon
Received on Tue Dec 13 2005 - 16:43:29 CET

Original text of this message