Cutting Out Continuations
In the field of program transformation, one often transforms programs into continuation-passing style to make their flow of control explicit, and then immediately removes the resulting continuations using defunctionalisation to make the programs first-order. In this article, we show how these two transformations can be fused together into a single transformation step that cuts out the need to first introduce and then eliminate continuations. Our approach is calculational, uses standard equational reasoning techniques, and is widely applicable.
Categories: Formal Verification, Functional Programming
Tags: Program Calculation, Verification, Abstract Machine, Coq, Equational Reasoning