1Yet Another Introduction to Constructive Type Theory
Steve Reeves
Department of Computer Science
University of Waikato
stever@waikato.ac.nz
Abstract
In this paper we present, very briefly, the background to CTT and introduce some of the proof
rules that formalize it. We then do some small examples to show how the rules are used and
look at two more general points: using a proof of the axiom of choice as a specification
transformer and showing how working constructively can mean that you use information
during program construction that, classically, would not be available.
1. Introduction
There has been much written, and there is much to say, about the ideas behind Martin-Löf's
Constructive Type Theory (or Constructive Set Theory) [M-L84]. If we move away from the
particular formal system that is CTT to the underlying philosophy and mathematics
(intuitionism) upon which it is based there is even more to say, and even more people have said
it [Bee85, Dum77].
Rather than rehearse all of the arguments for and against intuitionism and for and against CTT,
in this paper we will take the formalisation as it is and see some of what we can do with it.
Having said that, however, a few points will be made in the Conclusion.
If you have never seen CTT before, you are going to find even these small examples hard to
understand (I guarantee). However, there are many accessible introductions, with [M-
L84,Bee85,NPS90,Ree91,Tho91] being some examples.
1.1 Some jargon and definitions
Given that there are many ways of presenting CTT, we need to start with some jargon. The
descriptions given here of the machinery of the formal system are meant just to i