I am partial to the view that "if p, then q" has the same truth conditions as "not-p or q", but there is pragmatic stuff going on. But after thinking hard about Field's remarks on the implications of the Montague Paradox for certain solutions to the liar paradox (in a Beall anthology), I've been drawn to think more about an odd but significant difference between "If p, then q" and "not-p or q".
Here is the less striking way to show the difference. Consider:
- (x)(Human(x) → Mortal(x))
- (x)(~Human(x) or Mortal(x))
- Human(Seabiscuit) → Mortal(Seabiscuit)
- ~Human(Seabiscuit) or Mortal(Seabiscuit)
Here is another way to see the difference. Some people think that sentences like "x is F" are nonsense (gloss: don't express a proposition) when x fails to be of a certain kind for which attribution of Fness makes sense. These people will, for instance, deny that "The chair is true-or-false" makes any sense. (I am inclined to think it makes perfect sense, but is false; chairs aren't propositions and don't express propositions, so they are neither true nor false.) Now, plausibly, if "q" doesn't make sense, neither does: "r or q". That's just nonsense. So, on such a view:
- This chair is true-or-false or this chair is not a proposition
- This chair is not a proposition or this chair is true-or-false.
- If this chair is a proposition, this chair is true-or-false
For another illustration of this last point, go back to (1) and (2). The quantification seems to be unrestricted, including such entities as numbers and properties. But it is not clear that "Mortal(7)" makes sense. If not, and if disjunction requires both disjuncts to make sense, then (2) is in trouble. But (1) is just fine.
In a lot of programming languages, logical disjunction operators are actually asymmetrical. This means that if you do something like "f(x) || g(x)" ("||" being disjunction) in perl or C, the function g(x) is not evaluated when f(x) turns out to return truth. The disjunction operator shortcuts in this way. As a result, you can do things like "x == 0 || y/x == z" without worrying about the fact that the second disjunct is non-sense if x is zero, because the second disjunct is unevaluated when x is zero. But in human language, I suspect that there is no similar shortcutting in disjunction. Apart from implicatures, there is a symmetry in disjunction. But, I suggest, there is such a shortcutting in conditionals.
But I don't know exactly how far the shortcutting in conditionals goes. I am not sure I want to say:
- If the sky is green, then **##^^).
- The sky isn't green or **##^^).