src/FOL/FOL.thy
changeset 27115 0dcafa5c9e3f
parent 26496 49ae9456eba9
child 27211 6724f31a1c8e
equal deleted inserted replaced
27114:22e8c115f6c9 27115:0dcafa5c9e3f
    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