Type-Theoretic Methodology for Practical Programming Languages

The significance of type theory to the theory of programming languages has long been recognized. Advances in programming languages have often derived from understanding that stems from type theory. However, these applications of type theory to practical programming languages have been indirect; the differences between practical languages and type theory have prevented direct connections between the two. This dissertation presents systematic techniques directly relating practical programming languages to type theory. These techniques allow programming languages to be interpreted in the rich mathematical domain of type theory. Such interpretations lead to semantics that are at once denotational and operational, combining the advantages of each, and they also lay the foundation for formal verification of computer programs in type theory. Previous type theories either have not provided adequate expressiveness to interpret practical languages, or have provided such expressiveness at the expense of essential features of the type theory. In particular, no previous type theory has supported a notion of partial functions (needed to interpret recursion in practical languages), and a notion of total functions and objects (needed to reason about data values), and an intrinsic notion of equality (needed for most interesting results). This dissertation presents the first type theory incorporating all three, and discusses issues arising in the design of that type theory. This type theory is used as the target of a type-theoretic semantics for a expressive programming calculus. This calculus may serve as an internal language for a variety of functional programming languages. The semantics is stated as a syntax-directed embedding of the programming calculus into type theory. A critical point arising in both the type theory and the type-theoretic semantics is the issue of admissibility. Admissibility governs what types it is legal to form recursive functions over. To build a useful type theory for partial functions it is necessary to have a wide class of admissible types. In particular, it is necessary for all the types arising in the type-theoretic semantics to be admissible. In this dissertation I present a class of admissible types that is considerably wider than any previously known class.

[1]  Robert Harper,et al.  A type-theoretic interpretation of standard ML , 2000, Proof, Language, and Interaction.

[2]  Christine Paulin-Mohring,et al.  The coq proof assistant reference manual , 2000 .

[3]  Lars Birkedal,et al.  Relational Interpretations of Recursive Types in an Operational Setting , 1999, Inf. Comput..

[4]  MorrisettGreg,et al.  From system F to typed assembly language , 1999 .

[5]  Karl Crary,et al.  Simple, Efficient Object Encoding using Intersection Types , 1998 .

[6]  Luca Cardelli,et al.  Comparing Object Encodings , 1997, Inf. Comput..

[7]  Karl Crary,et al.  Foundations for the implementation of higher-order subtyping , 1997, ICFP '97.

[8]  Chris Okasaki,et al.  Catenable double-ended queues , 1997, ICFP '97.

[9]  Didier Rémy,et al.  Objective ML: a simple object-oriented extension of ML , 1997, POPL '97.

[10]  John C. Reynolds,et al.  The essence of ALGOL , 1997 .

[11]  Douglas J. Howe Semantic Foundations for Embedding HOL in Nuprl , 1996, AMAST.

[12]  Uday S. Reddy,et al.  Imperative functional programming , 1996, CSUR.

[13]  Martín Abadi,et al.  An interpretation of objects and object types , 1996, POPL '96.

[14]  Martín Abadi,et al.  A Theory of Objects , 1996, Monographs in Computer Science.

[15]  Jason Hickey,et al.  Formal Objects in Type Theory Using Very Dependent Types , 1996 .

[16]  Simon L. Peyton Jones,et al.  State in Haskell , 1995, LISP Symb. Comput..

[17]  Greg Morrisett,et al.  Compiling with Types , 1995 .

[18]  Scott F. Smith Hybrid Partial-Total Type Theory , 1995, Int. J. Found. Comput. Sci..

[19]  Paul B. Jackson Enhancing the NUPRL Proof Development System and Applying it to Computational Abstract Algebra , 1995 .

[20]  Xavier Leroy,et al.  Applicative functors and fully transparent higher-order modules , 1995, POPL '95.

[21]  R.L. Constable,et al.  Experience using type theory as a foundation for computer science , 1991, Proceedings of Tenth Annual IEEE Symposium on Logic in Computer Science.

[22]  Martín Abadi,et al.  A Theory of Primitive Objects - Untyped and First-Order Systems , 1994, TACS.

[23]  Didier Rémy,et al.  Programming Objects with ML-ART, an Extension to ML with Abstract and Record Types , 1994, TACS.

[24]  Mads Tofte,et al.  A Semantics for Higher-Order Functors , 1994, ESOP.

[25]  Kim B. Bruce A paradigmatic object-oriented programming language: Design, static typing and semantics , 1994, Journal of Functional Programming.

[26]  Benjamin C. Pierce,et al.  Simple type-theoretic foundations for object-oriented programming , 1994, Journal of Functional Programming.

[27]  Xavier Leroy,et al.  Manifest types, modules, and separate compilation , 1994, POPL '94.

[28]  Mark Lillibridge,et al.  A type-theoretic approach to higher-order modules with sharing , 1994, POPL '94.

[29]  Erik Palmgren An Information System Interpretation of Martin-Löf's Partial Type Theory with Universes , 1993, Inf. Comput..

[30]  M. Gordon,et al.  Introduction to HOL: a theorem proving environment for higher order logic , 1993 .

[31]  John C. Mitchell,et al.  On the type structure of standard ML , 1993, TOPL.

[32]  Mark Lillibridge,et al.  Explicit polymorphism and CPS conversion , 1993, POPL '93.

[33]  Furio Honsell,et al.  A framework for defining logics , 1993, JACM.

