src/HOL/Tools/Datatype/datatype.ML
changeset 36945 9bec62c10714
parent 36692 54b64d4ad524
child 36960 01594f816e3a
equal deleted inserted replaced
36944:dbf831a50e4a 36945:9bec62c10714
   481       drop (length newTs) (split_conj_thm
   481       drop (length newTs) (split_conj_thm
   482         (Skip_Proof.prove_global thy5 [] [] iso_t (fn _ => EVERY
   482         (Skip_Proof.prove_global thy5 [] [] iso_t (fn _ => EVERY
   483            [(indtac rep_induct [] THEN_ALL_NEW Object_Logic.atomize_prems_tac) 1,
   483            [(indtac rep_induct [] THEN_ALL_NEW Object_Logic.atomize_prems_tac) 1,
   484             REPEAT (rtac TrueI 1),
   484             REPEAT (rtac TrueI 1),
   485             rewrite_goals_tac (mk_meta_eq @{thm choice_eq} ::
   485             rewrite_goals_tac (mk_meta_eq @{thm choice_eq} ::
   486               symmetric (mk_meta_eq @{thm expand_fun_eq}) :: range_eqs),
   486               Thm.symmetric (mk_meta_eq @{thm expand_fun_eq}) :: range_eqs),
   487             rewrite_goals_tac (map symmetric range_eqs),
   487             rewrite_goals_tac (map Thm.symmetric range_eqs),
   488             REPEAT (EVERY
   488             REPEAT (EVERY
   489               [REPEAT (eresolve_tac ([rangeE, ex1_implies_ex RS exE] @
   489               [REPEAT (eresolve_tac ([rangeE, ex1_implies_ex RS exE] @
   490                  maps (mk_funs_inv thy5 o #1) newT_iso_axms) 1),
   490                  maps (mk_funs_inv thy5 o #1) newT_iso_axms) 1),
   491                TRY (hyp_subst_tac 1),
   491                TRY (hyp_subst_tac 1),
   492                rtac (sym RS range_eqI) 1,
   492                rtac (sym RS range_eqI) 1,
   619       (fn {prems, ...} => EVERY
   619       (fn {prems, ...} => EVERY
   620         [rtac indrule_lemma' 1,
   620         [rtac indrule_lemma' 1,
   621          (indtac rep_induct [] THEN_ALL_NEW Object_Logic.atomize_prems_tac) 1,
   621          (indtac rep_induct [] THEN_ALL_NEW Object_Logic.atomize_prems_tac) 1,
   622          EVERY (map (fn (prem, r) => (EVERY
   622          EVERY (map (fn (prem, r) => (EVERY
   623            [REPEAT (eresolve_tac Abs_inverse_thms 1),
   623            [REPEAT (eresolve_tac Abs_inverse_thms 1),
   624             simp_tac (HOL_basic_ss addsimps ((symmetric r)::Rep_inverse_thms')) 1,
   624             simp_tac (HOL_basic_ss addsimps (Thm.symmetric r :: Rep_inverse_thms')) 1,
   625             DEPTH_SOLVE_1 (ares_tac [prem] 1 ORELSE etac allE 1)]))
   625             DEPTH_SOLVE_1 (ares_tac [prem] 1 ORELSE etac allE 1)]))
   626                 (prems ~~ (constr_defs @ (map mk_meta_eq iso_char_thms))))]);
   626                 (prems ~~ (constr_defs @ (map mk_meta_eq iso_char_thms))))]);
   627 
   627 
   628     val ([dt_induct'], thy7) =
   628     val ([dt_induct'], thy7) =
   629       thy6
   629       thy6