Abstracting Abstract Machines: A Systematic Approach to Higher-Order Program Analysis
David Van Horn, Matthew Might

TL;DR
This paper presents a systematic method for deriving sound, computable static analyses for complex high-level programming languages by transforming language semantics into finite state models.
Contribution
It introduces a principled, derivational approach to abstracting abstract machines, enabling scalable and sound analysis of advanced language features.
Findings
Scales to realistic language features like higher-order functions and exceptions
Produces sound, finite-state static analyses
Applicable to complex language semantics
Abstract
Predictive models are fundamental to engineering reliable software systems. However, designing conservative, computable approximations for the behavior of programs (static analyses) remains a difficult and error-prone process for modern high-level programming languages. What analysis designers need is a principled method for navigating the gap between semantics and analytic models: analysis designers need a method that tames the interaction of complex languages features such as higher-order functions, recursion, exceptions, continuations, objects and dynamic allocation. We contribute a systematic approach to program analysis that yields novel and transparently sound static analyses. Our approach relies on existing derivational techniques to transform high-level language semantics into low-level deterministic state-transition systems (with potentially infinite state spaces). We then…
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 · Software Engineering Research · Formal Methods in Verification
