theory tut1 imports Main begin (* Exercise 4 *) lemma "(R \ P) \ (((\R \ P) \ (Q \ S)) \ (Q \ S))" apply (rule impI) apply (rule impI) apply (rule impI) apply (cut_tac P="R" in excluded_middle) apply (erule_tac P="\ R \ P" in impE) apply (erule disjE) apply (erule disjI1) apply (erule impE) apply assumption apply (erule disjI2) apply (erule_tac P=Q in impE) apply assumption apply assumption done (* Alternative proof, without the cut rule but with ccontr, which is an alternative to exluded_middle *) lemma "(R \ P) \ (((\R \ P) \ (Q \ S)) \ (Q \ S))" apply (rule impI) apply (rule impI) apply (rule impI) apply (rule ccontr) apply (erule impE) apply (rule ccontr) apply (erule impE) apply (rule disjI1) apply assumption apply (erule impE) apply assumption apply (rule notE) apply assumption apply assumption apply (erule impE) apply (rule disjI2) apply assumption apply (erule impE) apply assumption apply (erule notE) apply assumption done (* Exercise 5 *) lemma one: "(P \ (Q \ R)) \ ((P \ Q) \ (P \ R))" apply (rule impI) apply (rule impI) apply (rule impI) apply (erule impE) apply assumption apply (erule impE) apply assumption apply (erule impE) by assumption+ lemma two: "\\P \ P" apply (rule impI) apply (rule ccontr) apply (rule notE) apply assumption apply assumption done lemma three: "(P \ Q \ R) \ ((P \ Q) \ (P \ R))" apply (rule impI) apply (rule conjI) apply (rule impI) apply (rule conjunct1) apply (rule mp) apply assumption apply assumption apply (rule impI) apply (rule conjunct2) apply (rule mp) apply assumption apply assumption done thm ccontr thm classical lemma four: "(\P \ Q) \ (\Q \ P)" apply (rule impI) apply (rule impI) apply (rule ccontr) apply (rule notE) apply assumption apply (rule mp) apply assumption apply assumption done lemma five: "P \ \P" apply (rule disjE) apply (rule excluded_middle) apply (rule disjI2) apply assumption apply (rule disjI1) apply assumption done end