src/HOL/BNF/Tools/bnf_fp_rec_sugar_tactics.ML
changeset 54103 89a4c9b3ed62
parent 54101 94f2dc9aea7a
child 54117 32730ba3ab85
equal deleted inserted replaced
54102:82ada0a92dde 54103:89a4c9b3ed62
    93     Splitter.split_tac (split_if :: splits))) THEN
    93     Splitter.split_tac (split_if :: splits))) THEN
    94   mk_primcorec_prelude ctxt [] (f_ctr RS trans) THEN
    94   mk_primcorec_prelude ctxt [] (f_ctr RS trans) THEN
    95   HEADGOAL ((REPEAT_DETERM_N m o mk_primcorec_assumption_tac ctxt discIs) THEN'
    95   HEADGOAL ((REPEAT_DETERM_N m o mk_primcorec_assumption_tac ctxt discIs) THEN'
    96     SELECT_GOAL (SOLVE (HEADGOAL (REPEAT_DETERM o
    96     SELECT_GOAL (SOLVE (HEADGOAL (REPEAT_DETERM o
    97     (rtac refl ORELSE' atac ORELSE'
    97     (rtac refl ORELSE' atac ORELSE'
    98      resolve_tac split_connectI ORELSE'
    98      resolve_tac (@{thm Code.abort_def} :: split_connectI) ORELSE'
    99      Splitter.split_asm_tac (split_if_asm :: split_asms) ORELSE'
    99      Splitter.split_asm_tac (split_if_asm :: split_asms) ORELSE'
   100      Splitter.split_tac (split_if :: splits) ORELSE'
   100      Splitter.split_tac (split_if :: splits) ORELSE'
   101      mk_primcorec_assumption_tac ctxt discIs ORELSE'
   101      mk_primcorec_assumption_tac ctxt discIs ORELSE'
   102      eresolve_tac (map (fn thm => thm RS neq_eq_eq_contradict) distincts) THEN' atac ORELSE'
   102      eresolve_tac (map (fn thm => thm RS neq_eq_eq_contradict) distincts) THEN' atac ORELSE'
   103      (TRY o dresolve_tac discIs) THEN' etac notE THEN' atac)))));
   103      (TRY o dresolve_tac discIs) THEN' etac notE THEN' atac)))));