theory a1 imports Main begin lemma "((A \ B) \ C) \ A \ (B \ C)" apply (rule impI) apply (erule disjE) apply (erule disjE) apply (rule disjI1) apply assumption apply (rule disjI2) apply (rule disjI1) apply assumption apply (rule disjI2) apply (rule disjI2) apply assumption done lemma "(A \ A) = (A \ A)" apply (rule iffI) apply (rule conjI) apply (erule disjE) apply assumption apply assumption apply (erule disjE) apply assumption apply assumption apply (erule conjE) apply (rule disjI1) apply assumption done lemma "(A \ B \ C) = (A \ B \ C)" apply (rule iffI) apply (rule impI) apply (erule conjE) apply (erule impE) apply assumption apply (erule impE) apply assumption apply assumption apply (rule impI) apply (rule impI) apply (erule impE) apply (rule conjI) apply assumption apply assumption apply assumption done lemma S: "(A \ B \ C) \ (A \ B) \ A \ C" apply (rule impI) apply (rule impI) apply (rule impI) apply (erule impE) apply assumption apply (erule impE) apply assumption apply (erule impE) apply assumption apply assumption done lemma "(A \ \ B) = (B \ \ A)" apply (rule iffI) apply (rule impI) apply (rule notI) apply (erule impE) apply assumption apply (erule notE) apply assumption apply (rule impI) apply (rule notI) apply (erule impE) apply assumption apply (erule notE) apply assumption done lemma "((A \ \ B) \ (B \ \ A)) = (A = (\ B))" apply (rule iffI) apply (rule iffI) apply (erule disjE) apply (erule conjE) apply assumption apply (erule conjE) apply (erule notE) apply assumption apply (erule disjE) apply (erule conjE) apply assumption apply (erule conjE) apply (erule notE) apply assumption apply (erule iffE) apply (case_tac A) apply (rule disjI1) apply (rule conjI) apply assumption apply (erule impE) apply assumption apply assumption apply (rule disjI2) apply (rule conjI) apply (rule classical) apply (erule impE, assumption) apply (erule notE) apply assumption apply assumption done lemma "\(A \ B) \ \ A \ \ B" apply (rule impI) apply (rule disjCI) apply (rule notI) apply (erule notE) apply (rule conjI) apply assumption apply (rule classical) apply (erule notE) apply assumption done end