Results 1 
8 of
8
A Calculus with Polymorphic and Polyvariant Flow Types
"... We present # CIL , a typed #calculus which serves as the foundation for a typed intermediate language for optimizing compilers for higherorder polymorphic programming languages. The key innovation of # CIL is a novel formulation of intersection and union types and flow labels on both terms and ..."
Abstract

Cited by 28 (11 self)
 Add to MetaCart
We present # CIL , a typed #calculus which serves as the foundation for a typed intermediate language for optimizing compilers for higherorder polymorphic programming languages. The key innovation of # CIL is a novel formulation of intersection and union types and flow labels on both terms and types. These flow types can encode polyvariant control and data flow information within a polymorphically typed program representation. Flow types can guide a compiler in generating customized data representations in a strongly typed setting. Since # CIL enjoys confluence, standardization, and subject reduction properties, it is a valuable tool for reasoning about programs and program transformations.
A type system equivalent to a model checker
 In Proc. of the European Symp. on Prog
, 2005
"... Type systems and model checking are two prevalent approaches to program verification. A prominent difference between them is that type systems are typically defined in a syntactic and modular style whereas model checking is usually performed in a semantic and wholeprogram style. This difference bet ..."
Abstract

Cited by 14 (0 self)
 Add to MetaCart
Type systems and model checking are two prevalent approaches to program verification. A prominent difference between them is that type systems are typically defined in a syntactic and modular style whereas model checking is usually performed in a semantic and wholeprogram style. This difference between the two approaches lends them complementary to each other: type systems are good at explaining why a program was accepted while model checkers are good at explaining why a program was rejected. We present a type system that is equivalent to a model checker for verifying temporal safety properties of imperative programs. The model checker is natural and may be instantiated with any finitestate abstraction scheme such as predicate abstraction. The type system, which is also parametric, type checks exactly those programs that are accepted by the model checker. It uses function types to capture flow sensitivity and intersection and union types to capture context sensitivity. Our result sheds light on the relationship between the two approaches, provides a methodology for studying their relative expressiveness, is a step towards sharing results between them, and motivates synergistic program analyses involving interplay between them.
Branching Types
, 2002
"... Although systems with intersection types have many unique capabilities, there has never been a fully satisfactory explicitly typed system with intersection types. We introduce and prove the basic properties of # , a typed #calculus with branching types and types with quantification over type ..."
Abstract

Cited by 11 (5 self)
 Add to MetaCart
