IL has “proof by negation” (corresponding to lambda) and “derive a contradiction” (corresponding to application) constructs, and a type system which cleanly separates eager values from lazy (possibly nonterminating) value-thunks.

]]>– – – A to avoid concatenating “–” into a single line! Jakob ]]>

The proof, of course, is:

lambda x:—A. lambda y:A. x (lambda z:-A. z y).

So, we see that double negation elimination (which is equivalent to the non-constructive principle A v -A) is provable constructively on negated formulae. This fact is at work in the negative translation from classical logic into constructive logic by Kolmogorov, Gödel, Gentzen.

Yours

Jakob

I agree with everything you’ve now said, but that is not how I read the post, which contains statements like “of course one proves negative statements by contradiction!” (paraconsistency may require something stronger), “It is entirely a matter of intellectual honesty” (only if intellectually you accept the premise), “’oh that’s so cheap.’ Precisely.” (yet no cheaper than accepting non-constructive refutations) and “anyone is free to ignore the distinction for the sake of convenience” (or to make it up for the sake of convenience).

I guess that what bothered me was the tone, which I read as judgmental and as expressing an attitude towards logic that Wittgenstein said invites needless dogmatism and dispute (he was referring to positions held by some logicians regarding the foundation of mathematics). There’s already more than enough needless dogmatism and dispute over formalism in CS as it is.

I think that the important point about the distinction between proof by contradiction and a proof that ends in contradiction in constructive settings could be made more, well, constructively, by pointing out that there are important circumstances where we wish to make the distinction and important circumstances where we wish not to make it (and it doesn’t mean we’re ignoring it, just that it’s not there in those cases).

]]>No. Again, it is not an argument. The only way to compare classical and constructive mathematics is to only assume what is common to both. It just happens that what is common to both from a formal perspective is constructive mathematics. Thus, that is our language of choice for this discussion.

The distinction between constructive and nonconstructive proof is real in the sense that constructive mathematicians (and many conventional mathematicians) make a distinction. They may well be arbitrary in making that distinction, but that is not the subject of this discussion. The fact that the distinction is made by constructive mathematicians means that the distinction is already there, and we are just trying to work out precisely what they mean. Specifically, they don’t mean that no proofs can end at deriving a contradiction.

To continue your analogy, this post is like a post that points out that finitists do have a notion of natural number, contrary to an assumption that they don’t because there are infinitely many natural numbers. It may have have a little section justifying the finitistic approach, but the point of the post is to see what *can* be done finitistically, compared to what can be done classically, say. It is an investigation (under the assumptions of finitism), not an argument.

]]>I’m not saying you or the post are making an argument for constructivism, but that you’re begging the question by arguing that there is a “real” distinction between a direct and an indirect proof, and I think I can prove it:

A constructivist would say that a proof by contradiction in cases where LEM can be proven (say, on finite sets of naturals) is a constructive proof. He may even call it a direct proof, and give a nice reason why it’s so. It all really comes down to your views on infinity. A finitist, whether one of the constructivist or the formalist persuasion believes that there is a “real” difference between direct and indirect proof in infinitary settings (the formalist calls that distinction one between a “real” and an “ideal” proposition or proof). A Platonist, on the other hand, would say that there really is no distinction, and the same excuse you’d give for LEM in a finitary setting applies equally in infinitary settings as well. A Platonist would say that you’re being a hypocrite for drawing the distinction only in the case of proving existentials but not in the case of refuting universals, and you’re being “intellectually dishonest” by ignoring the distinction between a construction of a specific counterexample and merely “hinting” that one exists.

The Platonist would say that there is no real difference which one is then free to ignore, but an artificial distinction that you’ve made up at some arbitrary line that you’ve drawn at the computable. He would say that there is no “real” reason to draw the line there, because if there were, why not point out the “real” difference between constructive proofs of propositions with an intractable descriptive complexity and a constructive proof of tractable propositions as an ultra-finitist would? That is a difference which you’re then free to ignore but it would be intellectually dishonest to say it doesn’t exist.

]]>