Higher-order intersection types and multiple inheritance

We study a natural generalization of System F ! with intersection types, establishing basic structural properties and constructing a semantic model based on partial equivalence relations to prove the soundness of typing. As an application of this calculus, we deene a simple typed model of object-oriented programming with multiple inheritance. One of the rst applications of subtyping in-calculi was modeling the reenement of interfaces in object-oriented programming languages Cardelli, 1984]. The formal subtype relation ? ` S T models the assertion that the objects in some collection S provide more services than those in T, so that it is safe to use a member of S in any context where a member of T is expected. Subtyping itself is a straightforward concept, but it took years to build full-scale models of real object-oriented languages on this foundation. Treating the interaction between interface reenement and encapsulation of objects has required higher-order gener-Using these techniques, a number of fairly complete \foundational object models" related to those found in lan-Current work in this area also includes models of the object-oriented features in languages such as CLOS Castagna et al., 1995, Castagna, 1992], which are less closely related to the results described here. The common goal of these studies is to prove the safety of a type system describing a set of high-level syntactic constructs for object encapsulation, message passing, and inheritance. Most proceed either by mapping the high-level syntax directly into a deno-tational model and proving the soundness of this interpretation using standard semantic techniques or by reasoning directly on the operational semantics of the source calculus. Others translate the high-level syntax into a more conventional-calculus, whose own

[1]  de Ng Dick Bruijn Lambda calculus notation with nameless dummies, a tool for automatic formula manipulation, with application to the Church-Rosser theorem , 1972 .

[2]  Dana S. Scott,et al.  Data Types as Lattices , 1976, SIAM J. Comput..

[3]  Mariangiola Dezani-Ciancaglini,et al.  A new type assignment for λ-terms , 1978, Arch. Math. Log..

[4]  C. K. R. T. Jones,et al.  The ϱ-Calculus , 1981, Math. Log. Q..

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

[6]  David Robson,et al.  Smalltalk-80: The Language and Its Implementation , 1983 .

[7]  Luca Cardelli,et al.  A Semantics of Multiple Inheritance , 1984, Inf. Comput..

[8]  John C. Mitchell A type-inference approach to reduction properties and semantics of polymorphic expressions (summary) , 1986, LFP '86.

[9]  J. Roger Hindley,et al.  Introduction to combinators and λ-calculus , 1986, Acta Applicandae Mathematicae.

[10]  Randall B. Smith,et al.  SELF: The power of simplicity , 1987, OOPSLA '87.

[11]  John C. Reynolds,et al.  Preliminary design of the programming language Forsythe , 1988 .

[12]  John C. Mitchell,et al.  F-bounded polymorphism for object-oriented programming , 1989, FPCA.

[13]  John C. Mitchell Toward a typed foundation for method specialization and inheritance , 1989, POPL '90.

[14]  William R. Cook,et al.  Inheritance is not subtyping , 1989, POPL '90.

[15]  Kim B. Bruce,et al.  A Modest Model of Records, Inheritance and Bounded Quantification , 1990, Inf. Comput..

[16]  Luca Cardelli,et al.  A semantic basis for quest , 1990, Journal of Functional Programming.

[17]  Giorgio Ghelli,et al.  Coherence of Subsumption , 1990, CAAP.

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

[19]  F. Cardone,et al.  Two extensions of Curry's type inference system , 1990 .

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

[21]  B. Pierce Programming with intersection types and bounded polymorphism , 1992 .

[22]  Giuseppe Rosolini,et al.  Extensional PERs , 1992, Inf. Comput..

[23]  Giorgio Ghelli,et al.  Coherence of Subsumption, Minimum Typing and Type-Checking in F<= , 1992, Math. Struct. Comput. Sci..

[24]  John C. Mitchell,et al.  PER models of subtyping, recursive types and higher-order polymorphism , 1992, POPL '92.

[25]  Giuseppe Castagna,et al.  A calculus for overloaded functions with subtyping , 1992, LFP '92.

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

[27]  Adriana B. Compagnoni,et al.  Decidability of Higher-Order Subtyping with Intersection Types , 1994, CSL.

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

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

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

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

[32]  Martin Hofmann,et al.  A unifying type-theoretic framework for objects , 1994, Journal of Functional Programming.

[33]  John C. Mitchell,et al.  Notes on Typed Object-Oriented Programming , 1994, TACS.

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

[35]  de Ng Dick Bruijn,et al.  Lambda calculus notation with nameless dummies, a tool for automatic formula manipulation, with application to the Church-Rosser theorem , 1972 .

[36]  Adriana B. Compagnoni,et al.  Higher-order subtyping with intersection types , 1995 .

[37]  Giuseppe Castagna,et al.  A Calculus for Overloaded Functions with Subtyping , 1995, Inf. Comput..

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

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