src/HOL/Codatatype/Tools/bnf_fp_sugar_tactics.ML
changeset 49276 59fa53ed7507
parent 49274 ddd606ec45b9
child 49362 1271aca16aed
equal deleted inserted replaced
49275:ce87d6a901eb 49276:59fa53ed7507
    58 fun mk_iter_like_tac pre_map_defs map_ids iter_like_defs fld_iter_like ctr_def ctxt =
    58 fun mk_iter_like_tac pre_map_defs map_ids iter_like_defs fld_iter_like ctr_def ctxt =
    59   Local_Defs.unfold_tac ctxt (ctr_def :: fld_iter_like :: iter_like_defs @ pre_map_defs @ map_ids @
    59   Local_Defs.unfold_tac ctxt (ctr_def :: fld_iter_like :: iter_like_defs @ pre_map_defs @ map_ids @
    60     iter_like_thms) THEN Local_Defs.unfold_tac ctxt @{thms id_def} THEN rtac refl 1;
    60     iter_like_thms) THEN Local_Defs.unfold_tac ctxt @{thms id_def} THEN rtac refl 1;
    61 
    61 
    62 val coiter_like_ss = ss_only @{thms if_True if_False};
    62 val coiter_like_ss = ss_only @{thms if_True if_False};
    63 val coiter_like_thms =
    63 val coiter_like_thms = @{thms id_apply map_pair_def sum_map.simps prod.cases};
    64   @{thms id_apply map_pair_def sum_case_if sum_map.simps sum_map_if prod.cases};
       
    65 
    64 
    66 fun mk_coiter_like_tac coiter_like_defs map_ids fld_unf_coiter_like pre_map_def ctr_def ctxt =
    65 fun mk_coiter_like_tac coiter_like_defs map_ids fld_unf_coiter_like pre_map_def ctr_def ctxt =
    67   Local_Defs.unfold_tac ctxt (ctr_def :: coiter_like_defs) THEN
    66   Local_Defs.unfold_tac ctxt (ctr_def :: coiter_like_defs) THEN
    68   subst_tac ctxt [fld_unf_coiter_like] 1 THEN asm_simp_tac coiter_like_ss 1 THEN
    67   subst_tac ctxt [fld_unf_coiter_like] 1 THEN asm_simp_tac coiter_like_ss 1 THEN
    69   Local_Defs.unfold_tac ctxt (pre_map_def :: coiter_like_thms @ map_ids) THEN
    68   Local_Defs.unfold_tac ctxt (pre_map_def :: coiter_like_thms @ map_ids) THEN