Although systems with intersection types have many unique capabilities, there has never been a fully satisfactory explicitly typed system with intersection types. We introduce and prove the basic properties of # , a typed #calculus with branching types and types with quantification over type selection parameters. The new system # an explicitly typed system with the same expressiveness as a system with intersection types. Typing derivations in # use branching types to squash together what would be separate parallel derivations in earlier systems with intersection types.
Type systems equivalent to dataflow analyses for imperative languages
 Proc. of 3rd APPSEM II Wksh., APPSEM ’05 (Frauenchiemsee
, 2005
"... 1 Introduction Both program analyses and type systems can be used to infer and state properties of programs. Clearly,program analyses are more algorithmic by their nature while type systems are more declarative. In particular, although program analyses are convenient tools for inferring properties o ..."
Abstract

Cited by 10 (5 self)
 Add to MetaCart
1 Introduction Both program analyses and type systems can be used to infer and state properties of programs. Clearly,program analyses are more algorithmic by their nature while type systems are more declarative. In particular, although program analyses are convenient tools for inferring properties of programs, typesystems have advantages over them, when it comes to communicating the properties established. Given these considerations, it is most natural to wish to relate program analyses and type systems.This idea has been around for quite some time. In particular, Cousot has shown that both are instances of abstract interpretation [4] and there are several works describing how to derive type systems fromprogram analysis definitions [11, 7]. But the project has not been carried out really satisfactorily for imperative languages. The main obstacle seems to have been a confusion over what a type system for animperative language should look like.
Program Representation Size in an Intermediate Language with Intersection and Union Types
 In Proceedings of the Third Workshop on Types in Compilation (TIC 2000
, 2000
"... The CIL compiler for core Standard ML compiles whole programs using a novel typed intermediate language (TIL) with intersection and union types and ow labels on both terms and types. The CIL term representation duplicates portions of the program where intersection types are introduced and union ..."
Abstract

Cited by 9 (7 self)
 Add to MetaCart
The CIL compiler for core Standard ML compiles whole programs using a novel typed intermediate language (TIL) with intersection and union types and ow labels on both terms and types. The CIL term representation duplicates portions of the program where intersection types are introduced and union types are eliminated. This duplication makes it easier to represent type information and to introduce customized data representations. However, duplication incurs compiletime space costs that are potentially much greater than are incurred in TILs employing typelevel abstraction or quanti cation. In this paper, we present empirical data on the compiletime space costs of using CIL as an intermediate language. The data shows that these costs can be made tractable by using suciently negrained ow analyses together with standard hashconsing techniques. The data also suggests that nonduplicating formulations of intersection (and union) types would not achieve signi cantly better space complexity.
Instant Polymorphic Type Systems for Mobile Process Calculi: Just Add Reduction Rules and Close
 Univ., School of Math. & Comput. Sci
, 2004
"... Many different mobile process calculi have been invented, and for each some number of type systems has been developed. Soundness and other properties must be proved separately for each calculus and type system. We present the generic polymorphic type system PolyV which works for a wide range of ..."
Abstract

Cited by 7 (2 self)
 Add to MetaCart
Many different mobile process calculi have been invented, and for each some number of type systems has been developed. Soundness and other properties must be proved separately for each calculus and type system. We present the generic polymorphic type system PolyV which works for a wide range of mobile process calculi, including the pcalculus and Mobile Ambients. For any calculus satisfying some general syntactic conditions, wellformedness rules for types are derived automatically from the reduction rules and PolyV works otherwise unchanged. The derived type system is automatically sound (i.e., has subject reduction) and often more precise than previous type systems for the calculus, due to PolyV's spatial polymorphism. We present an implemented type inference algorithm for PolyV which automatically constructs a typing given a set of reduction rules and a term to be typed. The generated typings are principal with respect to certain natural type shape constraints.
Research Summary
, 2001
"... My main research area is the design, analysis, and implementation of expressive programming languages. I also work on pedagogical aspects and applications of programming and of programming languages. This document summarizes my research and publications in these areas. Much of the research described ..."
Abstract
 Add to MetaCart
My main research area is the design, analysis, and implementation of expressive programming languages. I also work on pedagogical aspects and applications of programming and of programming languages. This document summarizes my research and publications in these areas. Much of the research described here was undertaken as part of the Church Project 1, a group of programming language researchers investigating applications of formal systems in programming language design, analysis, and implementation. I was a cofounder of the Church Project in September,
Harvard University
"... Abstract. The CIL compiler for core Standard ML compiles whole programs using a novel typed intermediate language (TIL) with intersection and union types and flow labels on both terms and types. The CIL term representation duplicates portions of the program where intersection types are introduced an ..."
Abstract
 Add to MetaCart
Abstract. The CIL compiler for core Standard ML compiles whole programs using a novel typed intermediate language (TIL) with intersection and union types and flow labels on both terms and types. The CIL term representation duplicates portions of the program where intersection types are introduced and union types are eliminated. This duplication makes it easier to represent type information and to introduce customized data representations. However, duplication incurs compiletime space costs that are potentially much greater than are incurred in TILs employing typelevel abstraction or quantification. In this paper, we present empirical data on the compiletime space costs of using CIL as an intermediate language. The data shows that these costs can be made tractable by using sufficiently finegrained flow analyses together with standard hashconsing techniques. The data also suggests that nonduplicating formulations of intersection (and union) types would not