Path: utzoo!censor!geac!torsqnt!news-server.csri.toronto.edu!cs.utexas.edu!sdd.hp.com!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 (long) Message-ID: <32762@netnews.upenn.edu> Date: 13 Nov 90 14:17:54 GMT References: <694@creatures.cs.vt.edu> <32358@netnews.upenn.edu> Sender: news@netnews.upenn.edu Reply-To: aaron@grad1.cis.upenn.edu (Aaron Watters) Distribution: na Organization: University of Pennsylvania Lines: 68 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. Chuck Phillips writes... =_Both_ B and H =assume the existence of a unique (follows from the use of "the king" as =opposed to "a king") king of North America. To make explicit the implicit: = =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. = =It is true that B2 and H2 cannot both be true. Further, since B1=H1=FALSE, =it follows (B1 and B2)=(H1 and H2)=B=H=FALSE. ( I would dispute this restatement. In logic you cannot in general replace a constant with an existential statement in this manner. To my mind 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. With reference to pascal if I have a null reference p to a record which contains a field `bald' the expression `p^.bald' cannot be correctly thought to be true or false (or even unknown). It can only be treated as an error. In logic, if I am studying a semigroup S and ask `is the left identity equal to the right identity' when S has no right identity the value of the statement cannot be correctly treated to be true or false while maintaining consistency. In fact the structure (S, operation, left-id, right-id) together with axioms cannot be consistently encoded in a binary truth valued first order model (directly). =Even if you negate both statements: = =not B: There is no bald king of North America. =not H: There is no non-bald king of North America. I don't think these are reasonable restatements either. As I said not B = H, not H = B. Beyond this, I geuss I'd agree with the bulk of the rest of your entry. What you seem to be suggesting is that we should disallow constants (references, objects) with no referent. The question becomes whether users will tolerate such a restriction. I think in the context of object oriented databases they would find such a restriction irritating to say the least. Consider a query about a circular list L of integers Query: Is the first entry of the list less than 3? Answer: No. Don't you think it would be better to get `error' signifying that there is no such first entry? -aaron.