An abstract frame work for environment machines
Theoretical Computer Science
A syntactic correspondence between context-sensitive calculi and abstract machines
Theoretical Computer Science
A concrete framework for environment machines
ACM Transactions on Computational Logic (TOCL)
A call-by-name lambda-calculus machine
Higher-Order and Symbolic Computation
Information Processing Letters
Defunctionalized interpreters for programming languages
Proceedings of the 13th ACM SIGPLAN international conference on Functional programming
Inter-deriving semantic artifacts for object-oriented programming
Journal of Computer and System Sciences
Semantics and algebraic specification
From reduction-based to reduction-free normalization
AFP'08 Proceedings of the 6th international conference on Advanced functional programming
Proceedings of the 20th ACM SIGPLAN workshop on Partial evaluation and program manipulation
Three syntactic theories for combinatory graph reduction
LOPSTR'10 Proceedings of the 20th international conference on Logic-based program synthesis and transformation
Defunctionalized interpreters for call-by-need evaluation
FLOPS'10 Proceedings of the 10th international conference on Functional and Logic Programming
A semantics for context-sensitive reduction semantics
APLAS'11 Proceedings of the 9th Asian conference on Programming Languages and Systems
Theoretical Computer Science
A synthetic operational account of call-by-need evaluation
Proceedings of the 15th Symposium on Principles and Practice of Declarative Programming
Hi-index | 0.00 |
We present a generic formalization of the refocusing transformation for functional languages in the Coq proof assistant. The refocusing technique, due to Danvy and Nielsen, allows for mechanical transformation of an evaluator implementing a reduction semantics into an equivalent abstract machine via a succession of simple program transformations. So far, refocusing has been used only as an informal procedure: the conditions required of a reduction semantics have not been formally captured, and the transformation has not been formally proved correct. The aim of this work is to formalize and prove correct the refocusing technique. To this end, we first propose an axiomatization of reduction semantics that is sufficient to automatically apply the refocusing method. Next, we prove that any reduction semantics conforming to this axiomatization can be automatically transformed into an abstract machine equivalent to it. The article is accompanied by a Coq development that contains the formalization of the refocusing method and a number of case studies that serve both as an illustration of the method and as a sanity check on the axiomatization.