1310 let val vars = foldr add_term_vars [] |
1310 let val vars = foldr add_term_vars [] |
1311 (map fst dpairs @ map fst tpairs @ map snd tpairs) |
1311 (map fst dpairs @ map fst tpairs @ map snd tpairs) |
1312 (*unknowns appearing elsewhere be preserved!*) |
1312 (*unknowns appearing elsewhere be preserved!*) |
1313 val vids = map (#1 o #1 o dest_Var) vars; |
1313 val vids = map (#1 o #1 o dest_Var) vars; |
1314 fun rename(t as Var((x,i),T)) = |
1314 fun rename(t as Var((x,i),T)) = |
1315 (case assoc_string (al,x) of |
1315 (case AList.lookup (op =) al x of |
1316 SOME(y) => if x mem_string vids orelse y mem_string vids then t |
1316 SOME(y) => if x mem_string vids orelse y mem_string vids then t |
1317 else Var((y,i),T) |
1317 else Var((y,i),T) |
1318 | NONE=> t) |
1318 | NONE=> t) |
1319 | rename(Abs(x,T,t)) = |
1319 | rename(Abs(x,T,t)) = |
1320 Abs (if_none (assoc_string (al, x)) x, T, rename t) |
1320 Abs (if_none (AList.lookup (op =) al x) x, T, rename t) |
1321 | rename(f$t) = rename f $ rename t |
1321 | rename(f$t) = rename f $ rename t |
1322 | rename(t) = t; |
1322 | rename(t) = t; |
1323 fun strip_ren Ai = strip_apply rename (Ai,B) |
1323 fun strip_ren Ai = strip_apply rename (Ai,B) |
1324 in strip_ren end; |
1324 in strip_ren end; |
1325 |
1325 |