250 let val used = OldTerm.add_term_names (t, []) |
250 let val used = OldTerm.add_term_names (t, []) |
251 and vars = OldTerm.term_vars t; |
251 and vars = OldTerm.term_vars t; |
252 fun newName (Var(ix,_), (pairs,used)) = |
252 fun newName (Var(ix,_), (pairs,used)) = |
253 let val v = Name.variant used (string_of_indexname ix) |
253 let val v = Name.variant used (string_of_indexname ix) |
254 in ((ix,v)::pairs, v::used) end; |
254 in ((ix,v)::pairs, v::used) end; |
255 val (alist, _) = foldr newName ([], used) vars; |
255 val (alist, _) = List.foldr newName ([], used) vars; |
256 fun mk_inst (Var(v,T)) = (Var(v,T), |
256 fun mk_inst (Var(v,T)) = (Var(v,T), |
257 Free ((the o AList.lookup (op =) alist) v, T)); |
257 Free ((the o AList.lookup (op =) alist) v, T)); |
258 val insts = map mk_inst vars; |
258 val insts = map mk_inst vars; |
259 in subst_atomic insts t end; |
259 in subst_atomic insts t end; |
260 |
260 |