Hol-ml

We describe here HOL-ML, an encoding of a subset of SML and its dynamic semantics (as described by The Definition of Standard ML) in HOL. This encoding, which is the first stage in a project that will include typechecking and SML Modules, allows the formal study of the evaluation of a real programming language including state and control constructs (exceptions). In this paper we describe the subset of SML that we encoded and the semantic objects needed for its evaluation. We explain how we defined the evaluation rules and how we proved that evaluation is deterministic. We describe briefly the next step, which is to define a larger language that includes type declarations and to define the typechecking rules on it. Finally, we give a short description of the mutually recursive type definition package that we wrote to enable us to define the types we needed to create the HOL-ML grammar.