let shift l ty i =
match l with
| Mloc l -> Mloc (M.shift l ty i)
| PRef p -> Path (add_index p i ty)
| ARef p -> ARef (add_index p i ty)
| PRpar (p,0) | Path p ->
let loc = Lookup.mloc_of_path p in
Mloc (M.shift loc ty i)
| PRpar (p,n) -> PRpar (add_index p i ty,n)
| ARpar (p,n) -> ARpar (add_index p i ty,n)