MetaCartSign in to MyCiteSeer

Include Citations | Advanced Search | Help

Include Citations | Advanced Search | Help

  Thesis Proposal: Practical Refinement-type Checking

Download:
Download as a PDF | Download as a PS
by Rowan Davies
http://www.cs.cmu.edu/afs/cs/user/rowan/www/papers/proposal.ps.gz
Add To MetaCart

Abstract:

One of the major benefits of statically-typed programming languages is that they significantly improve programmer productivity. An obvious reason for this is that they dramatically reduce the amount of time spent debugging by catching most common errors at compile time. A perhaps more important reason is that programmers can use the types to guide understanding of the structure of a piece of code, both during the development of the code, and during code maintenance. One proposal for increasing these benefits is to extend an existing statically-typed language so that each ordinary type is refined by a number of refinement-types, which allow many common program invariants to be expressed and checked. In the resulting system a part of a program which is assigned a particular type may also be assigned multiple refinements of that type. Previous work indicates that automatically inferring refinement-types is algorithmically impractical in general. However, if a programmer annotates their program with enough of the intended refinement-types the problem of checking the annotated program has been found to be much easier in some preliminary experiments. The goal of this work is to demonstrate that refinement-type checking can be a practical and useful addition to a real programming language. To achieve this I intend to design an extension of Standard ML which is suitable for refinement-type checking, extend a real compiler with an efficient refinement-type checker, and demonstrate that this allows many common program invariants to be captured in a practical way. 1

Citations

393 A syntactic approach to type soundness – Wright, Felleisen - 1994
196 Type inclusion constraints and type inference – Aiken, Wimmers - 1993
182 Logic programming in the LF logical framework – Pfenning - 1991
177 Soft typing with conditional types – Aiken, Wimmers, et al. - 1994
166 The Modula-3 type system – Cardelli, Donahue, et al. - 1989
141 Eliminating Array Bound Checking Through Dependent Types – Xi, Pfenning - 1998
134 Soft typing – Cartwright, Fagan - 1991
133 The essence of Algol – Reynolds - 1981
127 Refinement types for ML – Freeman, Pfenning - 1991
104 Preliminary design of the programming language Forsythe – Reynolds - 1988
76 Towards a theory of types in Prolog – Mishra - 1984
72 Solving systems of set constraints – Aiken, Wimmers - 1992
61 Automatic Computation of Data Set Definitions – Reynolds - 1969
52 Deciding equivalence of finite tree automata – Seidl - 1990
45 A regular type language for logic programs – Dart, Zobel - 1992
45 Set based analysis of ML programs – Heintze - 1994
44 Implementing regular tree expressions – Aiken, Murphy - 1991
42 Signatures for a network protocol stack: A systems application of Standard ML – Biagioni, Harper, et al. - 1994
42 Functional characters of solvable terms. Zeitschrift für Mathematische Logik und Grundlagen der Mathematik – Coppo, Dezani-Ciancaglini, et al. - 1981
42 Coercion and type inference (summary – Mitchell - 1984
41 Refinement types for logical frameworks – Pfenning - 1993
31 Program analysis using mixed term and set constraints – Fahndrich, Aiken - 1997
31 Intersection Types and Bounded Polymorphism – Pierce - 1997
24 The Coherence of Languages with Intersection Types – Reynolds - 1991
19 An Oxford survey of order sorted algebra – Diaconescu, Goguen - 1994
11 A practical refinement-type checker for Standard ML – Davies - 1997
2 Some decision problems for ML refinement types – Skalka - 1997
1 Practical refinement-type checking. Unpublished draft available from http://www.cs.cmu.edu/~rowan – Davies, Pfenning - 1997
1 union and intersection types – Singleton - 1994
1 A schema for adding dependent types to ML. Unpublished draft available from http://www.cs.cmu.edu/~fp – Xi, Pfenning - 1997