Results 1  10
of
11
TypePreserving Compilation of Featherweight Java
, 2001
"... We present an efficient encoding of core Java constructs in a simple, implementable typed intermediate language. The encoding, after type erasure, has the same operational behavior as a standard implementation using vtables and selfapplication for method invocation. Classes inherit superclass metho ..."
Abstract

Cited by 35 (8 self)
 Add to MetaCart
We present an efficient encoding of core Java constructs in a simple, implementable typed intermediate language. The encoding, after type erasure, has the same operational behavior as a standard implementation using vtables and selfapplication for method invocation. Classes inherit superclass methods with no overhead. We support mutually recursive classes while preserving separate compilation. Our strategy extends naturally to a significant subset of Java, including interfaces and privacy. The formal translation using Featherweight Java allows comprehensible typepreservation proofs and serves as a starting point for extending the translation to new features.
TypeTheoretic Methodology For Practical Programming Languages
 DEPARTMENT OF COMPUTER SCIENCE, CORNELL UNIVERSITY
, 1998
"... The significance of type theory to the theory of programming languages has long been recognized. Advances in programming languages have often derived from understanding that stems from type theory. However, these applications of type theory to practical programming languages have been indirect; the ..."
Abstract

Cited by 22 (3 self)
 Add to MetaCart
