src/HOL/Tools/inductive.ML
changeset 81519 cdc43c0fdbfc
parent 80727 49067bf1cf92
child 81525 3e55334ef5af
--- a/src/HOL/Tools/inductive.ML	Sat Nov 30 22:02:36 2024 +0100
+++ b/src/HOL/Tools/inductive.ML	Sat Nov 30 22:33:21 2024 +0100
@@ -925,12 +925,12 @@
     val predT = replicate k HOLogic.boolT ---> argTs ---> HOLogic.boolT;
     val fp_const = if coind then \<^Const>\<open>gfp predT\<close> else \<^Const>\<open>lfp predT\<close>;
 
+    val ctxt1 = fold Variable.declare_names intr_ts lthy
     val p :: xs =
-      map Free (Variable.variant_frees lthy intr_ts
+      map Free (Variable.variant_names ctxt1
         (("p", predT) :: (mk_names "x" (length argTs) ~~ argTs)));
-    val bs =
-      map Free (Variable.variant_frees lthy (p :: xs @ intr_ts)
-        (map (rpair HOLogic.boolT) (mk_names "b" k)));
+    val ctxt2 = fold Variable.declare_names (p :: xs) ctxt1
+    val bs = map Free (Variable.variant_names ctxt2 (map (rpair HOLogic.boolT) (mk_names "b" k)));
 
     fun subst t =
       (case dest_predicate cs params t of
@@ -1001,8 +1001,8 @@
         map_index (fn (i, ((b, mx), c)) =>
           let
             val Ts = arg_types_of (length params) c;
-            val xs =
-              map Free (Variable.variant_frees lthy' intr_ts (mk_names "x" (length Ts) ~~ Ts));
+            val ctxt = fold Variable.declare_names intr_ts lthy';
+            val xs = map Free (Variable.variant_names ctxt (mk_names "x" (length Ts) ~~ Ts));
           in
             ((b, mx),
               ((Thm.make_def_binding internals b, []), fold_rev lambda (params @ xs)