Results 1  10
of
50
Simple TypeTheoretic Foundations for ObjectOriented Programming
, 1993
"... We develop a formal, typetheoretic account of the basic mechanisms of objectoriented programming: encapsulation, message passing, subtyping, and inheritance. By modeling object encapsulation in terms of existential types instead of the recursive records used in other recent studies, we obtain a s ..."
Abstract

Cited by 159 (17 self)
 Add to MetaCart
We develop a formal, typetheoretic account of the basic mechanisms of objectoriented programming: encapsulation, message passing, subtyping, and inheritance. By modeling object encapsulation in terms of existential types instead of the recursive records used in other recent studies, we obtain a substantial simplification both in the model of objects and in the underlying typed calculus.
PolyTOIL: A typesafe polymorphic objectoriented language
, 1995
"... PolyTOIL is a new staticallytyped polymorphic objectoriented programming language that is provably typesafe. By separating the de nitions of subtyping and inheritance, providing a name for the type of self, and carefully de ning the typechecking rules, we have obtained a language that is ve ..."
Abstract

Cited by 137 (10 self)
 Add to MetaCart
PolyTOIL is a new staticallytyped polymorphic objectoriented programming language that is provably typesafe. By separating the de nitions of subtyping and inheritance, providing a name for the type of self, and carefully de ning the typechecking rules, we have obtained a language that is very expressive while supporting modular typechecking of classes. The matching relation on types, which is related to Fbounded quanti cation, is used both in stating typechecking rules and expressing the bounds on type parameters for polymorphism. The design of PolyTOIL is based on a careful formal de nition of typechecking rules and semantics.
A Paradigmatic ObjectOriented Programming Language: Design, Static Typing and Semantics
 Journal of Functional Programming
, 1993
"... In order to illuminate the fundamental concepts involved in objectoriented programming languages, we describe the design of TOOPL, a paradigmatic, staticallytyped, functional, objectoriented programming language which supports classes, objects, methods, hidden instance variables, subtypes, and in ..."
Abstract

Cited by 118 (9 self)
 Add to MetaCart
In order to illuminate the fundamental concepts involved in objectoriented programming languages, we describe the design of TOOPL, a paradigmatic, staticallytyped, functional, objectoriented programming language which supports classes, objects, methods, hidden instance variables, subtypes, and inheritance. It has proven to be quite difficult to design such a language which has a secure type system. A particular problem with statically type checking objectoriented languages is designing typechecking rules which ensure that methods provided in a superclass will continue to be type correct when inherited in a subclass. The typechecking rules for TOOPL have this feature, enabling library suppliers to provide only the interfaces of classes with actual executable code, while still allowing users to safely create subclasses. In order to achieve greater expressibility while retaining typesafety, we choose to separate the inheritance and subtyping hierarchy in the language. The design of...
Programming with Intersection Types and Bounded Polymorphism
, 1991
"... representing the official policies, either expressed or implied, of the U.S. Government. ..."
Abstract

Cited by 67 (4 self)
 Add to MetaCart
representing the official policies, either expressed or implied, of the U.S. Government.
On subtyping and matching
 In Proceedings ECOOP '95
, 1995
"... Abstract. A relation between recursive object types, called matching, has been proposed as a generalization of subtyping. Unlike subtyping, matching does not support subsumption, but it does support inheritance of binary methods. We argue that matching is a good idea, but that it should not be regar ..."
Abstract

Cited by 45 (3 self)
 Add to MetaCart
Abstract. A relation between recursive object types, called matching, has been proposed as a generalization of subtyping. Unlike subtyping, matching does not support subsumption, but it does support inheritance of binary methods. We argue that matching is a good idea, but that it should not be regarded as a form of Fbounded subtyping (as was originally intended). We show that a new interpretation of matching as higherorder subtyping has better properties. Matching turns out to be a thirdorder construction, possibly the only one to have been proposed for general use in programming.
Decidability of HigherOrder Subtyping with Intersection Types
 University of Edinburgh, LFCS
, 1994
"... The combination of higherorder subtyping with intersection types yields a typed model of objectoriented programming with multiple inheritance [11]. The target calculus, F ! , a natural generalization of Girard's system F ! with intersection types and bounded polymorphism, is of independent i ..."
Abstract

Cited by 40 (11 self)
 Add to MetaCart
The combination of higherorder subtyping with intersection types yields a typed model of objectoriented programming with multiple inheritance [11]. The target calculus, F ! , a natural generalization of Girard's system F ! with intersection types and bounded polymorphism, is of independent interest, and is our subject of study. Our main contribution is the proof that subtyping in F ! is decidable. This yields as a corollary the decidability of subtyping in F ! , its intersection free fragment, because the F ! subtyping system is a conservative extension of that of F ! . The calculus presented in [8] has no reductions on types. In the F ! subtyping system the presence of ficonversion  an extension of ficonversion with distributivity laws  drastically increases the complexity of proving the decidability of the subtyping relation. Our proof consists of, firstly, defining an algorithmic presentation of the subtyping system of F ! , secondly, proving that th...
A Unifying TypeTheoretic Framework for Objects
, 1993
"... We give a direct typetheoretic characterization of the basic mechanisms of objectoriented programming, including objects, methods, message passing, and subtyping, by introducing an explicit constructor for object types and suitable introduction, elimination, and equality rules. The resulting abst ..."
Abstract

