Re: NULLs: theoretical problems?
Date: Tue, 28 Aug 2007 03:40:37 -0000
Message-ID: <1188272437.208915.202690_at_22g2000hsm.googlegroups.com>
On 27 aug, 23:30, "V.J. Kumar" <vjkm..._at_gmail.com> wrote:
> Jan Hidders wrote:
> > On 27 aug, 01:46, "V.J. Kumar" <vjkm..._at_gmail.com> wrote:
> > > It should be blindingly obvious that I meant your DEF logic. I'll say
> > > it again: does not 'def(x) and f(x)'' commute in your logic if def(x)
> > > is understood as a definedness predicate and if the answer is "no",
> > > why it doesn't commute ?
>
> > Because the result of applying commutativity and associativity rules
> > to a formula that is allowed might be a formula that is not allowed.
> > For example, 'def(x) : x and y' might be rewritten to 'x and (def(x) :
> > y)'.
>
> Ok, I see your point. Technically, in the def logic , 'x or true' is
> undefined if x is undefined because you did not provide a line in the
> OR truth table for this case. Does it sound right ?
Yes.
> Had you provided
> the line, then def(x) interpretation as a predicate wouldn't be a
> problem, commutativity etc. would work as it does in the classical
> logic and the logical formulae evaluation would have same as it is
> with 'def(x)' construct, and expressivity would probably be the same
> too unless I am missing something again.
Indeed, expressivity stays the same.
> A natural question arises what is the def construct ? Is it a
> classical logic extension ?
Depends on your definition of 'classical logic exension'. :-) Not in the normal sense of the word because a new type of quantifier is added.
> The above is a mere technicality of course. What really bothers me is
> the fact that I really do not see much gain in comparison to using the
> three valued SQL logic.
Summarized: It avoids null values, a third truth value and makes dealing with undefined fields more explicit. For all the normal constructs found in classical logic the usual laws hold.
> In addition to the de facto loss of the 'x
> or not x' tautology when x is undefined
Any 3VL you know that has this "tautology"? As you already yourself indicate it is highly debatable whether this is a tautology at all, so I'm not sure why you bring it up.
> and we are forced to have the
> 'def(x) :(x or not x)' which evaluates to 'false' ,
That is not the only option. If you interpret the formula 'x' as 'x is defined and true' then the proper corresponding formula in DEF logic would be '(def(x):x) or not(def(x):x)' which of course evaluates to true. That you have these two options is a feature of the logic: it allows you to be more explicit about how to deal with undefined values.
> we also lose the 'x or true' tautology for undefined x. While we can put forward
> some explanation for the former as Lukasiewicz and friends did, I do
> not see any intuition for the latter.
There isn't really, except that allowing it would make the rules for what is and is not allowed more complicated. And there doesn't seem to be a great need for that because what you probably wanted to say with that formula can be expressed anyway as '(def(x):x) or true' which is a tautology in DEF logic.
> There are also some negative
> practical implications with the blanket evaluation of the formulas
> containing at least one variable that may happen to be undefined to
> 'false', but we'll talk about that next time.
No doubt. :-)
- Jan Hidders