Polymorphic
Locally nameless (similar to
Bound
) for capture avoidance and alpha equivalence
Using a simple IntMap to do the substitution because the substitution will