equal
deleted
inserted
replaced
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 |