--- a/Nominal/Fv.thy Tue Mar 02 12:28:07 2010 +0100
+++ b/Nominal/Fv.thy Tue Mar 02 13:28:54 2010 +0100
@@ -54,6 +54,13 @@
in the database.
*)
+ML {*
+fun map2i _ [] [] = []
+ | map2i f (x :: xs) (y :: ys) = f x y :: map2i f xs ys
+ | map2i f (x :: xs) [] = f x [] :: map2i f xs []
+ | map2i _ _ _ = raise UnequalLengths;
+*}
+
(* TODO: should be const_name union *)
ML {*
open Datatype_Aux; (* typ_of_dtyp, DtRec, ... *);
@@ -185,8 +192,8 @@
in
(fv_eq, alpha_eq)
end;
- fun fv_alpha_eq (i, (_, _, constrs)) binds = map2 (fv_alpha_constr i) constrs binds;
- val (fv_eqs, alpha_eqs) = split_list (flat (map2 fv_alpha_eq descr bindsall))
+ fun fv_alpha_eq (i, (_, _, constrs)) binds = map2i (fv_alpha_constr i) constrs binds;
+ val (fv_eqs, alpha_eqs) = split_list (flat (map2i fv_alpha_eq descr bindsall))
val add_binds = map (fn x => (Attrib.empty_binding, x))
val (fvs, lthy') = (Primrec.add_primrec
(map (fn s => (Binding.name s, NONE, NoSyn)) fv_names) (add_binds fv_eqs) lthy)