A Type Theoretical Analysis of Some Aspects of Programming Languages
We present three papers on the application of Martin-Löf's type theory to the analysis of programming languages.
In the first paper, we present formal proofs in type theory of the combinatorial completeness of two calculi of combinators. The statement formulates the ability of the calculi to describe functions. The calculi we consider are that of untyped combinators and that of simply typed combinators. In the latter case the statement can be understood, through the Curry-Howard correspondence, as formulating the deductive completeness of the Hilbert style presentation of minimal logic. The formalization was carried out with the help of the proof editor Alf and is thus machine checked. The paper includes an appendix with an edited version of the implementation in Alf.
In the second paper, we consider typed combinatory calculi and establish formally in type theory that all combinators have a normal form. Again the proofs were carried out with the help of Alf and thus machine checked. Both simply typed combinators and a combinator version of system T are considered. The proofs of normalization are then used to obtain an algorithm to compute normal forms.
In the third paper, we present a formal version of the extension of type theory to include infinite objects as given by Per Martin-Löf. We also consider some programming examples and the relation of this extended theory to lazy functional languages. In carrying out the formal presentation, we made use of a presentation of type theory suitable for metamathematical studies which has been put forward by Per Martin-Löf. The monograph also includes a complete presentation of this.