src/HOL/Tools/inductive_realizer.ML
changeset 46708 b138dee7bed3
parent 46219 426ed18eba43
child 47060 e2741ec9ae36
equal deleted inserted replaced
46707:1427dcc7c9a6 46708:b138dee7bed3
   454         val rlz = Extraction.realizes_of thy (vs @ Ps) r (prop_of elim);
   454         val rlz = Extraction.realizes_of thy (vs @ Ps) r (prop_of elim);
   455         val rlz' = attach_typeS (strip_all (Logic.unvarify_global rlz));
   455         val rlz' = attach_typeS (strip_all (Logic.unvarify_global rlz));
   456         val rews = map mk_meta_eq case_thms;
   456         val rews = map mk_meta_eq case_thms;
   457         val thm = Goal.prove_global thy []
   457         val thm = Goal.prove_global thy []
   458           (Logic.strip_imp_prems rlz') (Logic.strip_imp_concl rlz') (fn {prems, ...} => EVERY
   458           (Logic.strip_imp_prems rlz') (Logic.strip_imp_concl rlz') (fn {prems, ...} => EVERY
   459           [cut_facts_tac [hd prems] 1,
   459           [cut_tac (hd prems) 1,
   460            etac elimR 1,
   460            etac elimR 1,
   461            ALLGOALS (asm_simp_tac HOL_basic_ss),
   461            ALLGOALS (asm_simp_tac HOL_basic_ss),
   462            rewrite_goals_tac rews,
   462            rewrite_goals_tac rews,
   463            REPEAT ((resolve_tac prems THEN_ALL_NEW (Object_Logic.atomize_prems_tac THEN'
   463            REPEAT ((resolve_tac prems THEN_ALL_NEW (Object_Logic.atomize_prems_tac THEN'
   464              DEPTH_SOLVE_1 o FIRST' [atac, etac allE, etac impE])) 1)]);
   464              DEPTH_SOLVE_1 o FIRST' [atac, etac allE, etac impE])) 1)]);