359 (u as Const (_, T), ts) => apply terms T u (map (traverse env) ts) |
359 (u as Const (_, T), ts) => apply terms T u (map (traverse env) ts) |
360 | (u as Free (_, T), ts) => apply terms T u (map (traverse env) ts) |
360 | (u as Free (_, T), ts) => apply terms T u (map (traverse env) ts) |
361 | (u as Bound i, ts) => |
361 | (u as Bound i, ts) => |
362 appl0 (nth arities i) (map (traverse env) ts) (u, nth Ts i) |
362 appl0 (nth arities i) (map (traverse env) ts) (u, nth Ts i) |
363 | (Abs (n, T, u), ts) => |
363 | (Abs (n, T, u), ts) => |
364 let val env' = (get_arities 0 u [] :: arities, T :: Ts) |
364 let val env' = (get_arities 0 u [0] :: arities, T :: Ts) |
365 in traverses env (Abs (n, T, traverse env' u)) ts end |
365 in traverses env (Abs (n, T, traverse env' u)) ts end |
366 | (u, ts) => traverses env u ts) |
366 | (u, ts) => traverses env u ts) |
367 and traverses env t ts = Term.list_comb (t, map (traverse env) ts) |
367 and traverses env t ts = Term.list_comb (t, map (traverse env) ts) |
368 in map (traverse ([], [])) ts end |
368 in map (traverse ([], [])) ts end |
369 |
369 |