2010 Volume 27 Issue 3 Pages 3_51-3_66
The goal of our research is to give a verified abstract machine for the λ-calculus with delimited continuation constructs, shift and reset, and ultimately to give a formal foundation for the direct implementation of shift/reset in the machine language. Toward this goal, we derive an abstract machine and transition rules from the CPS interpreter defining shift/reset, using a series of transformations whose correctness is already proved. Following the “functional correspondence” approach advocated by Danvy, we first perform the CPS transformation and defunctionalization. Unlike the previous approach, however, we formally introduce two new transformations, stack introduction and environment storing, to turn the interpreter closer to the actual implementation. In this article, we show outline and validity of the two transformations. As a result, we obtain an abstract machine that stores bindings in the stack from the original CPS interpreter using validated transformations only. In the future, after additional transformations, we expect that this abstract machine is turned into a virtual machine, which is similar to the existing machine language implementation.