291 |
291 |
292 val phi = Proof_Context.export_morphism names_lthy no_defs_lthy; |
292 val phi = Proof_Context.export_morphism names_lthy no_defs_lthy; |
293 |
293 |
294 fun mk_target_fp_sugar T X kk pre_bnf absT_info ctrXs_Tss ctr_defs ctr_sugar co_rec |
294 fun mk_target_fp_sugar T X kk pre_bnf absT_info ctrXs_Tss ctr_defs ctr_sugar co_rec |
295 co_rec_def maps co_inducts co_rec_thms co_rec_disc_thms co_rec_sel_thmss |
295 co_rec_def maps co_inducts co_rec_thms co_rec_disc_thms co_rec_sel_thmss |
296 ({rel_injects, rel_distincts, ...} : fp_sugar) = |
296 ({fp_bnf_sugar = {rel_injects, rel_distincts, ...}, ...} : fp_sugar) = |
297 {T = T, BT = T (*wrong but harmless*), X = X, fp = fp, fp_res = fp_res, fp_res_index = kk, |
297 {T = T, BT = T (*wrong but harmless*), X = X, fp = fp, fp_res = fp_res, fp_res_index = kk, |
298 pre_bnf = pre_bnf, absT_info = absT_info, fp_nesting_bnfs = fp_nesting_bnfs, |
298 pre_bnf = pre_bnf, absT_info = absT_info, fp_nesting_bnfs = fp_nesting_bnfs, |
299 live_nesting_bnfs = live_nesting_bnfs, ctrXs_Tss = ctrXs_Tss, ctr_defs = ctr_defs, |
299 live_nesting_bnfs = live_nesting_bnfs, ctrXs_Tss = ctrXs_Tss, ctr_defs = ctr_defs, |
300 ctr_sugar = ctr_sugar, co_rec = co_rec, co_rec_def = co_rec_def, maps = maps, |
300 ctr_sugar = ctr_sugar, co_rec = co_rec, co_rec_def = co_rec_def, maps = maps, |
301 common_co_inducts = common_co_inducts, co_inducts = co_inducts, |
301 common_co_inducts = common_co_inducts, co_inducts = co_inducts, |
302 co_rec_thms = co_rec_thms, co_rec_discs = co_rec_disc_thms, |
302 co_rec_thms = co_rec_thms, co_rec_discs = co_rec_disc_thms, |
303 co_rec_selss = co_rec_sel_thmss, rel_injects = rel_injects, |
303 co_rec_selss = co_rec_sel_thmss, fp_ctr_sugar = {}, |
304 rel_distincts = rel_distincts, fp_ctr_sugar = {}, fp_bnf_sugar = {}, |
304 fp_bnf_sugar = {rel_injects = rel_injects, rel_distincts = rel_distincts}, |
305 fp_co_induct_sugar = {}} |
305 fp_co_induct_sugar = {}} |
306 |> morph_fp_sugar phi; |
306 |> morph_fp_sugar phi; |
307 |
307 |
308 val target_fp_sugars = |
308 val target_fp_sugars = |
309 map16 mk_target_fp_sugar fpTs Xs kks pre_bnfs absT_infos ctrXs_Tsss ctr_defss ctr_sugars |
309 map16 mk_target_fp_sugar fpTs Xs kks pre_bnfs absT_infos ctrXs_Tsss ctr_defss ctr_sugars |