Hostname: page-component-8448b6f56d-c47g7 Total loading time: 0 Render date: 2024-04-19T19:26:20.261Z Has data issue: false hasContentIssue false

Higher-order intersection types and multiple inheritance

Published online by Cambridge University Press:  19 April 2018

Adriana B. Compagnoni
Affiliation:
Computer Laboratory, University of Cambridge, New Museums Site, Pembroke St., CB2 3QG, U.K.
Benjamin C. Pierce
Affiliation:
Computer Laboratory, University of Cambridge, New Museums Site, Pembroke St., CB2 3QG, U.K.

Abstract

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 define a simple typed model of object-oriented programming with multiple inheritance.

Type
Research Article
Copyright
Copyright © Cambridge University Press 1996

Access options

Get access to the full version of this content by using one of the access options below. (Log in options will check for institutional or personal access. Content may require purchase if you do not have access.)

Footnotes

An earlier version of this paper appeared as University of Edinburgh Technical Report ECS-LFCS-93-275 and Catholic University Nijmegen C.S. Department Technical Report 93-18, under the title Multiple Inheritance via Intersection Types.

References

Abadi, M. (1993) Baby Modula-3 and a theory of objects. Journal of Functional Programming 4 (2). (An earlier version appeared as DEC Systems Research Center Research Report 95 (February, 1993).)Google Scholar
Abadi, M. and Cardelli, L. (1994a) A theory of primitive objects: Second-order systems. In: European Symposium on Programming (ESOP), Edinburgh, Scotland. Google Scholar
Abadi, M. and Cardelli, L. (1994b) A theory of primitive objects: Untyped and first-order systems. In: Theoretical Aspects of Computer Software (TACS), Sendai, Japan. Google Scholar
Abadi, M. and Cardelli, L. (1996) A Theory of Objects. Springer-Verlag (to appear).Google Scholar
Abadi, M., Cardelli, L. and Viswanathan, R. (1996) An interpretation of objects and object types. In: Principles of Programming Languages 396409.Google Scholar
Barendregt, H. P. (1984) The Lambda Calculus (revised edition), North-Holland.Google Scholar
Barendregt, H., Coppo, M. and Dezani-Ciancaglini, M. (1983) A filter lambda model and the completeness of type assignment. Journal of Symbolic Logic 48 (4) 931940.Google Scholar
Bruce, K. B. (1994) A paradigmatic object-oriented programming language: Design, static typing and semantics. Journal of Functional Programming 4 (2). (A preliminary version appeared in POPL 1993 under the title ‘Safe Type Checking in a Statically Typed Object-Oriented Programming Language’.)Google Scholar
Bruce, K. B. and Longo, G. (1990) A modest model of records, inheritance and bounded quantification. Information and Computation 87 196240. (Also in Gunter, C. A. and Mitchell, J. C. (eds.) Theoretical Aspects of Object-Oriented Programming: Types, Semantics and Language Design, MIT Press (1994). An earlier version appeared in the proceedings of the IEEE Symposium on Logic in Computer Science, 1988.)Google Scholar
Bruce, K. and Mitchell, J. (1992) PER models of subtyping, recursive types and higher-order polymorphism. In: Proceedings of the Nineteenth ACM Symposium on Principles of Programming Languages, Albequerque, NM. Google Scholar
Bruce, K. B., Meyer, A. R. and Mitchell, J. C. (1990) The semantics of second-order lambda calculus. In: Huet, G. (ed.) Logical Foundations of Functional Programming, University of Texas at Austin Year of Programming Series, Addison-Wesley 213–272. (Also appeared in Information and Computation 84 1 (January 1990).)Google Scholar
Canning, P., Cook, W., Hill, W., OlthofF, W. and Mitchell, J. (1989) F-bounded quantification for object-oriented programming. In: Fourth International Conference on Functional Programming Languages and Computer Architecture 273280.Google Scholar
Cardelli, L. (1984) A semantics of multiple inheritance. In: Kahn, G., MacQueen, D. and Plotkin, G. (eds.) Semantics of Data Types. Springer-Verlag Lecture Notes in Computer Science 173 5167. (Full version in Information and Computation (1988) 76 (2/3) 138-164.)Google Scholar
Cardelli, L. (1990) Notes about Fω <: (unpublished manuscript).Google Scholar
Cardelli, L. and Longo, G. (1991) A semantic basis for Quest. Journal of Functional Programming 1 (4) 417458. (Preliminary version in ACM Conference on Lisp and Functional Programming, June 1990. Also available as DEC SRC Research Report 55, Feb. 1990.)Google Scholar
Cardelli, L. and Mitchell, J. (1991) Operations on records. Mathematical Structures in Computer Science 1 348. (Also in Gunter, C. A. and Mitchell, J. C. (eds.) Theoretical Aspects of Object- Oriented Programming: Types, Semantics and Language Design, MIT Press (1994); available as DEC Systems Research Center Research Report 48, August, 1989; and in the proceedings of MFPS ’89, Springer-Verlag Lecture Notes in Computer Science 442.)CrossRefGoogle Scholar
Cardone, F. and Coppo, M. (1990) Two extensions of Curry's type inference system. In: Odifreddi, P. (ed.) Logic and Computer Science, APIC Studies in Data Processing 31, Academic Press 1976.Google Scholar
Castagna, G. (1992) Strong typing in object-oriented paradigms. Rapport de Recherche LIENS-92-11, Ecole Normale Superieure, Paris, May 1992.Google Scholar
Castagna, G., Ghelli, G. and Longo, G. (1995) A calculus for overloaded functions with subtyping. Information and Computation 117 (1) 115135. (A preliminary version appeared in LISP and Functional Programming, July 1992 (182-192), and as Rapport de Recherche LIENS-92-4, Ecole Normale Supérieure, Paris.)Google Scholar
Compagnoni, A. B. (1994) Decidability of higher-order subtyping with intersection types. In: Computer Science Logic, September 1994, Kazimierz, Poland. Springer-Verlag Lecture Notes in Computer Science 933. (Also available as ‘Subtyping in F^ ω is decidable', University of Edinburgh, LFCS technical report ECS-LFCS-94-281.)Google Scholar
Compagnoni, A. B. (1995) Higher-Order Subtyping with Intersection Types, Ph.D. thesis, Catholic University, Nigmegen.Google Scholar
Cook, W. R., Hill, W. L. and Canning, P. S. (1990) Inheritance is not subtyping. In: Seventeenth Annual ACM Symposium on Principles of Programming Languages, San Francisco 125135. (Also in Gunter, C. A. and Mitchell, J. C. (eds.) Theoretical Aspects of Object-Oriented Programming: Types, Semantics and Language Design, MIT Press (1994).)Google Scholar
Coppo, M. and Dezani-Ciancaglini, M. (1978) A new type-assignment for λ-terms. Archiv. Math. Logik 19 139156.Google Scholar
Curien, P.-L. and Ghelli, G. (1992) Coherence of subsumption: Minimum typing and type-checking in F≤. Mathematical Structures in Computer Science 2 5591. (Also in Gunter, C. A. and Mitchell, J. C. (eds.) Theoretical Aspects of Object-Oriented Programming: Types, Semantics and Language Design, MIT Press (1994).)CrossRefGoogle Scholar
de Bruijn, N. G. (1972) Lambda-calculus notation with nameless dummies: a tool for automatic formula manipulation with application to the Church–Rosser theorem. Indag. Math. 34 (5) 381392.Google Scholar
Fisher, K. and Mitchell, J. (1994) Notes on typed object-oriented programming. In: Proceedings of Theoretical Aspects of Computer Software, Sendai, Japan. Springer-Verlag Lecture Notes in Computer Science 789 844885.Google Scholar
Freyd, P., Mulry, P., Rosolini, G. and Scott, D. (1990) Extensional PERs. In: Fifth Annual Symposium on Logic in Computer Science (Philadelphia, PA), IEEE Computer Society Press 346354.Google Scholar
Girard, J.-Y. (1972) Interprétation fonctionelle et élimination des coupures de l'arithmétique d'ordre supérieur, Ph.D. thesis, Université Paris VII.Google Scholar
Goldberg, A. and Robson, D. (1983) Smalltalk-80: The Language and Its Implementation, Addison-Wesley, Reading, MA.Google Scholar
Hindley, J. R. and Seldin, J. P. (1986) Introduction to Combinators and λ-Calculus, London Mathematical Society Student Texts 1, Cambridge University Press.Google Scholar
Hofmann, M. and Pierce, B. (1995) A unifying type-theoretic framework for objects. Journal of Functional Programming. (Previous versions appeared in the Symposium on Theoretical Aspects of Computer Science, (1994) 251262; and as ‘An Abstract View of Objects and Subtyping (Preliminary Report)', University of Edinburgh, LFCS technical report ECS-LFCS-92-226 (1992).)Google Scholar
Huet, G. (1990) Editor, Logical Foundations of Functional Programming, University of Texas at Austin Year of Programming Series, Addison-Wesley.Google Scholar
Mitchell, J. C. (1990a) Toward a typed foundation for method specialization and inheritance. In: Proceedings of the 17 th ACM Symposium on Principles of Programming Languages 109124. (Also in Gunter, C. A. and Mitchell, J. C. (eds.) Theoretical Aspects of Object-Oriented Programming: Types, Semantics and Language Design, MIT Press (1994).)Google Scholar
Mitchell, J. C. (1990b) A type-inference approach to reduction properties and semantics of polymorphic expressions. In: Huet, G. (ed.) Logical Foundations of Functional Programming, University of Texas at Austin Year of Programming Series, Addison-Wesley 195212.Google Scholar
Mitchell, J. C., Honsell, F. and Fisher, K. (1993) A lambda calculus of objects and method specialization. In: 1993 IEEE Symposium on Logic in Computer Science. Google Scholar
Pierce, B. C. (1991) Programming with Intersection Types and Bounded Polymorphism, Ph.D. thesis, Carnegie Mellon University. (Available as School of Computer Science technical report CMUCS- 91-205.)Google Scholar
Pierce, B. C. (1993) Mutable objects. (Draft report; available electronically.)Google Scholar
Pierce, B. C. and Turner, D. N. (1994) Simple type-theoretic foundations for object-oriented programming. Journal of Functional Programming 4 (2) 207247. (A preliminary version appeared in Principles of Programming Languages, 1993, and as ‘Object-Oriented Programming Without Recursive Types’, University of Edinburgh technical report ECS-LFCS-92-225.)Google Scholar
Reynolds, J. C. (1988) Preliminary design of the programming language Forsythe. Technical Report CMU-CS-88-159, Carnegie Mellon University.Google Scholar
Scott, D. (1976) Data types as lattices. SIAM Journal on Computing 5 (3) 522587.Google Scholar
Ungar, D. and Smith, R. B. (1987) Self: The power of simplicity. In: Proceedings of the ACM Symposium on Object-Oriented Programming: Languages, Systems, and Applications (OOPSLA) 227241.Google Scholar