Summary: Implementing a Normalizer
Using Sized Heterogeneous Types
Andreas Abel 1
Institut für Informatik
Oettingenstr. 67, D80538 München, GERMANY
In the simplytyped lambdacalculus, a hereditary substitution replaces a free variable
in a normal form r by another normal form s of type a, removing freshly created
redexes on the fly. It can be defined by lexicographic induction on a and r, thus,
giving rise to a structurally recursive normalizer for the simplytyped lambdacalculus.
We generalize this scheme to simultaneous substitutions, preserving its simple
termination argument. We further implement hereditary simultaneous substitutions
in a functional programming language with sized heterogeneous inductive types, F #
arriving at an interpreter whose termination can be tracked by the type system of its
host programming language.
Keywords: Sized Types, Heterogeneous Types, Nested Types, Interpreter, Normalization, De Bruijn Terms