Automating the Functional Correspondence between Higher-Order Evaluators and Abstract Machines
Maciej Buszka (1), Dariusz Biernacki (1) ((1) Institute of Computer, Science, University of Wroc{\l}aw, Poland)

TL;DR
This paper introduces an automated algorithm that transforms higher-order evaluators into abstract machines by combining program analysis, continuation-passing style translation, and defunctionalization, streamlining the derivation process.
Contribution
It presents a novel algorithm that automates the functional correspondence process, enabling automatic transformation of evaluators into abstract machines using control-flow analysis.
Findings
Automated transformation of evaluators into abstract machines.
Implementation as a command-line tool in Racket.
Selective translation driven by control-flow analysis.
Abstract
The functional correspondence is a manual derivation technique transforming higher-order evaluators into the semantically equivalent abstract machines. The transformation consists of two well-known program transformations: translation to continuation-passing style that uncovers the control flow of the evaluator and Reynolds's defunctionalization that generates a first-order transition function. Ever since the transformation was first described by Danvy et al. it has found numerous applications in connecting known evaluators and abstract machines, but also in discovering new abstract machines for a variety of -calculi as well as for logic-programming, imperative and object-oriented languages. We present an algorithm that automates the functional correspondence. The algorithm accepts an evaluator written in a dedicated minimal functional meta-language and it first transforms it…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsLogic, programming, and type systems · Formal Methods in Verification · Security and Verification in Computing
