 
Summary: Under consideration for publication in J. Functional Programming 1
Implementing a Normalizer
Using Sized Heterogeneous Types
ANDREAS ABEL#
Institut für Informatik
LudwigMaximiliansUniversität München
Oettingenstr. 67, D80538 München, GERMANY
(email: andreas.abel@ifi.lmu.de)
Abstract
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 y. It can be dened by lexicographic induction on a and r, thus, giving rise to
a structurally recursive normalizer for the simplytyped lambdacalculus. We implement
hereditary substitutions in a functional programming language with sized heterogeneous
inductive types, F #
b, arriving at an interpreter whose termination can be tracked by the
type system of its host programming language.
1 Introduction
An interpreter for a total programming language, i. e., a language in which only
terminating programs can be written, will naturally terminate on all executions.
