Type Refinements for Programming Languages

This is a graduate seminar on type refinements, a method for increasing the expressive power of type systems to track programmer-specified invariants governing persistent values and ephemeral state. For background on type refinements, please see the Triple Project web page.

All students enrolling in this course must either have completed the Programming Languages core course in the PhD program, or obtain the permission of the instructor. Competence with typed lambda calculus models of programming languages is essential, familiarity with the basics of mathematical logic and semantics is helpful.

This is a research seminar, not a lecture course. Participants are required to present one or more papers during the course of the semester. Each presentation must be accompanied in advance by typeset lecture slides in either Powerpoint or LaTeX slide format. The presenter's slides will be posted on the course web site for future reference. The presenter is responsible for presenting a summary and a critical analysis of the paper(s) assigned to her, and to lead discussion. The audience for a given paper is required to read the relevant papers in advance as preparation for the presentation.

The papers listed below represent an initial sample of the material we will cover in this class. It is to be expected that further reading will be required; the reading list will change accordingly.

Meeting time and place: Mondays and Wednesdays at 1:30PM in Porter Hall room A19C.

Please use this Powerpoint presentation template for your presentations. I recommend using TeXPoint for mathematical formulae. Please be sure to check "Embed TrueType Fonts" under the Tools Menu of the Save As dialog box!

A prototype refinement checker is now available for your use.


Date(s) Topic(s) Paper(s) Presenter Slides

Sep 8 Overview, Refinement Types Freeman and Pfenning Harper Overview (PPT), Freeman-Pfenning (PPT)
Sep 10 Refinement Types Freeman and Pfenning, Davies and Pfenning, Davies Harper Freeman-Pfenning (PPT), Davies-Pfenning (PPT)

Sep 15 Refinement Types Yardeni and Shapiro, Dart and Zobel Pfenning (No slides)
Sep 17 No Class (POPL PC Meeting)

Sep 22 Algorithms on Regular Trees TATA Book, Aiken and Murphy, Tim Freeman, Thatcher Krishnaswami Tree Automata
Sep 24 Intersection and Union Types Barbanera, et al., Dunfield and Pfenning Dunfield Intersections and Unions

Sep 29 Intersection and Union Types Barbanera, et al., Dunfield and Pfenning Dunfield Intersections and Unions
Oct 1 Soft Typing Aiken and Murphy, Aiken, et al., Aiken and Faehndrich Moody Aiken, et. al. Soft Typing

Oct 6 Soft Typing Aiken and Murphy, Aiken, et al., Aiken and Faehndrich Moody Aiken, et. al. Soft Typing
Oct 8 Soft Typing Wright and Cartwright, Cartwright and Felleisen Malayeri Soft Types for Scheme

Oct 13 Static Debugging Flanagan, et al., Findler, et al. Murphy Dr Scheme
Oct 15 No Class (GRAPL Workshop)

Oct 20 Dependent Types Xi and Pfenning, Xi and Pfenning, Xi Chaudhury DML
Oct 22 Dependent Types Xi, Dunfield Park Dependent Types

Oct 27 Dependent Types, Sized Types Augustsson, Hughes, et al., Hughes and Pareto Acar Cayenne, Sized Types
Oct 29 Sized Types Hughes, et al., Hughes and Pareto Acar, Krishnaswami Sized Types

Nov 3 No Class (Science of Design Workshop)
Nov 5 Integer Constraints Pugh Garg Omega Test

Nov 10 Polymorphic Inference Skalka and Pottier, Pottier and Remy Kliger HM(X)
Nov 12 Polymorphic Inference Pottier and Remy, Garrigue Sarkar HM(X)

Nov 17 Polymorphic Inference Pottier and Remy, Garrigue Kliger/Sarkar Structural Polymorphism
Nov 19 State and Effects Deline and Faehndrich, Deline and Faehndrich Donohue Vault PPT, Adoption and Focus PPT

Nov 24 State and Effects Foster, et al., Foster, et al. Zeilberger Flow-Insensitive Type Qualifiers PDF, Flow-Sensitive Type Qualifiers PDF .
Nov 26 No Class (Thanksgiving Break)

Dec 1 State and Effects Mandelbaum, et al. Spoonhower Effective Refinements PDF
Dec 3 State and Effects Detlefs, et al., Leino Magill


Author(s) Title/Reference Citation Document

Refinement Types

