diff -r 1b33a7a3c80c -r f012cbfd96d0 src/Pure/variable.ML --- a/src/Pure/variable.ML Sat Nov 30 21:01:59 2024 +0100 +++ b/src/Pure/variable.ML Sat Nov 30 22:02:36 2024 +0100 @@ -441,6 +441,13 @@ fold new_fixed args #> pair (map (#2 o #1) args); +fun variant ctxt raw_xs = + let + val names = names_of ctxt; + val xs = map (fn x => Name.clean x |> Name.is_internal x ? Name.internal) raw_xs; + val (xs', names') = fold_map Name.variant xs names |>> (is_body ctxt ? map Name.skolem); + in (names', xs ~~ xs') end; + in fun add_fixes_binding bs ctxt = @@ -461,20 +468,13 @@ else (xs, fold Name.declare xs names); in ctxt |> new_fixes names' ((xs ~~ xs') ~~ map Binding.pos_of bs) end; -fun variant_names ctxt raw_xs = - let - val names = names_of ctxt; - val xs = map (fn x => Name.clean x |> Name.is_internal x ? Name.internal) raw_xs; - val (xs', names') = fold_map Name.variant xs names |>> (is_body ctxt ? map Name.skolem); - in (names', xs ~~ xs') end; - fun variant_fixes xs ctxt = - let val (names', vs) = variant_names ctxt xs; + let val (names', vs) = variant ctxt xs; in ctxt |> new_fixes names' (map (rpair Position.none) vs) end; fun bound_fixes xs ctxt = let - val (names', vs) = variant_names ctxt (map #1 xs); + val (names', vs) = variant ctxt (map #1 xs); val (ys, ctxt') = fold_map next_bound (map2 (fn (x', _) => fn (_, T) => (x', T)) vs xs) ctxt; val fixes = map2 (fn (x, _) => fn Free (y, _) => ((x, y), Position.none)) vs ys; in ctxt' |> new_fixes names' fixes end;