An Imperative Core Calculus for Java ∗

This technical report presents the specification of a programming language Cool: the Core Object-Oriented Language. Cool is a small language but retains many of the features of modern class-based object-oriented languages, including primitive types, classes, inheritance, objects, instance variables and methods, dynamic method binding, null and arrays, etc.. The specification for Cool in this report is formal. First, this paper give syntactic specifications for Cool; second, we define static semantics for Cool via typing rules; and finally, we define its operational semantics. In stark contrast to any previous research effort in this area, we introduce side conditions into Cool’s type system, which express important safety obligations.