src/HOL/BNF/Tools/bnf_fp_util.ML
changeset 52958 5a77edcdbe54
parent 52937 cdd1d5049287
child 52963 96754402c851
equal deleted inserted replaced
52957:717a23e14586 52958:5a77edcdbe54
   129   val mk_dtor_set_inductN: int -> string
   129   val mk_dtor_set_inductN: int -> string
   130   val mk_set_inductN: int -> string
   130   val mk_set_inductN: int -> string
   131 
   131 
   132   val co_prefix: fp_kind -> string
   132   val co_prefix: fp_kind -> string
   133 
   133 
   134   val base_name_of_typ: typ -> string
       
   135   val mk_common_name: string list -> string
   134   val mk_common_name: string list -> string
   136 
   135 
   137   val split_conj_thm: thm -> thm list
   136   val split_conj_thm: thm -> thm list
   138   val split_conj_prems: int -> thm -> thm
   137   val split_conj_prems: int -> thm -> thm
   139 
   138 
   347 val sel_unfoldN = selN ^ "_" ^ unfoldN
   346 val sel_unfoldN = selN ^ "_" ^ unfoldN
   348 val sel_corecN = selN ^ "_" ^ corecN
   347 val sel_corecN = selN ^ "_" ^ corecN
   349 
   348 
   350 fun co_prefix fp = (if fp = Greatest_FP then "co" else "");
   349 fun co_prefix fp = (if fp = Greatest_FP then "co" else "");
   351 
   350 
   352 fun add_components_of_typ (Type (s, Ts)) =
       
   353     fold add_components_of_typ Ts #> cons (Long_Name.base_name s)
       
   354   | add_components_of_typ _ = I;
       
   355 
       
   356 fun base_name_of_typ T = space_implode "_" (add_components_of_typ T []);
       
   357 
       
   358 val mk_common_name = space_implode "_";
   351 val mk_common_name = space_implode "_";
   359 
   352 
   360 fun dest_sumT (Type (@{type_name sum}, [T, T'])) = (T, T');
   353 fun dest_sumT (Type (@{type_name sum}, [T, T'])) = (T, T');
   361 
   354 
   362 fun dest_sumTN 1 T = [T]
   355 fun dest_sumTN 1 T = [T]