On Jun 14, 9:50 pm, Steven D'Aprano <ste...@remove.this.cybersource.com.au> wrote: > On Sun, 14 Jun 2009 19:14:10 -0400, Terry Reedy wrote: > > Steven D'Aprano wrote: > > >> So-called "vacuous truth". It's often useful to have all([]) return > >> true, but it's not *always* useful -- there are reasonable cases where > >> the opposite behaviour would be useful: > [...] > > It seems to me that the absurd conclusion implied by the theorem > > invalidates the theorem rather than supporting your point. > > I wouldn't go so far as to say the vacuous truth theorem ("empty > statements are true") is invalidated. The Wikipedia article discusses > various reasons why it's more correct (or at least more useful) to treat > vacuous statements as true: > > http://en.wikipedia.org/wiki/Vacuous_truth > > But it's not without difficulties -- however those difficulties are > smaller than those if you take vacuous statements as false in general. snip
Those difficulties are pretty gaping. I would start by dividing the natural language 'use cases' of 'if' statements into imperative and declarative. Declarative: If it's raining, it's cloudy. In this case, the assertion is meant to convey a general, non- concrete, observation trend across space and time. Its content is a claim of 100% correlation between two statuses of the real world. Imperative: If you're out of bread, go buy some. Here, the speaker is in a position of authority over the audience, who will be following his/er commands, and acting under the speaker's authority. The speaker is meaning to convey conditional instructions, for a possible circumstance. There is no component of observation or assertion. We see this distinction in programming too. Is the user merely asserting a relation, or defining a procedure? Implies( Raining( x ), Cloudy( x ) ) or if OutOfBread( x ): BuyBread( ) The 'if' statement is counterfactual in its native environment. As such, natural speakers never use it in vacuous cases, and it's not naturally defined. In a mathematical (ideal) environment, its semantics are artificially constructed like any other math predicate, and proofs involving it will define its vacuous case, or fail. -- http://mail.python.org/mailman/listinfo/python-list