272 disc_corec_thmss, sel_corec_thmsss)) |
272 disc_corec_thmss, sel_corec_thmsss)) |
273 ||> (fn info => (NONE, SOME info)); |
273 ||> (fn info => (NONE, SOME info)); |
274 |
274 |
275 val phi = Proof_Context.export_morphism no_defs_lthy no_defs_lthy0; |
275 val phi = Proof_Context.export_morphism no_defs_lthy no_defs_lthy0; |
276 |
276 |
277 fun mk_target_fp_sugar T X kk pre_bnf absT_info ctrXs_Tss ctr_defs ctr_sugar co_rec maps |
277 fun mk_target_fp_sugar T X kk pre_bnf absT_info ctrXs_Tss ctr_defs ctr_sugar co_rec |
278 co_inducts co_rec_thms disc_corec_thms sel_corec_thmss rel_injects = |
278 co_rec_def maps co_inducts co_rec_thms disc_corec_thms sel_corec_thmss |
|
279 ({rel_injects, rel_distincts, ...} : fp_sugar) = |
279 {T = T, BT = Term.dummyT (*wrong but harmless*), X = X, fp = fp, fp_res = fp_res, |
280 {T = T, BT = Term.dummyT (*wrong but harmless*), X = X, fp = fp, fp_res = fp_res, |
280 fp_res_index = kk, pre_bnf = pre_bnf, absT_info = absT_info, nested_bnfs = nested_bnfs, |
281 fp_res_index = kk, pre_bnf = pre_bnf, absT_info = absT_info, nested_bnfs = nested_bnfs, |
281 nesting_bnfs = nesting_bnfs, ctrXs_Tss = ctrXs_Tss, ctr_defs = ctr_defs, |
282 nesting_bnfs = nesting_bnfs, ctrXs_Tss = ctrXs_Tss, ctr_defs = ctr_defs, |
282 ctr_sugar = ctr_sugar, co_rec = co_rec, maps = maps, |
283 ctr_sugar = ctr_sugar, co_rec = co_rec, co_rec_def = co_rec_def, maps = maps, |
283 common_co_inducts = common_co_inducts, co_inducts = co_inducts, |
284 common_co_inducts = common_co_inducts, co_inducts = co_inducts, |
284 co_rec_thms = co_rec_thms, disc_co_recs = disc_corec_thms, |
285 co_rec_thms = co_rec_thms, disc_co_recs = disc_corec_thms, |
285 sel_co_recss = sel_corec_thmss, rel_injects = rel_injects} |
286 sel_co_recss = sel_corec_thmss, rel_injects = rel_injects, rel_distincts = rel_distincts} |
286 |> morph_fp_sugar phi; |
287 |> morph_fp_sugar phi; |
287 |
288 |
288 val target_fp_sugars = |
289 val target_fp_sugars = |
289 map15 mk_target_fp_sugar fpTs Xs kks pre_bnfs absT_infos ctrXs_Tsss ctr_defss ctr_sugars |
290 map16 mk_target_fp_sugar fpTs Xs kks pre_bnfs absT_infos ctrXs_Tsss ctr_defss ctr_sugars |
290 co_recs mapss (transpose co_inductss) co_rec_thmss disc_corec_thmss sel_corec_thmsss |
291 co_recs co_rec_defs mapss (transpose co_inductss) co_rec_thmss disc_corec_thmss |
291 (map #rel_injects fp_sugars0); |
292 sel_corec_thmsss fp_sugars0; |
292 |
293 |
293 val n2m_sugar = (target_fp_sugars, fp_sugar_thms); |
294 val n2m_sugar = (target_fp_sugars, fp_sugar_thms); |
294 in |
295 in |
295 (n2m_sugar, lthy |> register_n2m_sugar key n2m_sugar) |
296 (n2m_sugar, lthy |> register_n2m_sugar key n2m_sugar) |
296 end) |
297 end) |