[34]  Robert Harper,et al.  Constructing Type Systems over an Operational Semantics , 1992, J. Symb. Comput..

[35]  Xavier Leroy,et al.  Unboxed objects and polymorphic typing , 1992, POPL '92.

[36]  Philip Wadler,et al.  The essence of functional programming , 1992, POPL '92.

[37]  Philip Wadler,et al.  Comprehending monads , 1990, Mathematical Structures in Computer Science.

[38]  Robert Harper,et al.  Type Checking with Universes , 1991, Theor. Comput. Sci..

[39]  Philippe Audebaud,et al.  Partial objects in the calculus of constructions , 1991, [1991] Proceedings Sixth Annual IEEE Symposium on Logic in Computer Science.

[40]  Thierry Coquand,et al.  Inheritance as Implicit Coercion , 1991, Inf. Comput..

[41]  Eugenio Moggi,et al.  Notions of Computation and Monads , 1991, Inf. Comput..

[42]  Robin Milner,et al.  Definition of standard ML , 1990 .

[43]  John C. Mitchell,et al.  Higher-order modules and the phase distinction , 1989, POPL '90.

[44]  T. Coquand,et al.  Metamathematical investigations of a calculus of constructions , 1989 .

[45]  Douglas J. Howe Equality in lazy computation systems , 1989, [1989] Proceedings. Fourth Annual Symposium on Logic in Computer Science.

[46]  John C. Mitchell,et al.  F-bounded quantification for object-oriented programming , 1989 .

[47]  J. Girard,et al.  Proofs and types , 1989 .

[48]  Luca Cardelli,et al.  Typeful Programming , 1989, Formal Description of Programming Concepts.

[49]  Scott F. Smith Partial Objects in Type Theory , 1988 .

[50]  John C. Mitchell,et al.  Abstract types have existential type , 1988, TOPL.

[51]  David A. Basin,et al.  An Environment For Automated Reasoning About Partial Functions , 1988, CADE.

[52]  Robert L. Constable,et al.  Computational foundations of basic recursive function theory , 1988, [1988] Proceedings. Third Annual Information Symposium on Logic in Computer Science.

[53]  Thierry Coquand,et al.  The Calculus of Constructions , 1988, Inf. Comput..

[54]  Samuel N. Kamin Inheritance in smalltalk-80: a denotational definition , 1988, POPL '88.

[55]  Luca Cardelli,et al.  Structural subtyping and the notion of power type , 1988, POPL '88.

[56]  P. Mendler Inductive Definition in Type Theory , 1988 .

[57]  Luca Cardelli,et al.  Phase Distinctions in Type Theory , 1988 .

[58]  Stuart Allen A Non-Type-Theoretic Definition of Martin-Löf's Types , 1987, LICS.

[59]  Douglas J. Howe The Computational Behaviour of Girard's Paradox , 1987, LICS.

[60]  Robert L. Constable,et al.  Partial Objects In Constructive Type Theory , 1987, Logic in Computer Science.

[61]  S. Allen A Non-Type-Theoretic Semantics for Type-Theoretic Language , 1987 .

[62]  Thierry Coquand,et al.  An Analysis of Girard's Paradox , 1986, LICS.

[63]  Rance Cleaveland,et al.  Implementing mathematics with the Nuprl proof development system , 1986 .

[64]  Albert R. Meyer,et al.  "Type" is not a type , 1986, POPL '86.

[65]  David B. MacQueen Using dependent types to express modular structure , 1986, POPL '86.

[66]  Per Martin-Löf,et al.  Constructive mathematics and computer programming , 1984 .

[67]  Alan Mycroft,et al.  Polymorphic Type Schemes and Recursive Definitions , 1984, Symposium on Programming.

[68]  Robert L. Constable,et al.  The Type Theory of PL/CV3 , 1984, TOPL.

[69]  Robert L. Constable,et al.  Constructive Mathematics as a Programming Logic I: Some Principles of Theory , 1983, FCT.

[70]  Michael Beeson,et al.  Recursive models for constructive set theories , 1982, Ann. Math. Log..

[71]  R. L. Constable Intensional analysis of functions and types , 1982 .

[72]  F. Dick A survey of the project Automath , 1980 .

[73]  Michael J. C. Gordon,et al.  Edinburgh LCF: A mechanised logic of computation , 1979 .

[74]  P. Martin-Löf An Intuitionistic Theory of Types: Predicative Part , 1975 .

[75]  D. Scott Models for Various Type-Free Calculi , 1973 .

[76]  Shigeru Igarashi Admissibility of fixed-point induction in first- order logic of typed theories , 1972, International Sympoisum on Theoretical Programming.

[77]  J. Y. Girard,et al.  Interpretation fonctionelle et elimination des coupures dans l'aritmetique d'ordre superieur , 1972 .

[78]  J. Girard Une Extension De ĽInterpretation De Gödel a ĽAnalyse, Et Son Application a ĽElimination Des Coupures Dans ĽAnalyse Et La Theorie Des Types , 1971 .

[79]  Christopher Strachey,et al.  Toward a mathematical semantics for computer languages , 1971 .

[80]  Dana S. Scott,et al.  Outline of a Mathematical Theory of Computation , 1970 .

[81]  William A. Howard,et al.  The formulae-as-types notion of construction , 1969 .

[82]  G. B. M. Principia Mathematica , 1911, Nature.