Results 1 -
3 of
3
A Syntactic Approach to Type Soundness
- Information and Computation
, 1992
"... 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 la ..."
Abstract
-
Cited by 490 (20 self)
- Add to MetaCart
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. ...
An Interpretation of Typed OOP in a Language with State
- Lisp and Symbolic Computation
, 1995
"... . In this paper we give semantics to Loop, an expressive typed object-oriented programming language with updatable instance variables. Loop has a rich type system that allows for the typing of methods operating over an open-ended "self " type. We prove the type system given is sound; i.e., well-type ..."
Abstract
-
Cited by 19 (7 self)
- Add to MetaCart
. In this paper we give semantics to Loop, an expressive typed object-oriented programming language with updatable instance variables. Loop has a rich type system that allows for the typing of methods operating over an open-ended "self " type. We prove the type system given is sound; i.e., well-typed programs do not experience "message not understood" errors. The semantics of Loop is given by a translation into a state-based language, Soop, that contains reference cells, records, and a form of F-bounded polymorphic type. Keywords: Object-oriented programming, type systems, state in programming 1. Introduction Developing full and faithful type systems for object-oriented programming languages is a well-known and difficult research problem. To frame the problem we desire a static type system that preserves all of the classic features of (untyped) class-based OOP, including treatment of two particularly difficult issues: binary methods and object subsumption. Significant steps have rece...
Application of OOP Type Theory: State, Decidability, Integration
- In Proceedings of OOPSLA '94
, 1994
"... Important strides toward developing expressive yet semantically sound type systems for object-oriented programming languages have recently been made by Cook, Bruce, Mitchell, and others. This paper focusses on how the theoretical work using F-bounded quantification may be brought more into the realm ..."
Abstract
-
Cited by 13 (5 self)
- Add to MetaCart
Important strides toward developing expressive yet semantically sound type systems for object-oriented programming languages have recently been made by Cook, Bruce, Mitchell, and others. This paper focusses on how the theoretical work using F-bounded quantification may be brought more into the realm of actual language implementations while preserving rigorous soundness properties. We simultaneously address three of the more significant problems: adding a notion of global state, proving type-checking is decidable, and integrating the more widely implemented view that subclasses correspond to subtypes with the F-bounded view. 1 Introduction Developing expressive yet semantically sound type systems for object-oriented programming languages is a well-known and difficult research problem. Many workable solutions are possible, but there has as of yet been no universally accepted solution to the problem. To frame the problem we desire a static type system that preserves all of the classic ...

