Abstract types have existential type

Abstract data type declarations appear in typed programming languages like Ada, Alphard, CLU and ML. This form of declaration binds a list of identifiers to a type with associated operations, a composite “value” we call a data algebra. We use a second-order typed lambda calculus SOL to show how data algebras may be given types, passed as parameters, and returned as results of function calls. In the process, we discuss the semantics of abstract data type declarations and review a connection between typed programming languages and constructive logic.

[1]  John C. Reynolds,et al.  Types, Abstraction and Parametric Polymorphism , 1983, IFIP Congress.

[2]  John C. Reynolds,et al.  Polymorphism is not Set-Theoretic , 1984, Semantics of Data Types.

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

[4]  Joseph A. Goguen,et al.  Putting Theories Together to Make Specifications , 1977, IJCAI.

[5]  M. Arbib,et al.  Arrows, Structures, and Functors: The Categorical Imperative , 1975 .

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

[7]  Craig Schaffert,et al.  Abstraction mechanisms in CLU , 1977, Commun. ACM.

[8]  John C. Mitchell,et al.  The essence of ML , 1988, POPL '88.

[9]  John C. Mitchell,et al.  Representation independence and data abstraction , 1986, POPL '86.

[10]  Kim B. Bruce,et al.  The Semantics of Second Order Polymorphic Lambda Calculus , 1984, Semantics of Data Types.

[11]  George Gratzer,et al.  Universal Algebra , 1979 .

[12]  Daniel Leivant,et al.  The Expressiveness of Simple and Second-Order Type Structures , 1983, JACM.

[13]  Nancy Jean Mccracken,et al.  An investigation of a programming language with a polymorphic type structure. , 1979 .

[14]  Jean D. etc. Ichbiah Reference Manual for the ADA Programming Language , 1983 .

[15]  John C. Mitchell,et al.  Abstract types have existential types , 1985, POPL.

[16]  Christopher T. Haynes A Theory of Data Type Representation Independence , 1984, Semantics of Data Types.

[17]  Robert L. Constable,et al.  Programs and types , 1980, 21st Annual Symposium on Foundations of Computer Science (sfcs 1980).

[18]  Mary Shaw,et al.  An introduction to the construction and verification of Alphard programs , 1976, ICSE '76.

[19]  H. Läuchli An Abstract Notion of Realizability for Which Intuitionistic Predicate Calculus is Complete , 1970 .

[20]  S. Lane Categories for the Working Mathematician , 1971 .

[21]  Daniel Leivant,et al.  Polymorphic type inference , 1983, POPL '83.

[22]  M. Fitting Intuitionistic logic, model theory and forcing , 1969 .

[23]  D. Kapur TOWARDS A THEORY FOR ABSTRACT DATA TYPES , 1980 .

[24]  P. Martin-Löf Constructive mathematics and computer programming , 1984 .

[25]  David B. MacQueen Modules for standard ML , 1984, LFP '84.

[26]  James Hook,et al.  Understanding Russell- A First Attempt , 1984, Semantics of Data Types.

[27]  Alan J. Demers,et al.  "Type-completeness" as a language principle , 1980, POPL '80.

[28]  D. Prawitz Natural Deduction: A Proof-Theoretical Study , 1965 .

[29]  Craig Schaffert,et al.  Abstraction mechanisms in CLU , 1977 .

[30]  James H. Morris,et al.  Types are not sets , 1973, POPL.

[31]  Butler W. Lampson,et al.  A Kernel Language for Abstract Data Types and Modules , 1984, Semantics of Data Types.

[32]  R. Tennant Algebra , 1941, Nature.

[33]  John C. Mitchell,et al.  Semantic Models for Second-Order Lambda Calculus , 1984, FOCS.

[34]  Horst Herrlich,et al.  Category theory , 1979 .

[35]  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 .

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

[37]  John C. Mitchell,et al.  Polymorphic Type Inference and Containment , 1988, Inf. Comput..

[38]  John C. Reynolds,et al.  Towards a theory of type structure , 1974, Symposium on Programming.

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

[40]  Ellis Horowitz,et al.  Abstract data types and software validation , 1978, CACM.

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

[42]  Michael O'Donnell,et al.  A programming language theorem which is independent of Peano Arithmetic , 1979, STOC.

[43]  Henk Barendregt,et al.  The Lambda Calculus: Its Syntax and Semantics , 1985 .

[44]  Douglas J. Howe,et al.  Impredicative Strong Existential Equivalent to Type:Type , 1986 .

[45]  E. Lohse,et al.  A Correspondence Between ALGOL 60 and Church's Lambda- Notation: Part I* , 1965 .

[46]  James E. Donahue On the Semantics of "Data Type" , 1977, SIAM J. Comput..

[47]  Craig Schaffert,et al.  CLU Reference Manual , 1984, Lecture Notes in Computer Science.

[48]  Nancy McCracken,et al.  The Typechecking of Programs with Implicit Type Structure , 1984, Semantics of Data Types.

[49]  Soren Stenlund Combinators, Lambda-Terms and Proof Theory , 1972 .

[50]  Richard Statman,et al.  Intuitionistic Propositional Logic is Polynomial-Space Complete , 1979, Theor. Comput. Sci..

[51]  D. Prawitz Ideas and Results in Proof Theory , 1971 .

[52]  Alan J. Demers,et al.  Data types, parameters and type checking , 1980, POPL '80.

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

[54]  Robin Milner The standard ML core language , 1984 .

[55]  R. Statman Number theoretic functions computable by polymorphic programs , 1981, 22nd Annual Symposium on Foundations of Computer Science (sfcs 1981).

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

[57]  John C. Mitchell,et al.  Second-Order Logical Relations (Extended Abstract) , 1985, Logic of Programs.

[58]  Mary Shaw Alphard: Form and Content , 1981, Springer New York.

[59]  A. Troelstra Metamathematical investigation of intuitionistic arithmetic and analysis , 1973 .

[60]  Alan J. Demers,et al.  Data types as values: polymorphism, type-checking, encapsulation , 1978, POPL '78.

[61]  Saul A. Kripke,et al.  Semantical Analysis of Intuitionistic Logic I , 1965 .

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

[63]  P. J. Landin,et al.  The next 700 programming languages , 1966, CACM.

[64]  A. R. D. Mathias,et al.  Cambridge Summer School in Mathematical Logic , 1973 .

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

[66]  S. Kleene Realizability: A retrospective survey , 1973 .

[67]  de Ng Dick Bruijn,et al.  A survey of the project Automath , 1980 .

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

[69]  John C. Mitchell,et al.  The Semantics of Second-Order Lambda Calculus , 1990, Inf. Comput..