let declaration
In formal type theory and the design of functional programming languages,
let declarations are a syntactic augmentation for internally expressing a substitution in-term.
Specifically, the instance of the substitution rule
is superseded by
In the former, both the in-term and in-type substitution occur at the level of the metatheory, whereas in the latter the in-term substitution occurs in the theory itself.
Note this is different to the Ξ -type which internalizes substitition in terms as a type, although let declaration, we impose the judgemental equality
Beyond syntactic nicety, let declarations can be used to formulate induction rules for a positive type independently from a Ξ -type, see e.g. Ξ£ type.