An Imperative Object Calculus

We develop an imperative calculus of objects. Its main type constructor is the one for object types, which incorporate variance annotations and Self types. A subtyping relation between object types supports object subsumption. The type system for objects relies on unusual but beneficial assumptions about the possible subtypes of an object type. With the addition of polymorphism, the calculus can express classes and inheritance.

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

[2]  Randall B. Smith,et al.  Self: The power of simplicity , 1987, OOPSLA 1987.

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

[4]  Martín Abadi,et al.  A Theory of Primitive Objects: Second-Order Systems , 1995, Sci. Comput. Program..

[5]  Henry Lieberman,et al.  A Shared View of Sharing: The Treaty of Orlando , 1988, Object-Oriented Concepts, Databases, and Applications.

[6]  Robert Harper,et al.  A Simplified Account of Polymorphic References , 1994, Inf. Process. Lett..

[7]  John C. Mitchell,et al.  A lambda calculus of objects and method specialization , 1993, [1993] Proceedings Eighth Annual IEEE Symposium on Logic in Computer Science.

[8]  Pierre Cointe,et al.  Prototype-Based Languages: From a New Taxonomy to Constructive Proposals and Their Validation , 1992, OOPSLA.

[9]  簡聰富,et al.  物件導向軟體之架構(Object-Oriented Software Construction)探討 , 1989 .

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

[11]  Martin Hofmann,et al.  Generation of verification conditions for Abadi and Leino's Logic of Objects (Extended Abstract) , 1910 .

[12]  Martín Abadi,et al.  A Logic of Object-Oriented Programs , 1997, Verification: Theory and Practice.

[13]  William R. Cook,et al.  A Proposal for Making Eiffel Type-Safe , 1989, Comput. J..

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

[15]  Xavier Leroy,et al.  Polymorphic typing of an algorithmic language , 1992 .

[16]  Martín Abadi,et al.  A Theory of Primitive Objects - Scond-Order Systems , 1994, ESOP.

[17]  Mitchell Wand,et al.  Type inference for record concatenation and multiple inheritance , 1989, [1989] Proceedings. Fourth Annual Symposium on Logic in Computer Science.

[18]  Mads Tofte,et al.  Type Inference for Polymorphic References , 1990, Inf. Comput..

[19]  Benjamin C. Pierce,et al.  A record calculus based on symmetric concatenation , 1991, POPL '91.

[20]  Luca Cardelli,et al.  Operations on Records , 1989, Mathematical Foundations of Programming Semantics.

[21]  Luca Cardelli,et al.  A language with distributed scope , 1995, POPL '95.

[22]  Martín Abadi,et al.  Baby Modula-3 and a theory of objects , 1994, Journal of Functional Programming.

[23]  Robert W. Floyd,et al.  Assigning Meanings to Programs , 1993 .

[24]  Craig Chambers,et al.  Parents are shared parts of objects: Inheritance and encapsulation in SELF , 1991, LISP Symb. Comput..

[25]  Luca Cardelli,et al.  Subtyping recursive types , 1991, POPL '91.

[26]  Martín Abadi,et al.  A semantics of object types , 1994, Proceedings Ninth Annual IEEE Symposium on Logic in Computer Science.

[27]  Martín Abadi,et al.  A Theory of Primitive Objects , 1996 .

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

[29]  Kim B. Bruce,et al.  PolyTOIL: A Type-Safe Polymorphic Object-Oriented Language , 1995, ECOOP.

[30]  Luca Cardelli,et al.  Extensible records in a pure calculus of subtyping , 1994 .

[31]  Kim B. Bruce,et al.  A modest model of records, inheritance and bounded quantification , 1988, [1988] Proceedings. Third Annual Information Symposium on Logic in Computer Science.

[32]  Martín Abadi,et al.  An imperative object calculus: Basic typing and soundness , 1995 .

[33]  Alan Borning,et al.  Classes versus Prototypes in Object-Oriented Languages , 1986, FJCC.

[34]  Clemens A. Szyperski,et al.  Engineering a Programming Language: The Type and Class System of Sather , 1994, Programming Languages and System Architectures.

[35]  Mario Tokoro,et al.  Object-oriented concurrent programming , 1987 .

[36]  Scott F. Smith,et al.  An interpretation of typed OOP in a language with state , 1995, LISP Symb. Comput..

[37]  Didier Rémy,et al.  Type checking records and variants in a natural extension of ML , 1989, POPL '89.

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