• I got an email suggesting somone had misinterpreted my comment here in a strange way, so I thought I should clafify.

    L' Eomot Inversé (8/23/2013)


    Hugo Kornelis


    (Oh, one more thing - the example af the start of your post painfully reminded me of the fact that the current version of the ANSI standard for SQL actually defines a data type for truth values. They call it boolean (shudder!), and even explicitly specify that the truth value "unknown" and the situation where a truth value is missing should both be represented by the null mark (shudder even more!).

    I agree with your first shudder. Boolean logic is not 3-valued, so calling this type boolean is just plain silly. Your "shudder even more" I can't agree with - what else should one do when the value of a so-called Boolean is not known in the database? Apart from the name, there's nothing wrong with this type.

    What I meant was not that the only unmarked values in the domain (type) should be 'TRUE'and 'FALSE'; that would be a genuine boolean type. A type representing a three valued logic should have 3 unmarked values: 'TRUE', 'FALSE', and 'NEITHER' (and preferably not be called BOOLEAN). I may have misunderstood Hugo, and misread his statement of what's in the current ANSI standard (of which I don't have a copy, so I didn't check there), and the message I received indicated that it's author though that Hugo was saying exactly that, and that the standard has only two non-null values. Looking at Hugo's words again, I see that it probably does mean that and not the meaning I commented on. If so he and I agree that the type can't represent a three valued logic, but disagree that it's inappropriately named - it's a clean representation of a Boolean two-valued logic; and the idea that it could be used to represent the truth values of a three-valued logic is most defintely a cause to shudder hard, an utterly horrible confusion of levels: just the opposite of what my original comment said. To say that I know that a truth value is known and is neither TRUE nor FALSE is very different from saying that I don't know what that truth value is, because in a three valued logic there is only one value that is neither TRUE nor FALSE; in fact the two statements contradict each other.

    I'll have to see if my local library can get me a copy of the standard, so that I can know for sure whether ANSI was that incompetent or not. I think the reason I originally interpreted Hugo's words as I did was that I didn't imagine that ANSI could have got it that wrong - far worse than a naming error. It is the sort of error that would be amazing if committed by someone who had taken just the first couple of lectures on teh varieties of logic used in mathematics, or even just read a 1 sheet of A4 introduction to constructive mathematics.

    Tom