A Nominal Theory of Objects with Dependent Types

We design and study vObj, a calculus and dependent type system for objects and classes which can have types as members. Type members can be aliases, abstract types, or new types. The type system can model the essential concepts of JAVA’s inner classes as well as virtual types and family polymorphism found in BETA or GBETA. It can also model most concepts of SML-style module systems, including sharing constraints and higher-order functors, but excluding applicative functors. The type system can thus be used as a basis for unifying concepts that so far existed in parallel in advanced object systems and in module systems. The paper presents results on confluence of the calculus, soundness of the type system, and undecidability of type checking.

[1]  Xavier Leroy,et al.  A syntactic theory of type generativity and sharing , 1996, Journal of Functional Programming.

[2]  Erik Ernst,et al.  Family Polymorphism , 2001, ECOOP.

[3]  Ole Lehrmann Madsen,et al.  Virtual classes: a powerful mechanism in object-oriented programming , 1989, OOPSLA '89.

[4]  Matthias Felleisen,et al.  Classes and mixins , 1998, POPL '98.

[5]  Ole Lehrmann Madsen,et al.  Object-oriented programming in the BETA programming language , 1993 .

[6]  Atsushi Igarashi,et al.  Foundations for Virtual Types , 1999, Inf. Comput..

[7]  Rachid Guerraoui,et al.  ECOOP’ 99 — Object-Oriented Programming , 1999, Lecture Notes in Computer Science.

[8]  Sophia Drossopoulou,et al.  Java is Type Safe - Probably , 1997, ECOOP.

[9]  Martin Odersky,et al.  A Statically Safe Alternative to Virtual Types , 1998, ECOOP.

[10]  Philip Wadler,et al.  Featherweight Java: a minimal core calculus for Java and GJ , 2001, TOPL.

[11]  Gérard Boudol The Recursive Record Semantics of Objects Revisited , 2001, ESOP.

[12]  Brian Postow Book review: A Theory of Objects by Martin Abadi and Luca Cardelli (Springer-Verlag, 1996): Series--Monographs in Computer Science , 1999, SIGA.

[13]  Matthias Felleisen,et al.  A Syntactic Approach to Type Soundness , 1994, Inf. Comput..

[14]  Tobias Nipkow,et al.  Javalight is type-safe—definitely , 1998, POPL '98.

[15]  Ole Lehrmann Madsen,et al.  Virtual classes: a powerful mechanism in object-oriented programming , 1989, OOPSLA 1989.

[16]  Jorgen Lindskov Knudsen ECOOP 2001 - Object-Oriented Programming: 15th European Conference, Budapest, Hungary, June 18-22, 2001, Proceedings , 2001 .

[17]  Atsushi Igarashi,et al.  On Inner Classes , 2002, Inf. Comput..

[18]  Aaas News,et al.  Book Reviews , 1893, Buffalo Medical and Surgical Journal.

[19]  Kresten Krab Thorup Genericity in Java with Virtual Types , 1997, ECOOP.

[20]  Vitaly Shmatikov,et al.  A Core Calculus of Classes and Mixins , 1999, ECOOP.

[21]  Klaus Ostermann,et al.  Dynamically Composable Collaborations with Delegation Layers , 2002, ECOOP.

[22]  Karl Crary,et al.  What is a recursive module? , 1999, PLDI '99.

[23]  Claudio V. Russo First-Class Structures for Standard ML , 2000, Nord. J. Comput..

[24]  Mads Torgersen Virtual types are statically safe , 1998 .

[25]  Philip Wadler,et al.  Featherweight Java: a minimal core calculus for Java and GJ , 1999, OOPSLA '99.

[26]  Mads Torgersen,et al.  Unifying Genericity - Combining the Benefits of Virtual Types and Parameterized Classes , 1999, ECOOP.

[27]  Davide Ancona,et al.  A calculus of module systems , 2002, J. Funct. Program..

[28]  Miles H. Krumbine Hell , 1930, The Journal of Religion.

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

[30]  Guy L. Steele,et al.  The Java Language Specification , 1996 .

[31]  Guy L. Steele,et al.  Java Language Specification, Second Edition: The Java Series , 2000 .

[32]  Luca Cardelli,et al.  An Extension of System F with Subtyping , 1991, TACS.

[33]  Satoshi Matsuoka,et al.  ECOOP'97 — Object-Oriented Programming , 1997, Lecture Notes in Computer Science.

[34]  Gilad Bracha,et al.  Modularity meets inheritance , 1992, Proceedings of the 1992 International Conference on Computer Languages.

[35]  Mariangiola Dezani-Ciancaglini,et al.  A filter lambda model and the completeness of type assignment , 1983, Journal of Symbolic Logic.

[36]  Kim B. Bruce,et al.  Subtyping Is Not a Good "Match" for Object-Oriented Languages , 1997, ECOOP.

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

[38]  Davide Ancona,et al.  A Primitive Calculus for Module Systems , 1999, PPDP.

[39]  Yannis Smaragdakis,et al.  Implementing Layered Designs with Mixin Layers , 1998, ECOOP.

[40]  Luca Cardelli,et al.  Operations on records , 1989, Mathematical Structures in Computer Science.

[41]  Gilad Bracha,et al.  The programming language jigsaw: mixins, modularity and multiple inheritance , 1992 .

[42]  Luca Cardelli,et al.  Modula-3 language definition , 1992, SIGP.

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

[44]  Benjamin C. Pierce,et al.  Bounded quantification is undecidable , 1992, POPL '92.

[45]  Dominic Duggan,et al.  Mixin modules , 1996, ICFP '96.

[46]  Erik Ernst gbeta - a Language with Virtual Attributes, Block Structure, and Propagating, Dynamic Inheritance , 2000 .

[47]  Matthias Zenger,et al.  Type-Safe Prototype-Based Component Evolution , 2002, ECOOP.