equal
deleted
inserted
replaced
64 ML {* |
64 ML {* |
65 fun excluded_middle_tac sP = |
65 fun excluded_middle_tac sP = |
66 res_inst_tac [("Q",sP)] (@{thm excluded_middle} RS @{thm disjE}) |
66 res_inst_tac [("Q",sP)] (@{thm excluded_middle} RS @{thm disjE}) |
67 *} |
67 *} |
68 |
68 |
69 lemma case_split_thm: |
69 lemma case_split [case_names True False]: |
70 assumes r1: "P ==> Q" |
70 assumes r1: "P ==> Q" |
71 and r2: "~P ==> Q" |
71 and r2: "~P ==> Q" |
72 shows Q |
72 shows Q |
73 apply (rule excluded_middle [THEN disjE]) |
73 apply (rule excluded_middle [THEN disjE]) |
74 apply (erule r2) |
74 apply (erule r2) |
75 apply (erule r1) |
75 apply (erule r1) |
76 done |
76 done |
77 |
77 |
78 lemmas case_split = case_split_thm [case_names True False] |
|
79 |
|
80 (*HOL's more natural case analysis tactic*) |
|
81 ML {* |
78 ML {* |
82 fun case_tac a = res_inst_tac [("P",a)] @{thm case_split_thm} |
79 fun case_tac a = res_inst_tac [("P",a)] @{thm case_split} |
83 *} |
80 *} |
84 |
81 |
85 |
82 |
86 (*** Special elimination rules *) |
83 (*** Special elimination rules *) |
87 |
84 |