equal
deleted
inserted
replaced
380 (Logic.mk_implies |
380 (Logic.mk_implies |
381 (HOLogic.mk_Trueprop (HOLogic.list_all |
381 (HOLogic.mk_Trueprop (HOLogic.list_all |
382 (map (pair "x") Ts, S $ Datatype_Aux.app_bnds f i)), |
382 (map (pair "x") Ts, S $ Datatype_Aux.app_bnds f i)), |
383 HOLogic.mk_Trueprop (HOLogic.mk_eq (fold_rev (Term.abs o pair "x") Ts |
383 HOLogic.mk_Trueprop (HOLogic.mk_eq (fold_rev (Term.abs o pair "x") Ts |
384 (r $ (a $ Datatype_Aux.app_bnds f i)), f)))) |
384 (r $ (a $ Datatype_Aux.app_bnds f i)), f)))) |
385 (fn _ => EVERY [REPEAT_DETERM_N i (rtac ext 1), |
385 (fn _ => EVERY [REPEAT_DETERM_N i (rtac @{thm ext} 1), |
386 REPEAT (etac allE 1), rtac thm 1, atac 1]) |
386 REPEAT (etac allE 1), rtac thm 1, atac 1]) |
387 end |
387 end |
388 in map (fn r => r RS subst) (thm :: map mk_thm arities) end; |
388 in map (fn r => r RS subst) (thm :: map mk_thm arities) end; |
389 |
389 |
390 (* prove inj Rep_dt_i and Rep_dt_i x : rep_set_dt_i *) |
390 (* prove inj Rep_dt_i and Rep_dt_i x : rep_set_dt_i *) |
430 ORELSE (EVERY |
430 ORELSE (EVERY |
431 [REPEAT (eresolve_tac (Scons_inject :: |
431 [REPEAT (eresolve_tac (Scons_inject :: |
432 map make_elim [Leaf_inject, Inl_inject, Inr_inject]) 1), |
432 map make_elim [Leaf_inject, Inl_inject, Inr_inject]) 1), |
433 REPEAT (cong_tac 1), rtac refl 1, |
433 REPEAT (cong_tac 1), rtac refl 1, |
434 REPEAT (atac 1 ORELSE (EVERY |
434 REPEAT (atac 1 ORELSE (EVERY |
435 [REPEAT (rtac ext 1), |
435 [REPEAT (rtac @{thm ext} 1), |
436 REPEAT (eresolve_tac (mp :: allE :: |
436 REPEAT (eresolve_tac (mp :: allE :: |
437 map make_elim (Suml_inject :: Sumr_inject :: |
437 map make_elim (Suml_inject :: Sumr_inject :: |
438 Lim_inject :: inj_thms') @ fun_congs) 1), |
438 Lim_inject :: inj_thms') @ fun_congs) 1), |
439 atac 1]))])])])]); |
439 atac 1]))])])])]); |
440 |
440 |
485 REPEAT (rtac TrueI 1), |
485 REPEAT (rtac TrueI 1), |
486 rewrite_goals_tac ctxt (mk_meta_eq @{thm choice_eq} :: |
486 rewrite_goals_tac ctxt (mk_meta_eq @{thm choice_eq} :: |
487 Thm.symmetric (mk_meta_eq @{thm fun_eq_iff}) :: range_eqs), |
487 Thm.symmetric (mk_meta_eq @{thm fun_eq_iff}) :: range_eqs), |
488 rewrite_goals_tac ctxt (map Thm.symmetric range_eqs), |
488 rewrite_goals_tac ctxt (map Thm.symmetric range_eqs), |
489 REPEAT (EVERY |
489 REPEAT (EVERY |
490 [REPEAT (eresolve_tac ([rangeE, ex1_implies_ex RS exE] @ |
490 [REPEAT (eresolve_tac ([rangeE, @{thm ex1_implies_ex} RS exE] @ |
491 maps (mk_funs_inv thy5 o #1) newT_iso_axms) 1), |
491 maps (mk_funs_inv thy5 o #1) newT_iso_axms) 1), |
492 TRY (hyp_subst_tac ctxt 1), |
492 TRY (hyp_subst_tac ctxt 1), |
493 rtac (sym RS range_eqI) 1, |
493 rtac (sym RS range_eqI) 1, |
494 resolve_tac iso_char_thms 1])]))); |
494 resolve_tac iso_char_thms 1])]))); |
495 |
495 |
557 in |
557 in |
558 Goal.prove_sorry_global thy5 [] [] t |
558 Goal.prove_sorry_global thy5 [] [] t |
559 (fn {context = ctxt, ...} => EVERY |
559 (fn {context = ctxt, ...} => EVERY |
560 [rtac iffI 1, |
560 [rtac iffI 1, |
561 REPEAT (etac conjE 2), hyp_subst_tac ctxt 2, rtac refl 2, |
561 REPEAT (etac conjE 2), hyp_subst_tac ctxt 2, rtac refl 2, |
562 dresolve_tac rep_congs 1, dtac box_equals 1, |
562 dresolve_tac rep_congs 1, dtac @{thm box_equals} 1, |
563 REPEAT (resolve_tac rep_thms 1), |
563 REPEAT (resolve_tac rep_thms 1), |
564 REPEAT (eresolve_tac inj_thms 1), |
564 REPEAT (eresolve_tac inj_thms 1), |
565 REPEAT (ares_tac [conjI] 1 ORELSE (EVERY [REPEAT (rtac ext 1), |
565 REPEAT (ares_tac [conjI] 1 ORELSE (EVERY [REPEAT (rtac @{thm ext} 1), |
566 REPEAT (eresolve_tac (make_elim fun_cong :: inj_thms) 1), |
566 REPEAT (eresolve_tac (make_elim fun_cong :: inj_thms) 1), |
567 atac 1]))]) |
567 atac 1]))]) |
568 end; |
568 end; |
569 |
569 |
570 val constr_inject = |
570 val constr_inject = |