Automating Abstract Interpretation of Abstract Machines
James Ian Johnson

TL;DR
This paper introduces a systematic and automatable method for creating efficient, correct, and analyzable abstract interpreters from traditional interpreters using Abstracting Abstract Machines, improving static analysis for scripting languages.
Contribution
It presents a novel systematic approach to derive abstract interpreters from interpreters, including a meta-language and proof techniques for correctness, with significant performance improvements.
Findings
Abstract interpreters can be generated systematically from interpreters.
Mathematical modifications lead to 1000x faster analysis.
Proof techniques ensure correctness of abstract models.
Abstract
Static program analysis is a valuable tool for any programming language that people write programs in. The prevalence of scripting languages in the world suggests programming language interpreters are relatively easy to write. Users of these languages lament their inability to analyze their code, therefore programming language analyzers are not easy to write. This thesis investigates a systematic method of creating abstract interpreters from traditional interpreters, called Abstracting Abstract Machines. Abstract interpreters are difficult to develop due to technical, theoretical, and pragmatic problems. Technical problems include engineering data structures and algorithms. I show that modest and simple changes to the mathematical presentation of abstract machines result in 1000 times better running time - just seconds for moderately sized programs. In the theoretical realm,…
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 · Parallel Computing and Optimization Techniques · Computability, Logic, AI Algorithms
