src/HOL/Codatatype/Tools/bnf_fp_sugar_tactics.ML
changeset 49229 d5717b5e2217
parent 49226 510c6d4a73ec
child 49232 9ea11f0c53e4
equal deleted inserted replaced
49228:e43910ccee74 49229:d5717b5e2217
    52 
    52 
    53 val iter_like_thms =
    53 val iter_like_thms =
    54   @{thms case_unit comp_def convol_def id_apply map_pair_def sum.simps(5,6) sum_map.simps
    54   @{thms case_unit comp_def convol_def id_apply map_pair_def sum.simps(5,6) sum_map.simps
    55       split_conv};
    55       split_conv};
    56 
    56 
    57 fun mk_iter_like_tac pre_map_defs map_id's iter_like_defs fld_iter_like ctr_def ctxt =
    57 fun mk_iter_like_tac pre_map_defs map_ids iter_like_defs fld_iter_like ctr_def ctxt =
    58   Local_Defs.unfold_tac ctxt (ctr_def :: fld_iter_like :: iter_like_defs @ pre_map_defs @ map_id's @
    58   Local_Defs.unfold_tac ctxt (ctr_def :: fld_iter_like :: iter_like_defs @ pre_map_defs @ map_ids @
    59     iter_like_thms) THEN rtac refl 1;
    59     iter_like_thms) THEN rtac refl 1;
    60 
    60 
    61 val coiter_like_ss = ss_only @{thms if_True if_False};
    61 val coiter_like_ss = ss_only @{thms if_True if_False};
    62 val coiter_like_thms = @{thms id_apply map_pair_def sum_map.simps prod.cases};
    62 val coiter_like_thms = @{thms id_apply map_pair_def sum_map.simps prod.cases};
    63 
    63 
    64 fun mk_coiter_like_tac coiter_like_defs map_id's fld_unf_coiter_like pre_map_def ctr_def ctxt =
    64 fun mk_coiter_like_tac coiter_like_defs map_ids fld_unf_coiter_like pre_map_def ctr_def ctxt =
    65   Local_Defs.unfold_tac ctxt (ctr_def :: coiter_like_defs) THEN
    65   Local_Defs.unfold_tac ctxt (ctr_def :: coiter_like_defs) THEN
    66   subst_tac ctxt [fld_unf_coiter_like] 1 THEN asm_simp_tac coiter_like_ss 1 THEN
    66   subst_tac ctxt [fld_unf_coiter_like] 1 THEN asm_simp_tac coiter_like_ss 1 THEN
    67   Local_Defs.unfold_tac ctxt (pre_map_def :: coiter_like_thms @ map_id's) THEN rtac refl 1;
    67   Local_Defs.unfold_tac ctxt (pre_map_def :: coiter_like_thms @ map_ids) THEN rtac refl 1;
    68 
    68 
    69 end;
    69 end;