1072 val dt_induct_prop = Datatype_Prop.make_ind descr' sorts; |
1072 val dt_induct_prop = Datatype_Prop.make_ind descr' sorts; |
1073 val dt_induct = Goal.prove_global thy8 [] |
1073 val dt_induct = Goal.prove_global thy8 [] |
1074 (Logic.strip_imp_prems dt_induct_prop) (Logic.strip_imp_concl dt_induct_prop) |
1074 (Logic.strip_imp_prems dt_induct_prop) (Logic.strip_imp_concl dt_induct_prop) |
1075 (fn {prems, ...} => EVERY |
1075 (fn {prems, ...} => EVERY |
1076 [rtac indrule_lemma' 1, |
1076 [rtac indrule_lemma' 1, |
1077 (indtac rep_induct [] THEN_ALL_NEW ObjectLogic.atomize_prems_tac) 1, |
1077 (indtac rep_induct [] THEN_ALL_NEW Object_Logic.atomize_prems_tac) 1, |
1078 EVERY (map (fn (prem, r) => (EVERY |
1078 EVERY (map (fn (prem, r) => (EVERY |
1079 [REPEAT (eresolve_tac Abs_inverse_thms' 1), |
1079 [REPEAT (eresolve_tac Abs_inverse_thms' 1), |
1080 simp_tac (HOL_basic_ss addsimps [symmetric r]) 1, |
1080 simp_tac (HOL_basic_ss addsimps [symmetric r]) 1, |
1081 DEPTH_SOLVE_1 (ares_tac [prem] 1 ORELSE etac allE 1)])) |
1081 DEPTH_SOLVE_1 (ares_tac [prem] 1 ORELSE etac allE 1)])) |
1082 (prems ~~ constr_defs))]); |
1082 (prems ~~ constr_defs))]); |