Data Types as Objects

In this paper we present a new approach to the semantics of data types, in which the types themselves are incorporated as elements in the domain of data objects. The approach allows types to have subtypes, allows genuinely polymorphic functions, and gives a precise semantics for recursive type definitions (including definitions with parameters). In addition, the approach yields simple and straight forward methods for proving type properties of recursive definitions. These methods include a new fixedpoint rule which permits case analysis.