# Bug in the DTD? (Three Valued Logic and Elimination Necessary?)

From: John Stracke <francis@netscape.com>
Date: Tue, 14 Jul 1998 10:48:10 -0700
Message-ID: <35AB99DA.6260178E@netscape.com>
To: "'DASL'" <www-webdav-dasl@w3.org>
```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 13:47:51 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Sunday, 22 March 2009 03:38:04 GMT