 
Summary: Specication and Verication of a Formal
System for Structurally Recursive Functions
Andreas Abel
Department of Computer Science, University of Munich
abel@informatik.unimuenchen.de
Abstract. A type theoretic programming language is introduced that is
based on lambda calculus with coproducts, products and inductive types,
and additionally allows the denition of recursive functions in the way
that is common in most functional programming languages. A formal
system is presented that checks whether such a denition is structurally
recursive and a soundness theorem is shown for this system. Thus all
functions passing this check are ensured to terminate on all inputs. For
the moment only nonmutual recursive functions are considered.
1 Introduction
In lambda calculi with inductive types the standard means to construct a func
tion over an inductive type is the recursor. This method, however, has several
drawbacks, as discussed, e.g., in [Coq92]. One of them is that it is not very in
tuitive: For instance it is not obvious how to code the following \division by
2"function with recursors:
half 0 = 0
