equal
deleted
inserted
replaced
32 (term list * (string * typ) list) * Proof.context |
32 (term list * (string * typ) list) * Proof.context |
33 val mk_Freess': string -> typ list list -> Proof.context -> |
33 val mk_Freess': string -> typ list list -> Proof.context -> |
34 (term list list * (string * typ) list list) * Proof.context |
34 (term list list * (string * typ) list list) * Proof.context |
35 val mk_Frees: string -> typ list -> Proof.context -> term list * Proof.context |
35 val mk_Frees: string -> typ list -> Proof.context -> term list * Proof.context |
36 val mk_Freess: string -> typ list list -> Proof.context -> term list list * Proof.context |
36 val mk_Freess: string -> typ list list -> Proof.context -> term list list * Proof.context |
|
37 val dest_TFree_or_TVar: typ -> string * sort |
37 val resort_tfree: sort -> typ -> typ |
38 val resort_tfree: sort -> typ -> typ |
38 val variant_types: string list -> sort list -> Proof.context -> |
39 val variant_types: string list -> sort list -> Proof.context -> |
39 (string * sort) list * Proof.context |
40 (string * sort) list * Proof.context |
40 val variant_tfrees: string list -> Proof.context -> typ list * Proof.context |
41 val variant_tfrees: string list -> Proof.context -> typ list * Proof.context |
41 |
42 |
175 fun mk_Freess' x Tss = fold_map2 mk_Frees' (mk_names (length Tss) x) Tss #>> split_list; |
176 fun mk_Freess' x Tss = fold_map2 mk_Frees' (mk_names (length Tss) x) Tss #>> split_list; |
176 |
177 |
177 fun mk_Frees x Ts ctxt = mk_fresh_names ctxt (length Ts) x |>> (fn xs => map2 (curry Free) xs Ts); |
178 fun mk_Frees x Ts ctxt = mk_fresh_names ctxt (length Ts) x |>> (fn xs => map2 (curry Free) xs Ts); |
178 fun mk_Freess x Tss = fold_map2 mk_Frees (mk_names (length Tss) x) Tss; |
179 fun mk_Freess x Tss = fold_map2 mk_Frees (mk_names (length Tss) x) Tss; |
179 |
180 |
|
181 fun dest_TFree_or_TVar (TFree sS) = sS |
|
182 | dest_TFree_or_TVar (TVar ((s, _), S)) = (s, S) |
|
183 | dest_TFree_or_TVar _ = error "Invalid type argument"; |
|
184 |
180 fun resort_tfree S (TFree (s, _)) = TFree (s, S); |
185 fun resort_tfree S (TFree (s, _)) = TFree (s, S); |
181 |
186 |
182 fun ensure_prefix pre s = s |> not (String.isPrefix pre s) ? prefix pre; |
187 fun ensure_prefix pre s = s |> not (String.isPrefix pre s) ? prefix pre; |
183 |
188 |
184 fun variant_types ss Ss ctxt = |
189 fun variant_types ss Ss ctxt = |