The law of the excluded middle says that for every x, either x or not x is true. Proof by contradiction says that if given not x you can derive a contradiction, then x is true.
The law of the excluded middle says that for every x, either x or not x is true. Proof by contradiction says that if given not x you can derive a contradiction, then x is true.
The first controversy occurred early in Hilbert’s career and concerned his vigorous use of the "law of the excluded middle" (proof by contradiction).
I don't see how you can interpret that as not implying that the law of the excluded middle and proof by contradiction are not one and the same thing.
if you do not accept the law of excluded middle than proof by contradiction ceases to be a valid proof method.
I don't believe that this is true, because that would imply that you can derive the law of the excluded middle from proof by contradiction.
X and (not X) == False for any sentence X
If you start with a sentence y, and then via the proof methods arrive at a sentence (not y), this is the same as saying
(y -> (not y)) == True
Which is equivalent to:
((not y) or (not y)) == True
Which is equivalent to:
(not y) == True
Now, if you accept the law of non-contradiction this implies that:
y == False
If you do not accept it, y can both True and False at the same time and the proof method is not valid anymore. Hence the proof method of reductio ad absurdum, or "proof by contradiction" as you call it, is valid if and only if this law holds.
For instance, paraconsistent logic has the law of excluded middle but not ex falso quodlibet.
https://en.wikipedia.org/wiki/Principle_of_explosion
https://en.wikipedia.org/wiki/Paraconsistent_logic
--
addendum
Specifically, notice that in classical logic the axioms law of excluded middle and law of non-contradiction can be substituted for one another (they are equivalent). However, that is not the case for all semantics.
(x->(~x))->(~x)
Law of excluded middle is:
x | ~x
Proof follows:
(x->(~x))->(~x)
From definition of implication is equivalent to:
(~x) | ~(x->(~x))
From definition of implication is equivalent to:
(~x) | ~((~x) | (~x))
From de Morgans law is equivalent to:
(~x) | (x & x)
From identity law is equivalent to:
~x | x
I am not a logician and I might not have gotten all the details right, but I certainly think this is possible. I also have quite a good proof by authority ;) in form of an article by Alonzo Church:
http://www.ams.org/journals/bull/1928-34-01/S0002-9904-1928-...
Actually, at first I thought it was incorrect because you used De Morgan's law, which I mistakenly thought was invalid in intuitionistic logic. However, I looked it up and apparently only ~(p & q) |- ~p v ~q is invalid in IL.
It's possible to create reductio ad absurdum in Coq:
Definition reductioAdAbsurdum (X:Prop) (f : (X -> (X -> False))) (x:X) : False := f x x.
But not the law of the excluded middle.Edit: It's much clearer in Idris:
reductioAdAbsurdum : (x -> (x -> _|_)) -> (x -> _|_)
reductioAdAbsurdum f x = f x xIn propositional logic, material implication is a valid rule of replacement which is an instance of the connective of the same name. It is the rule that states that "P implies Q" is logically equivalent to "not-P or Q".
Nice flame, eot.
Arguably, the common sense definition of 'A -> B' is simply modus ponens. That is 'Given A and A->B, it follows that B'. It's then no longer obvious that A -> B is equivalent to ~A v B.
Indeed, implication in IL is different from material implication even though IL has modus ponens.
((~x) -> x) -> x
or: ((x -> _|_) -> x) -> x
Which is not constructible in Coq/Idris.* although there are logics in which this does not hold, but that's probably not what you are talking about here
deriveExcludedMiddle : ((x:Type) -> ((x -> _|_) -> x) -> x) -> Either y (y -> _|_)
So, perhaps I am relying on one of those logics where it doesn't hold. LEM = (x:Type) -> Either x (x -> _|_)
DN = (x:Type) -> ((x -> _|_) -> _|_) -> x
We first constructively prove not not LEM: notnotLEMproof : (x:Type) -> ((LEM x) -> _|_) -> _|_
notnotLEMproof x f = f (Right (\a -> f (Left a))
Now we can use double negation to obtain a proof for LEM: DNimpliesLEM : DN -> LEM
DNimpliesLEM dn x = dn (LEM x) (notnotLEMproof x)
I hope this is correct, since I don't know Idris syntax. If Idris supports implicit parameters, you would not need the x's: notnotLEM f = f (Right (\a -> f (Left a))
DNimpliesLEM dn = dn LEM notnotLEMproof LEM : (x:Type) -> Type
LEM x = Either x (x -> _|_)
DN : (x:Type) -> Type
DN x = ((x -> _|_) -> _|_) -> x
notnotLEMproof : {x:Type} -> ((LEM x) -> _|_) -> _|_
notnotLEMproof {x} f = f (Right (\a => f (Left a)))
DNimpliesLEM : ((x:Type) -> DN x) -> LEM y
DNimpliesLEM {y} dn = dn (LEM y) notnotLEMproofI find the last one slightly clearer if you change the argument order:
DNimpliesLEM : ((x:Type) -> DN x) -> ((y:Type) -> LEM y)
DNimpliesLEM dn y = dn (LEM y) (notnotLEMproof y)
Although with the original formulation you could prove the slightly stronger version: DNimpliesLEM : (x:Type) -> DN (LEM x) -> LEM x
DNimpliesLEM x dn = dn (notnotLEMproof x)
so that you don't need DN z to be true for all z, but just on the z you need (i.e. z = LEM x). It was an interesting exercise, and I learned a lot. First I tried proving (((x:Type) -> LEM x) -> _|_ ->) _|_ to then apply double negation directly to this, but this is actually not possible (as far as I can see). The double negation needs to be inside the quantifier.Maybe you can even write it simply like this with implicit parameters:
DNimpliesLEM : DN (LEM x) -> LEM x
DNimpliesLEM dn = dn notnotLEMproofAnd shouldn't the quantification over x:Type be separately over each part?
I wanted:
(forall x. ((~x) -> x) -> x) -> (forall y. y \/ (~y))
Rather than: (forall x. (((~x) -> x) -> x) -> x \/ (~x))