Eyal Yardeni and Ehud Shapiro A Type System for Logic Programs TSLP Bib TSLP PDF
Philip W. Dart and Justin Zobel A Regular Type Language for Logic Programs TLP Chap. 5 Bib TLP Chap. 5 PDF
Tim Freeman Refinement Types for ML PhD Bib PhD PDF
Tim Freeman and Frank Pfenning Refinement Types for ML PLDI91 Bib PLDI91 PDF
Rowan Davies and Frank Pfenning Intersection Types and Computational Effects ICFP00 Bib ICFP00 PDF
Rowan Davies A Practical Refinement-Type Checker for Standard ML AMAST97 Bib AMAST97 PS
Rowan Davies Refinement Type Checking Phd Draft PDF
Jens Palsberg and Patrick O'Keefe A Type System Equivalent to Flow Analysis TOPLAS Bib TOPLAS PDF
Franco Barbanera, Mariangiola Dezani-Ciancaglini, and Ugo de'Liguorio Intersection and Union Types: Syntax and Semantics IC Bib IC PDF
Joshua Dunfield and Frank Pfenning Type Assignment for Intersections and Unions in Call-by-Value Languages FOSSACS03 Bib FOSSACS03 PDF
Veronique Benzaken, Giuseppe Castagna, and Alain Frisch CDuce: An XML-Centric General-Purpose Language ICFP03 Bib ICFP03 PDF

Regular Tree Grammars

Comon, et al. Tree Automata Techniques and Applications TATA Bib TATA PS
James W. Thatcher Generalized Sequential Machine Maps JCSS Bib JCSS PDF
Alexander Aiken and Brian R. Murphy Implementing Regular Tree Expressions FPCA91 Bib FPCA91 PS

Soft Type Systems

Alexander Aiken and Brian R. Murphy Static Type Inference in a Dynamically Typed Language POPL91 Bib POPL91 PDF
Alexander Aiken, T. K. Lakshman, and Ed Wimmers Soft Typing With Conditional Types POPL94 Bib POPL94 PDF
Alexander Aiken and Manuel Faehndrich Dynamic Typing and Subtype Inference FPCA95 Bib FPCA95 PDF
Andrew K. Wright and Robert Cartwright A Practical Soft Typing System for Scheme TOPLAS Bib TOPLAS PDF
Robert Cartwright and Matthias Felleisen Program Verification Through Soft Typing CSUR96 Bib CSUR96 PDF
Cormac Flanagan, et al. Catching Bugs in the Web of Program Invariants PLDI96 Bib PLDI96 PDF
Robert Bruce Findler, et al. Dr Scheme: A Programming Environment for Scheme JFP Bib JFP PDF

Dependent Types

Hongwei Xi and Frank Pfenning Dependent Types in Practical Programming POPL99 Bib POPL99 PDF
Hongwei Xi and Frank Pfenning Eliminating Array Bound Checking Through Dependent Types PLDI98 Bib PLDI98 PDF
Hongwei Xi Dependent Types in Practical Programming PhD Bib PhD PS
Hongwei Xi Dependent Types for Program Termination and Verification LICS01 Bib LICS01 PDF
Hongwe Xi Dependent Types for Program Termination Verification HOSC Bib HOSC PDF
Joshua Dunfield Combining Two Forms of Type Refinements TR02 Bib TR02 PDF
Lennart Augustsson Cayenne -- A Language With Dependent Types Draft PS
John Hughes, Lars Pareto, and Amr Sabry Proving the Correctness of Reactive Systems Using Sized Types POPL96 Bib POPL96 PDF
John Hughes and Lars Pareto Recursion and Dynamic Data Structures in Bounded Space: Towards Embedded ML Programming ICFP99 Bib ICFP99 PDF
William Pugh The Omega Test: A Fast and Practical Integer Programming Algorithm for Dependence Analysis SC91 Bib SC91 PDF

Polymorphic Type Inference

Jacques Garrigue Simple Type Inference for Structural Polymorphism FOOL02 Bib FOOL02 PS
Francois Pottier and Didier Remy The Essence of ML Type Inference ATTAPL Bib ATTAPL PDF (Working Draft)
Chris Skalka and Francois Pottier Syntactic Type Soundness for HM(X) TIP02 Bib TIP02 PS
Chris Skalka Some Decision Problems for ML Refinement Types M.Sc. Bib M.Sc. PS

Computational Effects

Robert Deline and Manuel Faehndrich Adoption and Focus: Practical Linear Types for Imperative Programming PLDI02 Bib PLDI02 PDF
Robert Deline and Manuel Faehndrich Enforcing High-Level Protocols in Low-Level Software PLDI01 Bib PLDI01 PDF
Yitzhak Mandelbaum, David Walker, Robert Harper An Effective Theory of Type Refinements ICFP03 Bib ICFP03, TR03
Jeffrey Foster and Tachio Terauchi and Alex Aiken Flow-Sensitive Type Qualifiers PLDI02 Bib PLDI02 PDF
Jeffrey S. Foster, Manuel Faehndrich, and Alexander Aiken A Theory of Type Qualifiers PLDI99 Bib PLDI99 PDF
K. Rustan M. Leino Data Groups: Specifying the Modification of Extended State OOPSLA98 Bib OOPSLA98 PDF
David L. Detlefs, K. Rustan M. Leino, Greg Nelson, and James B. Saxe Extended Static Checking TR98 Bib TR98 PDF

Last modified: Wed Dec 3 18:26:06 EST 2003