- From: Babich, Alan <ABabich@filenet.com>
- Date: Tue, 14 Jul 1998 11:43:14 -0700
- To: "'John Stracke'" <francis@netscape.com>, "'DASL'" <www-webdav-dasl@w3.org>
AND and OR do not for a complete set of Boolean operators, even for two valued logic. That is, one cannot express all possible binary Boolean operators with just AND and OR. In other words, there are conditions that you can not express. This is a bad thing for search conditions. The following are complete sets of Boolean operators: {AND, OR, NOT}, {NOT, AND}, and {NOT, OR}. NOT appears in all three sets. Alan Babich -----Original Message----- From: John Stracke [mailto:francis@netscape.com] Sent: July 14, 1998 10:48 AM To: 'DASL' Subject: Bug in the DTD? (Three Valued Logic and Elimination Necessary?) John Stracke wrote: > Babich, Alan wrote: > > > (3) For the relational operators >, >=, <, <=, =, !=, > > if either or both operands are undefined, the result is > > the truth value UNKNOWN. > > Um. Math geek time. This says that the result of "1=2/0" is > UNKNOWN. I say it should be FALSE, because 1!=2/0, because > 0*1!=2. > Alan & I have been going back and forth on this one (neither of us has convinced the other); in the process, I started to wonder whether 3-valued logic actually makes a difference. It works out that it does, unless we don't have a NOT in our grammar. (Explanation below.) I figured we probably did, but I checked the Draft, and it turns out that 01 is unclear on this point. The DTD for simplesearch doesn't define a "not" element, but the definitions of "where", "and", & "or" refer to one; further, the explanatory text does cover it (section 7.10). An omission in the DTD, I suppose? (What follows from here is math geekery; if we have a NOT, it's unimportant.) As for why 3-valued logic wouldn't be necessary without NOT: suppose. the only logical operations are AND and OR. Then, for any truth value p, we have: p AND UNKNOWN = UNKNOWN p OR UNKNOWN = p A row is not in the result set if the query evaluates to UNKNOWN But this is exactly the same behavior as FALSE: p AND FALSE = FALSE p OR FALSE = p A row is not in the result set if the query evaluates to FALSE Therefore, if we didn't have NOT, then we could just use FALSE in place of UNKNOWN, and get the same results. -- /====================================================================\ |John (Francis) Stracke |My opinions are my own.|S/MIME supported | |Software Retrophrenologist|=========================================| |Netscape Comm. Corp. | E pui muove! | |francis@netscape.com | -- Galileo | \====================================================================/ New area code for work number: 650
Received on Tuesday, 14 July 1998 14:46:15 UTC