src/HOL/Tools/Transfer/transfer_bnf.ML
changeset 58230 61e4c96bf2b6
parent 58227 d91f7a80f412
child 58234 265aea1e9985
equal deleted inserted replaced
58229:cece11f6262a 58230:61e4c96bf2b6
   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