On Computational Small Steps and Big Steps: Refocusing for Outermost Reduction
We study the relationship between small-step semantics, big-step semantics and abstract machines, for programming languages that employ an outermost reduction strategy, i.e., languages where reductions near the root of the abstract syntax tree are performed before reductions near the leaves.
In particular, we investigate how Biernacka and Danvy's syntactic correspondence and Reynolds's functional correspondence can be applied to inter-derive semantic specifications for such languages.
The main contribution of this dissertation is three-fold:
First, we identify that backward overlapping reduction rules in the small-step semantics cause the refocusing step of the syntactic correspondence to be inapplicable.
Second, we propose two solutions to overcome this in-applicability: backtracking and rule generalization.
Third, we show how these solutions affect the other transformations of the two correspondences.
Other contributions include the application of the syntactic and functional correspondences to Boolean normalization.
In particular, we show how to systematically derive a spectrum of normalization functions for negational and conjunctive normalization.