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 |