MetaCart Sign in to MyCiteSeerX

Include Citations | Advanced Search | Help

Disambiguated Search | Include Citations | Advanced Search | Help

A Syntactic Approach to Type Soundness (1992) [415 citations — 19 self]

by Andrew K. Wright ,  Matthias Felleisen
Information and Computation
Add To MetaCart

Abstract:

We present a new approach to proving type soundness for Hindley/Milner-style polymorphic type systems. The keys to our approach are (1) an adaptation of subject reduction theorems from combinatory logic to programming languages, and (2) the use of rewriting techniques for the specification of the language semantics. The approach easily extends from polymorphic functional languages to imperative languages that provide references, exceptions, continuations, and similar features. We illustrate the technique with a type soundness theorem for the core of Standard ML, which includes the first type soundness proof for polymorphic exceptions and continuations. 1 Type Soundness Static type systems for programming languages attempt to prevent the occurrence of type errors during execution. A definition of type error depends on a specific language and type system, but always includes the use of a function on arguments for which it is not defined, and the attempted application of a non-function. ...

Citations

1415 The Definition of Standard ML – Milner, Tofte, et al. - 1990
1044 Structural approach to operational semantics – Plotkin - 1981
870 The Lambda Calculus. Its Syntax and Semantics – Barendregt - 1984
806 A Theory of Type Polymorphism in Programming – Milner - 1978
251 Abstract types have existential type – Mitchell, Plotkin - 1988
217 Principal type schemes for functional programs – Milner, Damas - 1982
208 The revised report on the syntactic theories of sequential control and state – Felleisen, Hieb - 1992
179 Introduction to Combinators and *-Calculus – Hindley, Seldin - 1986
168 Data types as lattices – Scott - 1976
147 Parameter-passing and the lambda calculus – Crank, Felleisen - 1991
122 Call-by-name, call-by-value and the lambda calculus – Plotkin - 1975
116 Higher-order Concurrency – Reppy - 1992
115 The type and effect discipline – Talpin, Jouvelot - 1994
113 The principal type-scheme of an object in combinatory logic – Hindley - 1969
113 An ideal model for recursive polymorphic types – MacQueen, Plotkin, et al. - 1986
103 Type inference for polymorphic references – Tofte - 1990
99 The theory and practice of first-class prompts – Felleisen - 1988
99 A syntactic theory of sequential control – Felleisen, Friedman, et al. - 1987
92 Revised report on the algorithmic language scheme – Rees, Clinger - 1986
90 Type Assignment in Programming Languages – Damas - 1985
86 Operational Semantics and Polymorphic Type Inference – Tofte - 1987
82 Control operators, the SECD-machine, and the -calculus – Felleisen, Friedman - 1986
74 The essence of ML – Mitchell, Harper - 1988
69 Co-induction in relational semantics – Milner, Tofte - 1991
64 Dynamic typing in a statically-typed language – Abadi, Cardelli, et al. - 1989
50 Polymorphic type inference and assignment – Leroy, Weis - 1991
39 On the relation between direct and continuation semantics – Reynolds - 1974
33 A syntactic theory of sequential state – Felleisen, Friedman - 1989
28 Typing references by effect inference – Wright - 1992
27 Definitional interpreters for higher order programming languages – Reynolds - 1972
26 Data types are values – Donahue, Demers - 1985
24 Programming, transforming, and proving with function abstractions and memories – Mason, Talcott - 1989
12 Typing first-class continuations – Duba, Harper, et al.
7 On the expressive power of programming languages. Science of Computer Programming 17 – Felleisen - 1991
4 A sequent calculus for type assignment – Seldin - 1977
3 ML of New Jersey release notes (version 0.75 – Standard - 1991