src/HOL/Tools/BNF/bnf_fp_n2m_sugar.ML
changeset 56648 2ffa440b3074
parent 56641 029997d3b5d8
child 56650 1f9ab71d43a5
equal deleted inserted replaced
56647:ce8297d5017a 56648:2ffa440b3074
   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)