Path: utzoo!attcan!uunet!vtserf!creatures!csgrad!holliday From: holliday@csgrad.cs.vt.edu (Glenn Holliday) Newsgroups: comp.databases Subject: Re: errors and 4 valued logic Summary: logic vs practical dbs Keywords: logic, truth values Message-ID: <694@creatures.cs.vt.edu> Date: 6 Nov 90 01:17:30 GMT Sender: usenet@creatures.cs.vt.edu Reply-To: holliday@csgrad.cs.vt.edu (Glenn Holliday) Distribution: na Organization: Virginia Tech Computer Science, Blacksburg, VA Lines: 40 Chuck Phillips writes: >Clairification: A statement requiring the existance of the non-existant to >be true, is simply false, not an error. However, a domain violation _is_ >an error. (e.g. "I am green years old.") while aaron@grad2.cis.upenn.edu (Aaron Watters) argues >`the king of North America is bald' is error. >if ``The king of North America is bald'' is false then we infer >that ``The king of North America has hair'' must be true, right? >... My favorite >version of 4-valued logic resolves this difficulty by calling >both statements `overdefined' or `erroneous.' >PS: I also claim that `I am green years old' can reasonably be >treated as false. I think this is another example of Neat vs Scruffy, otherwise known as "What does logic _mean_" vs "How does the database work?". The examples can be logically represented to model any domain you like. Whether you want them to be false or errors depends completely on what domain you define. If any object can be in the domain, you can infer true statements or fail to infer them, which makes them false (_if_ you define your logical system to give that meaning to false!). On the other hand, practical database systems want to work with simple domains and decide efficiently whether to allow a statement or query. Calling either example an error is legitimate as long as your database system behaves consistently and tells the user why it rejected the construct. To call both of these false, your database wants rules that say 1. The domain for every object/entity must be completely defined. 2. Any purported value which does not fall within the appropriate domain is reported as an error. 3. Any reference to a value which does not exist (but would fall within an appropriate domain if it did exist) is reported as an error. Of course, much of the hue and cry over null vs empty, etc is about the best way to implement these rules. Glenn Holliday holliday@csgrad.cs.vt.edu