equal
deleted
inserted
replaced
90 val mk_common_name: binding list -> string |
90 val mk_common_name: binding list -> string |
91 |
91 |
92 val split_conj_thm: thm -> thm list |
92 val split_conj_thm: thm -> thm list |
93 val split_conj_prems: int -> thm -> thm |
93 val split_conj_prems: int -> thm -> thm |
94 |
94 |
95 val strip_typeN: int -> typ -> typ list * typ |
|
96 val retype_free: typ -> term -> term |
95 val retype_free: typ -> term -> term |
97 |
96 |
98 val mk_predT: typ -> typ; |
97 val mk_predT: typ -> typ; |
99 |
98 |
100 val mk_sumTN: typ list -> typ |
99 val mk_sumTN: typ list -> typ |
239 val sel_coitersN = selN ^ "_" ^ coitersN |
238 val sel_coitersN = selN ^ "_" ^ coitersN |
240 val sel_corecsN = selN ^ "_" ^ corecsN |
239 val sel_corecsN = selN ^ "_" ^ corecsN |
241 |
240 |
242 val mk_common_name = space_implode "_" o map Binding.name_of; |
241 val mk_common_name = space_implode "_" o map Binding.name_of; |
243 |
242 |
244 fun strip_typeN 0 T = ([], T) |
|
245 | strip_typeN n (Type (@{type_name fun}, [T, T'])) = strip_typeN (n - 1) T' |>> cons T; |
|
246 |
|
247 fun mk_predT T = T --> HOLogic.boolT; |
243 fun mk_predT T = T --> HOLogic.boolT; |
248 |
244 |
249 fun retype_free T (Free (s, _)) = Free (s, T); |
245 fun retype_free T (Free (s, _)) = Free (s, T); |
250 |
246 |
251 fun dest_sumT (Type (@{type_name sum}, [T, T'])) = (T, T'); |
247 fun dest_sumT (Type (@{type_name sum}, [T, T'])) = (T, T'); |