From operational semantics to abstract machines
- 1 June 1992
- journal article
- research article
- Published by Cambridge University Press (CUP) in Mathematical Structures in Computer Science
- Vol. 2 (4) , 415-459
- https://doi.org/10.1017/s0960129500001559
Abstract
We consider the problem of mechanically constructing abstract machines from operational semantics, producing intermediate-level specifications of evaluators guaranteed to be correct with respect to the operational semantics. We construct these machines by repeatedly applying correctness-preserving transformations to operational semantics until the resulting specifications have the form of abstract machines. Though not automatable in general, this approach to constructing machine implementations can be mechanized, providing machine-verified correctness proofs. As examples, we present the transformation of specifications for both call-by-name and call-by-value evaluation of the untyped λ-calculus into abstract machines that implement such evaluation strategies. We also present extensions to the call-by-value machine for a language containing constructs for recursion, conditionals, concrete data types, and built-in functions. In all cases, the correctness of the derived abstract machines follows from the (generally transparent) correctness of the initial operational semantic specification and the correctness of the transformations applied.Keywords
This publication has 15 references indexed in Scilit:
- Natural semanticsPublished by Springer Nature ,2005
- Two-level semantics and code generationTheoretical Computer Science, 1988
- The categorical abstract machineScience of Computer Programming, 1987
- The system F of variable types, fifteen years laterTheoretical Computer Science, 1986
- Constructive mathematics and computer programmingPhilosophical Transactions of the Royal Society of London. Series A, Mathematical and Physical Sciences, 1984
- Deriving Target Code as a Representation of Continuation SemanticsACM Transactions on Programming Languages and Systems, 1982
- Call-by-name, call-by-value and the λ-calculusTheoretical Computer Science, 1975
- Lambda calculus notation with nameless dummies, a tool for automatic formula manipulation, with application to the Church-Rosser theoremIndagationes Mathematicae, 1972
- The Mechanical Evaluation of ExpressionsThe Computer Journal, 1964
- A formulation of the simple theory of typesThe Journal of Symbolic Logic, 1940