Cited by 37 (9 self)
 Add to MetaCart
We give a direct typetheoretic characterization of the basic mechanisms of objectoriented programming, including objects, methods, message passing, and subtyping, by introducing an explicit constructor for object types and suitable introduction, elimination, and equality rules. The resulting abstract framework provides a basis for justifying and comparing previous encodings of objects based on recursive record types (Cardelli, 1984; Cardelli, 1992; Bruce, 1994; Cook et al., 1990; Mitchell, 1990a) and encodings based on existential types (Pierce & Turner, 1994).
Intersection Types and Bounded Polymorphism
, 1996
"... this paper (Compagnoni, Intersection Types and Bounded Polymorphism 3 1994; Compagnoni, 1995) has been used in a typetheoretic model of objectoriented multiple inheritance (Compagnoni & Pierce, 1996). Related calculi combining restricted forms of intersection types with higherorder polymorphism ..."
Abstract

Cited by 37 (0 self)
 Add to MetaCart
this paper (Compagnoni, Intersection Types and Bounded Polymorphism 3 1994; Compagnoni, 1995) has been used in a typetheoretic model of objectoriented multiple inheritance (Compagnoni & Pierce, 1996). Related calculi combining restricted forms of intersection types with higherorder polymorphism and dependent types have been studied by Pfenning (Pfenning, 1993). Following a more detailed discussion of the pure systems of intersections and bounded quantification (Section 2), we describe, in Section 3, a typed calculus called F ("Fmeet ") integrating the features of both. Section 4 gives some examples illustrating this system's expressive power. Section 5 presents the main results of the paper: a prooftheoretic analysis of F 's subtyping and typechecking relations leading to algorithms for checking subtyping and for synthesizing minimal types for terms. Section 6 discusses semantic aspects of the calculus, obtaining a simple soundness proof for the typing rules by interpreting types as partial equivalence relations; however, another prooftheoretic result, the nonexistence of least upper bounds for arbitrary pairs of types, implies that typed models may be more difficult to construct. Section 7 offers concluding remarks. 2. Background
Safe and decidable type checking in an objectoriented language
 In OOPSLA '93 Conference Proceedings
, 1993
"... Over the last several years, much interesting work has been done in modelling objectoriented programming languages in terms of extensions of the bounded secondorder lambda calculus, F . Unfortunately, it has recently been shown by Pierce ([Pie92]) that type checking F is undecidable. Moreover, he ..."
Abstract

Cited by 35 (2 self)
 Add to MetaCart
Over the last several years, much interesting work has been done in modelling objectoriented programming languages in terms of extensions of the bounded secondorder lambda calculus, F . Unfortunately, it has recently been shown by Pierce ([Pie92]) that type checking F is undecidable. Moreover, he showed that the undecidability arises in the seemingly simpler problem of determining whether one type is a subtype of another. In [Bru93a, Bru93b], the first author introduced a staticallytyped, functional, objectoriented programming language, TOOPL, which supports classes, objects, methods, instance variables, subtypes, and inheritance. The semantics of TOOPL is based on F , so the question arises whether type checking in this language is decidable. In this paper we show that type checking for TOOPLE, a minor variant of TOOPL (Typed ObjectOriented Programming Language), is decidable. The proof proceeds by showing that subtyping is decidable, that all terms of TOOPLE have minimum types...
Polarized HigherOrder Subtyping
, 1997
"... The calculus of higher order subtyping, known as F ω ≤ , a higherorder polymorphic λcalculus with subtyping, is expressive enough to serve as core calculus for typed objectoriented languages. The versions considered in the literature usually support only pointwise subtyping of type operators, whe ..."
Abstract

Cited by 32 (1 self)
 Add to MetaCart
The calculus of higher order subtyping, known as F ω ≤ , a higherorder polymorphic λcalculus with subtyping, is expressive enough to serve as core calculus for typed objectoriented languages. The versions considered in the literature usually support only pointwise subtyping of type operators, where two types S U and T U are in subtype relation, if S and T are. In the widely cited, unpublished note [Car90], Cardelli presents F ω ≤ in a more general form going beyond pointwise subtyping of type applications in distinguishing between monotone and antimonotone operators. Thus, for instance, T U1 is a subtype of T U2, if U1 ≤ U2 and T is a monotone operator. My thesis extends F ω ≤ by polarized application, it explores its proof theory, establishing decidability of polarized F ω ≤. The inclusion of polarized application rules leads to an interdependence of the subtyping and the kinding system. This contrasts with pure F ω ≤ , where subtyping depends on kinding but not vice versa. To retain decidability of the system, the equalbounds subtyping rule for alltypes is rephrased in the polarized setting as a mutualsubtype requirement of the upper bounds.