309 @ map type_name_of_bnf (#bnfs (#fp_res fp_sugar))) |
309 @ map type_name_of_bnf (#bnfs (#fp_res fp_sugar))) |
310 val eq_onps = map (Transfer.rel_eq_onp o lookup_defined_pred_data lthy) involved_types |
310 val eq_onps = map (Transfer.rel_eq_onp o lookup_defined_pred_data lthy) involved_types |
311 val live = live_of_bnf (bnf_of_fp_sugar fp_sugar) |
311 val live = live_of_bnf (bnf_of_fp_sugar fp_sugar) |
312 val old_lthy = lthy |
312 val old_lthy = lthy |
313 val old_As = snd (dest_Type (#T fp_sugar)) |
313 val old_As = snd (dest_Type (#T fp_sugar)) |
|
314 val liveness = |
|
315 BNF_FP_Def_Sugar.liveness_of_fp_bnf (length old_As) (hd (#bnfs (#fp_res fp_sugar))); |
314 val (unsorted_As, lthy) = mk_TFrees live lthy |
316 val (unsorted_As, lthy) = mk_TFrees live lthy |
315 val As = map2 (Ctr_Sugar_Util.resort_tfree o snd o Ctr_Sugar_Util.dest_TFree_or_TVar) |
317 val As = map2 (Ctr_Sugar_Util.resort_tfree o snd o Ctr_Sugar_Util.dest_TFree_or_TVar) |
316 old_As unsorted_As |
318 (map_filter (uncurry (fn true => SOME | false => K NONE)) (liveness ~~ old_As)) unsorted_As |
317 val predTs = map mk_pred1T As |
319 val predTs = map mk_pred1T As |
318 val (preds, lthy) = mk_Frees "P" predTs lthy |
320 val (preds, lthy) = mk_Frees "P" predTs lthy |
319 val args = map mk_eq_onp preds |
321 val args = map mk_eq_onp preds |
320 val cTs = map (SOME o certifyT lthy) (maps (replicate 2) As) |
322 val cTs = map (SOME o certifyT lthy) (maps (replicate 2) As) |
321 val cts = map (SOME o certify lthy) args |
323 val cts = map (SOME o certify lthy) args |