| | |
Summary: Implementing a Normalizer
Using Sized Heterogeneous Types
Andreas Abel1
Institut für Informatik
Ludwig-Maximilians-Universität München
Oettingenstr. 67, D-80538 München, GERMANY
abel@tcs.ifi.lmu.de
Abstract
In the simply-typed lambda-calculus, 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 simply-typed lambda-calculus.
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, Fb,
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
1. INTRODUCTION
Inductive types T can be expressed as the least solution of the recursive equation F X = X for
|