src/HOL/Tools/BNF/bnf_fp_def_sugar_tactics.ML
changeset 59856 ed0ca9029021
parent 59794 39442248a027
child 60728 26ffdb966759
equal deleted inserted replaced
59855:ffd50fdfc7fa 59856:ed0ca9029021
   288       let
   288       let
   289         val active :: actives' = actives;
   289         val active :: actives' = actives;
   290         val dtor_corec_transfer' = cterm_instantiate_pos
   290         val dtor_corec_transfer' = cterm_instantiate_pos
   291           (SOME active :: map SOME passives @ map SOME actives') dtor_corec_transfer;
   291           (SOME active :: map SOME passives @ map SOME actives') dtor_corec_transfer;
   292       in
   292       in
   293         HEADGOAL Goal.conjunction_tac THEN
   293         HEADGOAL Goal.conjunction_tac THEN REPEAT_DETERM (HEADGOAL (rtac rel_funI)) THEN
   294         REPEAT_DETERM (HEADGOAL (rtac rel_funI)) THEN
       
   295         unfold_thms_tac ctxt [corec_def] THEN
   294         unfold_thms_tac ctxt [corec_def] THEN
   296         HEADGOAL (etac (mk_rel_funDN_rotated (1 + length actives) dtor_corec_transfer')) THEN
   295         HEADGOAL (etac (mk_rel_funDN_rotated (1 + length actives) dtor_corec_transfer')) THEN
   297         unfold_thms_tac ctxt (rel_pre_T_defs @ rel_eqs)
   296         unfold_thms_tac ctxt (rel_pre_T_defs @ rel_eqs)
   298       end;
   297       end;
   299 
   298 
   490     (eresolve_tac ctxt @{thms FalseE emptyE singletonE UnE UN_E insertE} ORELSE'
   489     (eresolve_tac ctxt @{thms FalseE emptyE singletonE UnE UN_E insertE} ORELSE'
   491      hyp_subst_tac ctxt ORELSE'
   490      hyp_subst_tac ctxt ORELSE'
   492      SELECT_GOAL (SOLVE (HEADGOAL (eresolve_tac ctxt assms THEN' REPEAT_DETERM o atac)))));
   491      SELECT_GOAL (SOLVE (HEADGOAL (eresolve_tac ctxt assms THEN' REPEAT_DETERM o atac)))));
   493 
   492 
   494 fun mk_set_intros_tac ctxt sets =
   493 fun mk_set_intros_tac ctxt sets =
   495   TRYALL Goal.conjunction_tac THEN
   494   TRYALL Goal.conjunction_tac THEN unfold_thms_tac ctxt sets THEN
   496   unfold_thms_tac ctxt sets THEN
       
   497   TRYALL (REPEAT o
   495   TRYALL (REPEAT o
   498     (resolve_tac ctxt @{thms UnI1 UnI2} ORELSE'
   496     (resolve_tac ctxt @{thms UnI1 UnI2} ORELSE'
   499      eresolve_tac ctxt @{thms UN_I UN_I[rotated]}) THEN' (rtac @{thm singletonI} ORELSE' atac));
   497      eresolve_tac ctxt @{thms UN_I UN_I[rotated]}) THEN' (rtac @{thm singletonI} ORELSE' atac));
   500 
   498 
   501 fun mk_set_induct0_tac ctxt cts assms dtor_set_inducts exhausts set_pre_defs ctor_defs dtor_ctors
   499 fun mk_set_induct0_tac ctxt cts assms dtor_set_inducts exhausts set_pre_defs ctor_defs dtor_ctors