Summary: Type-Based Termination of Generic Programs
Institut für Informatik
Oettingenstr. 67, D-80538 München, GERMANY
Instances of a polytypic or generic program for a concrete recursive type often exhibit
a recursion scheme that is derived from the recursion scheme of the instantiation type.
In practice, the programs obtained from a generic program are usually terminating, but
the proof of termination cannot be carried out with traditional methods as term orderings
alone, since termination often crucially relies on the program type. In this article, it is
demonstrated that type-based termination using sized types handles such programs very
well. A framework for sized polytypic programming is developed which ensures (type-
based) termination of all instances.
In the last decade, polytypic or generic programming has been explored for func-
tional programming languages [26,19,22,23]. With polytypic programming, repeti-
tive tasks, like writing a size-function for data structures of type A, can be mech-
anized by writing a generic size-function which then can be instantiated to all
sorts of types A. Over the years, many useful examples of generic programs have