Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!wuarchive!zaphod.mps.ohio-state.edu!unix.cis.pitt.edu!dsinc!netnews.upenn.edu!grad2.cis.upenn.edu!aaron From: aaron@grad2.cis.upenn.edu (Aaron Watters) Newsgroups: comp.databases Subject: Re: errors and 4 valued logic Keywords: logic, error, domain Message-ID: <33148@netnews.upenn.edu> Date: 19 Nov 90 19:28:34 GMT References: <720@creatures.cs.vt.edu> Sender: news@netnews.upenn.edu Reply-To: aaron@grad1.cis.upenn.edu (Aaron Watters) Organization: University of Pennsylvania Lines: 58 Once again we are concerned with the truth values for the following statements B: `the king of north america is Bald.' H: `the king of north america has Hair.' G: `I am Green years old.' I claimed B = not H, B=H=error, G=false. In article <720@creatures.cs.vt.edu> holliday@csgrad.cs.vt.edu (Glenn Holliday) writes: ... > Chuck Phillips (Chuck.Phillips@FtCollins.NCR.COM) also took my >path when he broke [B and H] down into > >>B1: There exists exactly one king of North America. >>-and- >>B2: The king of North America is bald. > >>H1: There exists exactly one king of North America. >>-and- >>H2: The king of North America is not bald. > >Aaron Waters argues [Watters] >>... the noun `the king of north america' does not correspond to >>any existential statement it corresponds >> in logic to a constant >> in pascal (ml) to a pointer (reference) >> in O-O dbs's to an object. > >Exactly! Each of your statements H B and G are not constants. They are >intended to model more than one chunk of information about the objects >"king", "north america", "hair", etc. If you _do_ treat them as logical >constants, then your argument is correct. But I believe they have lost >all meaning if you do that. Well, I didn't say that, I said that `the king of north america' behaved like a logical constant -- NOT like an existential assertion `the king is bald' != `there is a king who is bald' the two statements simply have differing intuitive behaviors. The only way you can enforce the restatement you suggest on a database user is to disallow the first sort of statement... Imagine, if you will, a `fourth generation object oriented database language' where the user writes: let K be any king of north america: (K is an object) if K is not bald print `the king has hair' if K is does not have hair print `the king is bald' endlet. Now I admit that the program is awkwardly written, but I think you would agree that the output `the king is has hair the king is bald' defies the ordinary interpretation of the above pseudocode. I claim that since the code assumes the existence of such a king the let statement should result in a `null' object (no reason to raise an error if it is never used) and the evaluation of `K is not bald' should result in an error. such as > Answer: No [king] is defined on this domain. As you suggest. -aaron