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.
Unable to display preview. Download preview PDF.
- 1.Stefan Kahrs. Mistakes and Ambiguities in the Definition of Standard ML, unpublished manuscript.Google Scholar
- 2.Robin Milner, Mads Tofte. Commentary on Standard ML, The MIT Press, Cambridge, Mass, 1991.Google Scholar
- 3.Robin Milner, Mads Tofte, Robert Harper. The Definition of Standard ML, The MIT Press, Cambridge, Mass, 1990.Google Scholar
- 4.Konrad Slind, Adding new rules to an LCF-style logic implementation. In L. J. M. Claesen and M. J. C. Gordon, editors, Higher Order Logic Theorem Proving and its Applications, pages 549–559. North-Holland, 1993.Google Scholar