Re: Undefinedness

From: JOG <>
Date: Thu, 22 Nov 2007 09:56:15 -0800 (PST)
Message-ID: <>

On Nov 21, 9:50 pm, Marshall <> wrote:
> On Nov 21, 5:34 am, JOG <> wrote:
> > Word up CDT.
> Hey homes. 'Sup?

Er...yo, shizzle? Nope, I'm afraid that's it, i've run out of street lingo already ;)

> > How the devil are you all?
> Damn well, thanks. You?

Tip top. Getting married, and thats turning out to be a ridiculous amount of work, but there you go. (let me preempt any cries of "don't do it you eejut" in advance).

> > What if I deigned to create a simple 'adults' subset of this set of
> > propositions, by creating a predicate that only returned the elements,
> > p, which contained an age attribute greater than 18. Could I state
> > this as (where E signifies set membership):
> > Adults := { p E R | EXISTSx ( x > 18 && (Age, x) E p ) }
> > My question obviously hinges around Harry's missing age attribute. In
> > this case would the EXISTSx (...) part of the set's intension simply
> > return a FALSE, or will I end up in the quagmire of 3VL with an
> > UNDEFINED? My instinct is that I am still in 2VL given there is no
> > null floating about, but since the recent, excellent discussions of
> > Jan's DEF operator, and having delved into beeson's logic of partial
> > terms, I am not at all confident.
> > Any comments are much appreciated, and regards to all, Jim.
> <insert my usual disclaimer about any such question depending
> on the semantics of the system under discussion.>
> I'd say it's the first one.
> Some offhand thoughts:
> I believe this example is isomorphic to Jan's DEF constructor.

That was my hope. If I could get the same functionality without introducing a new operator, well that seemed like a worthwhile goal.

> You can think of any function as data instead of code. So you
> could remap EXISTS in your example into data. Here, I use
> _ as a "don't care" value.
> R := { {(Name, Tom), (Age, true, 42)},
> {(Name, Dick), (Age, true, 16)},
> {(Name, Harry), (Age, false, _} }
> You can decompose this in to two relations, and make Age
> an optional attribute using the usual technique of having the
> Age table use a foreign key to the Name table as a primary
> key. (6NF?) In which case, you can see that the Age table
> is then a table of ages of people for whom we know their
> age. This brings us right back to David's response, and the
> importance of the CWA. So the best query we can do is ask
> what people do we know to be adults; we cannot ask who the
> adults are among the people we know. It's not just that we
> can't get the answer; we can't even ask the question, because
> there's no way to write that query.)

CWA confuses me... in an RDBMS does it merely apply to a truth statement about a propositions existence, or directly as to whether the content of that proposition is true? If I decomposed to 6NF say, and hence omitted a tuple for harry's age, woudn't an RDBMS deem harry to have no age at all, rather than stating it just doesn't have a proposition about the matter? Someone straighten me up.

It seems that it might be nice to have a rule setup as a virtual relation that everyone who is a person has an age, whether the db knows what that is or not. Perhaps something as simple as: HasAge := { p | p E People }

> Marshall

Regards, J. Received on Thu Nov 22 2007 - 18:56:15 CET

Original text of this message