Let me start by saying that I’ve had it up to here with logic. I learned it just fine during Math A back in 9th grade, and the “Discrete Mathematics for Computer Science” course (a requirement for my ill-fated computational linguistics minor) I took last year was plenty refresher. Now I’m taking two logic courses this semester, and I’m relearning the same thing—twice! Well, actually, one of them is supposed to be Semantics and Pragmatics, but it’s pretty much all been logic up until this point. We don’t actually have a Semantics textbook; we’re using Logic in Linguistics. But I’m also taking Modern Logic (PHIL 109), at the insistence of my “advisor”. And that’s where my story starts.
Unfortunately, perhaps, this Modern Logic course is a philosophy course, rather than a linguistics or computer science course. That means it’s run out of the philosophy department and, in my case, taught by a philosophy grad student. This particular grad student has rubbed me the wrong way since the first day of class, as he puts on an air of “I know everything and you’re all idiots”. (Unless, of course, he’s saying something about philosophy or philosophers; then you’re expected to know what he’s talking about. Which I don’t.) But there are at least a couple of students in the class (besides me) that have brains that function just fine and who are able to understand and discuss the subject matter we are learning. And the discussion does come up—though it doesn’t last.
And that leads me to my story. Today, we had a quiz in class. Once the quiz ended, we went over it as a group. The first question on the quiz had you create, basically, this:
- You have cake or ice cream for dessert.
- If you have cake for dessert, you may not have ice cream.
- You do not have ice cream.
- You have cake.
The second question had you translate that into formal notation. With P = “You have cake for dessert” and Q = “You have ice cream for dessert”, it comes out like this:
All of this is fine and dandy, and I wasn’t arguing with it. (It was, after all, what I put on my quiz.) However, when the instructor wrote the English version of (2) on the board, he wrote “cannot” instead of “may not”. I don’t remember who commented on the difference, but I raised my hand and stated that it would have been better (i.e. less ambiguous) if “cannot” had been written on the quiz instead of “may not”, because “may not” has the possibility of being interpreted in two different ways. One is the way he intended, specifically ¬Q. But the other is one that would have made (2) essentially equivalent to (1). That is, because of “may”, there would have still remained the possibility of having ice cream for dessert, even if you had cake for dessert. Formally, there would be a possibility, however remote, to translate English (2) into P→(Q∨¬Q).
He didn’t particularly care for this assertion. This surprised me, as I was taking it for granted—the reason I raised my hand was to point it out and suggest that “cannot” was the better option; I didn’t expect him to disagree that the possibility existed. But he did. And he was quite firm about it. He wasn’t at all open to the possibility that I could be right. He didn’t even consider it, except to try to explain to me how I was wrong.
But I knew I was right. I’ve had plenty of experience in this area. In addition to my pet peeve of people writing “can not” when they mean “cannot” (they don’t mean the same thing!), words such as MAY, SHOULD, and MUST are important in the world of Internet standards. Most standards out there today, including those by the W3C, start off by saying that they intend to use such words as defined by RFC 2119 (BCP 14). Here’s what it says for the definition of MAY:
MAY This word, or the adjective "OPTIONAL", mean that an item is truly optional. One vendor may choose to include the item because a particular marketplace requires it or because the vendor feels that it enhances the product while another vendor may omit the same item. An implementation which does not include a particular option MUST be prepared to interoperate with another implementation which does include the option, though perhaps with reduced functionality. In the same vein an implementation which does include a particular option MUST be prepared to interoperate with another implementation which does not include the option (except, of course, for the feature the option provides.)
Thus, the word “may” indicates that something is optional. In the case of “may not have ice cream”, it means that, according to the standard, it is optional for you to not have ice cream. When combined with the common meaning of “may not” that forbids, you have two possible options: [ [ may ] [ not have ice cream ] ] or [ [ may not ] [ have ice cream] ]. The former means that there is a possibility that you will have ice cream (and also that you will not have ice cream); the latter means you are forbidden from having ice cream.
To combine this issue with the “cannot” vs. “can not” one, you have these four options:
- You can have ice cream.
- You cannot have ice cream.
- You can not have ice cream.
- You cannot not have ice cream.
Of these, sentence (1) means you are allowed to (or have the ability to) have ice cream; (2) means you are not allowed to (or do not have the ability to) have ice cream. Sentence (3) is letting you know that no one is forcing you to have ice cream; sentence (4) tells you the exact opposite (or someone is trying to express that they really want you to have ice cream). Thus, sentence (2) here corresponds with the colloquial usage of “may not” that forbids (¬Q); sentence (3) corresponds with the other possibility I suggested ((Q∨¬Q)).
My raising of this matter caused quite a twitter on Twitter among my colleagues, and Twitoaster has attempted to keep track of it for you here. As my tweeps have noted, this is an issue of both prosody and scope.
This type of ambiguity and confusion has gotten other people in trouble before, too. Take a look at Ben Zimmer’s On Language column about the issue, as well as some corresponding Language Log articles here and here.