src/FOL/FOL.thy
changeset 24830 a7b3ab44d993
parent 24097 86734ba03ca2
child 26286 3ff5d257f175
equal deleted inserted replaced
24829:e1214fa781ca 24830:a7b3ab44d993
     9 imports IFOL
     9 imports IFOL
    10 uses
    10 uses
    11   "~~/src/Provers/classical.ML"
    11   "~~/src/Provers/classical.ML"
    12   "~~/src/Provers/blast.ML"
    12   "~~/src/Provers/blast.ML"
    13   "~~/src/Provers/clasimp.ML"
    13   "~~/src/Provers/clasimp.ML"
       
    14   "~~/src/Tools/induct.ML"
    14   ("cladata.ML")
    15   ("cladata.ML")
    15   ("blastdata.ML")
    16   ("blastdata.ML")
    16   ("simpdata.ML")
    17   ("simpdata.ML")
    17 begin
    18 begin
    18 
    19 
    72   apply (rule excluded_middle [THEN disjE])
    73   apply (rule excluded_middle [THEN disjE])
    73   apply (erule r2)
    74   apply (erule r2)
    74   apply (erule r1)
    75   apply (erule r1)
    75   done
    76   done
    76 
    77 
    77 lemmas case_split = case_split_thm [case_names True False, cases type: o]
    78 lemmas case_split = case_split_thm [case_names True False]
    78 
    79 
    79 (*HOL's more natural case analysis tactic*)
    80 (*HOL's more natural case analysis tactic*)
    80 ML {*
    81 ML {*
    81   fun case_tac a = res_inst_tac [("P",a)] @{thm case_split_thm}
    82   fun case_tac a = res_inst_tac [("P",a)] @{thm case_split_thm}
    82 *}
    83 *}
   271 
   272 
   272 
   273 
   273 text {* Method setup. *}
   274 text {* Method setup. *}
   274 
   275 
   275 ML {*
   276 ML {*
   276   structure InductMethod = InductMethodFun
   277   structure Induct = InductFun
   277   (struct
   278   (
   278     val cases_default = @{thm case_split}
   279     val cases_default = @{thm case_split}
   279     val atomize = @{thms induct_atomize}
   280     val atomize = @{thms induct_atomize}
   280     val rulify = @{thms induct_rulify}
   281     val rulify = @{thms induct_rulify}
   281     val rulify_fallback = @{thms induct_rulify_fallback}
   282     val rulify_fallback = @{thms induct_rulify_fallback}
   282   end);
   283   );
   283 *}
   284 *}
   284 
   285 
   285 setup InductMethod.setup
   286 setup Induct.setup
       
   287 declare case_split [cases type: o]
   286 
   288 
   287 end
   289 end