It is clearly safe to set the update flag of every lambda-form to u, thereby updating every closure.
Higher order abstract syntax is an abstract syntax representation that extends syntax trees with the abstraction mechanism of the lambda calculus.
The standard method of proving this fact is via lambda representability of all (partial) recursive functions.
Each set of equivalence classes is called a limited model of simply typed lambda calculus.
This is in contrast to the simply typed lambda calculus and its extensions, which ignore type information at runtime.
In this paper, we compare function definability in intersection type systems with function definability in the simply typed lambda calculus.
While the relation to lambda lifting is apparent, the authors only conjecture that lifting and dropping are inverses.
A system with higher order functions, for instance, necessarily has term variables because of lambda abstraction.