Abstract types have existential types

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]  Daniel Leivant,et al.  Polymorphic type inference , 1983, POPL '83.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

[18]  John Mitchell,et al.  Type Inference and Type Containment , 1984, Semantics of Data Types.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

[33]  Jonathan Rosenberg,et al.  A methodology for programming abstract data types in Ada , 1982, AdaTEC '82.

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

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

[36]  Desmond Fearnley-Sander,et al.  Universal Algebra , 1982 .

[37]  Rod M. Burstall,et al.  Programming with Modules as Typed Functional Programming , 1984, FGCS.

[38]  John C. Reynolds,et al.  The craft of programming , 1981, Prentice Hall International series in computer science.

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

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

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

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

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

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

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

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

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

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

[49]  Sören Stenlund Combinators, λ-Terms and Proof Theory , 2011 .

[50]  P. J. Landin,et al.  Correspondence between ALGOL 60 and Church's Lambda-notation , 1965, Commun. ACM.

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

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

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

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

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

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

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

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

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