The significance of type theory to the theory of programming languages has long been recognized. Advances in programming languages have often derived from understanding that stems from type theory. However, these applications of type theory to practical programming languages have been indirect; the differences between practical languages and type theory have prevented direct connections between the two. This dissertation presents systematic techniques directly relating practical programming languages to type theory. These techniques allow programming languages to be interpreted in the rich mathematical domain of type theory. Such interpretations lead to semantics that are at once denotational and operational, combining the advantages of each, and they also lay the foundation for formal verification of computer programs in type theory. Previous type theories either have not provided adequate expressiveness to interpret practical languages, or have provided such expressiveness at the expense of essential features of the type theory. In particular, no previous type theory has supported a notion of partial functions (needed to interpret recursion in practical languages), and a notion of total functions and objects (needed to reason about data values), and an intrinsic notion of equality (needed for most interesting results). This dissertation presents the first type theory incorporating all three, and discusses issues arising in the design of that type theory. This type theory is used as the target of a typetheoretic semantics for a expressive programming calculus. This calculus may serve as an internal language for a variety of functional programming languages. The semantics is stated as a syntaxdirected embedding of the programming calculus into type theory. A critical point arising in both the type theory and the typetheoretic semantics is the issue of admissibility. Admissibility governs what types it is legal to form recursive functions over. To build a useful type theory for partial functions it is necessary to have a wide class of admissible types. In particular, it is necessary for all the types arising in the typetheoretic semantics to be admissible. In this dissertation I present a class of admissible types that is considerably wider than any previously known class.
A simple typed intermediate language for objectoriented languages
 In Proceedings of the 32nd ACM Symposium on Principles of Programming Languages (POPL05
, 2005
"... Traditional class and object encodings are difficult to use in practical typepreserving compilers because of the complexity of the encodings. We propose a simple typed intermediate language for compiling objectoriented languages and prove its soundness. The key ideas are to preserve lightweight no ..."
Abstract

Cited by 18 (6 self)
 Add to MetaCart
Traditional class and object encodings are difficult to use in practical typepreserving compilers because of the complexity of the encodings. We propose a simple typed intermediate language for compiling objectoriented languages and prove its soundness. The key ideas are to preserve lightweight notions of classes and objects instead of compiling them away and to separate namebased subclassing from structurebased subtyping. The language can express standard implementation techniques for both dynamic dispatch and runtime type tests. It has decidable type checking even with subtyping between quantified types with different bounds. Because of its simplicity, the language is a more suitable starting point for a practical typepreserving compiler than traditional encoding techniques.
NuPRL’s class theory and its applications
 Foundations of Secure Computation, NATO ASI Series, Series F: Computer & System Sciences
, 2000
"... This article presents a theory of classes and inheritance built on top of constructive type theory. Classes are defined using dependent and very dependent function types that are found in the Nuprl constructive type theory. Inheritance is defined in terms of a general subtyping relation over the und ..."
Abstract

Cited by 15 (7 self)
 Add to MetaCart
This article presents a theory of classes and inheritance built on top of constructive type theory. Classes are defined using dependent and very dependent function types that are found in the Nuprl constructive type theory. Inheritance is defined in terms of a general subtyping relation over the underlying types. Among the basic types is the intersection type which plays a critical role in the applications because it provides a method of composing program components. The class theory is applied to defining algebraic structures such as monoids, groups, rings, etc. and relating them. It is also used to define communications protocols as infinite state automata. The article illustrates the role of these formal automata in defining the services of a distributed group communications system. In both applications the inheritance mechanisms allow reuse of proofs and the statement of general properties of system composition. 1
Numbering matters: Firstorder canonical forms for secondorder recursive types
 In Proceedings of the 2004 ACM SIGPLAN International Conference on Functional Programming (ICFP’04
, 2004
"... We study a type system equipped with universal types and equirecursive types, which we refer to as Fµ. We show that type equality may be decided in time O(n log n), an improvement over the previous known bound of O(n 2). In fact, we show that two more general problems, namely entailment of type equa ..."
Abstract

Cited by 11 (1 self)
 Add to MetaCart
We study a type system equipped with universal types and equirecursive types, which we refer to as Fµ. We show that type equality may be decided in time O(n log n), an improvement over the previous known bound of O(n 2). In fact, we show that two more general problems, namely entailment of type equations and type unification, may be decided in time O(n log n), a new result. To achieve this bound, we associate, with every Fµ type, a firstorder canonical form, which may be computed in time O(n log n). By exploiting this notion, we reduce all three problems to equality and unification of firstorder recursive terms, for which efficient algorithms are known. 1
Typed compilation against nonmanifest base classes
 LECTURE NOTES IN COMPUTER SCIENCE
, 2006
"... Much recent work on proofcarrying code aims to build certifying compilers for singleinheritance objectoriented languages, such as Java or C#. Some advanced objectoriented languages support compiling a derived class without complete information about its base class. This strategy—though necessar ..."
Abstract

Cited by 6 (3 self)
 Add to MetaCart
Much recent work on proofcarrying code aims to build certifying compilers for singleinheritance objectoriented languages, such as Java or C#. Some advanced objectoriented languages support compiling a derived class without complete information about its base class. This strategy—though necessary for supporting features such as mixins, traits, and firstclass classes—is not wellsupported by existing typed intermediate languages. We present a lowlevel IL with a type system based on the Calculus of Inductive Constructions. It is an appropriate target for efficient, typepreserving compilation of various forms of inheritance, even when the base class is unknown at compile time. Languages (such as Java) that do not require such flexibility are not penalized for it at run time.
Naïve computational type theory
 Proof and SystemReliability, Proceedings of International Summer School Marktoberdorf, July 24 to August 5, 2001, volume 62 of NATO Science Series III
, 2002
"... The basic concepts of type theory are fundamental to computer science, logic and mathematics. Indeed, the language of type theory connects these regions of science. It plays a role in computing and information science akin to that of set theory in pure mathematics. There are many excellent accounts ..."
Abstract

Cited by 5 (1 self)
 Add to MetaCart
The basic concepts of type theory are fundamental to computer science, logic and mathematics. Indeed, the language of type theory connects these regions of science. It plays a role in computing and information science akin to that of set theory in pure mathematics. There are many excellent accounts of the basic ideas of type theory, especially at the interface of computer science and logic — specifically, in the literature of programming languages, semantics, formal methods and automated reasoning. Most of these are very technical, dense with formulas, inference rules, and computation rules. Here we follow the example of the mathematician Paul Halmos, who in 1960 wrote a 104page book called Naïve Set Theory intended to make the subject accessible to practicing mathematicians. His book served many generations well. This article follows the spirit of Halmos ’ book and introduces type theory without recourse to precise axioms and inference rules, and with a minimum of formalism. I start by paraphrasing the preface to Halmos ’ book. The sections of this article follow his chapters closely. Every computer scientist agrees that every computer scientist must know some type theory; the disagreement begins in trying to decide how much is some. This article contains my partial answer to that question. The purpose of the article is to tell the beginning student of advanced computer science the basic type theoretic facts of life, and to do so with a minimum of philosophical discourse and logical formalism. The point throughout is that of a prospective computer scientist eager to study programming languages, or database systems, or computational complexity theory, or distributed systems or information discovery. In type theory, “naïve ” and “formal ” are contrasting words. The present treatment might best be described as informal type theory from a naïve point of view. The concepts are very general and very abstract; therefore they may
LowLevel Type Systems for Modularity and ObjectOriented Constructs
, 2000
"... Typed Assembly Language (Tal) is a formal language for an idealised machine augmented with type annotations, typing rules, and a memory allocation primitive. Tal’s type system is sound; that is, well typed Tal programs do not commit runtime type errors during execution. This guarantee can be used t ..."
Abstract

Cited by 4 (0 self)
 Add to MetaCart
Typed Assembly Language (Tal) is a formal language for an idealised machine augmented with type annotations, typing rules, and a memory allocation primitive. Tal’s type system is sound; that is, well typed Tal programs do not commit runtime type errors during execution. This guarantee can be used to debug typedirected compilers and to build more general security properties in an extensible system. This dissertation presents a basic version of Tal and extensions to support the compilation of modules and objectoriented languages. First, it describes a modular version of Tal that consists of typed object files, linking operations, and link compatibility conditions. Together these features provide for typesound separate compilation and substantially extend previous work on linking. Second, it shows how to use a new formulation of self quantifiers to compile an efficient implementation of a singleinheritance classbased objectoriented language into Tal. Third, it presents a new type constructor called a tag type, and shows how to use them to compile downcasting and exceptions into Tal.
Interpretations of Extensible Objects and Types
 In Proceedings of FCT’99, volume 1684 of LNCS
, 1999
"... We present a typetheoretic encoding of extensible objects and types. The ambient theory is a higherorder calculus with polymorphic types, recursive types and operators, and subtyping. Using this theory, we give a type preserving and computationally adequate translation of a fullfledged objec ..."
Abstract

Cited by 3 (1 self)
 Add to MetaCart
We present a typetheoretic encoding of extensible objects and types. The ambient theory is a higherorder calculus with polymorphic types, recursive types and operators, and subtyping. Using this theory, we give a type preserving and computationally adequate translation of a fullfledged object calculus that includes object extension and override. The translation specializes to calculi of nonextensible objects and validates the expected subtyping relationships.
Extensible Objects: a Tutorial
 In Global Computing
, 2003
"... In the objectoriented realm, classbased languages dominate the world of production languages, but objectbased languages have been extensively studied to provide the foundations of the objectoriented paradigm. Moreover, objectbased languages are undergoing a Renaissance thanks to the growing ..."
Abstract

Cited by 2 (2 self)
 Add to MetaCart
In the objectoriented realm, classbased languages dominate the world of production languages, but objectbased languages have been extensively studied to provide the foundations of the objectoriented paradigm. Moreover, objectbased languages are undergoing a Renaissance thanks to the growing popularity of scripting languanges, which are essentially objectbased.