Affiliation:
1. University of Maryland, USA
Abstract
In this functional pearl, we examine the use of definitional interpreters as a basis for abstract interpretation of higher-order programming languages. As it turns out, definitional interpreters, especially those written in monadic style, can provide a nice basis for a wide variety of collecting semantics, abstract interpretations, symbolic executions, and their intermixings.
But the real insight of this story is a replaying of an insight from Reynold's landmark paper,
Definitional Interpreters for Higher-Order Programming Languages
, in which he observes definitional interpreters enable the defined-language to inherit properties of the defining-language. We show the same holds true for definitional
abstract
interpreters. Remarkably, we observe that abstract definitional interpreters can inherit the so-called “pushdown control flow” property, wherein function calls and returns are precisely matched in the abstract semantics, simply by virtue of the function call mechanism of the defining-language.
The first approaches to achieve this property for higher-order languages appeared within the last ten years, and have since been the subject of many papers. These approaches start from a state-machine semantics and uniformly involve significant technical engineering to recover the precision of pushdown control flow. In contrast, starting from a definitional interpreter, the pushdown control flow property is inherent in the meta-language and requires no further technical mechanism to achieve.
Funder
National Science Foundation
Publisher
Association for Computing Machinery (ACM)
Subject
Safety, Risk, Reliability and Quality,Software
Cited by
38 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. Abstract Interpretation of Java Bytecode in Sturdy;Proceedings of the 26th ACM International Workshop on Formal Techniques for Java-like Programs;2024-09-20
2. Abstract Interpreters: A Monadic Approach to Modular Verification;Proceedings of the ACM on Programming Languages;2024-08-15
3. Compiling with Abstract Interpretation;Proceedings of the ACM on Programming Languages;2024-06-20
4. A Pure Demand Operational Semantics with Applications to Program Analysis;Proceedings of the ACM on Programming Languages;2024-04-29
5. Interactive Abstract Interpretation with Demanded Summarization;ACM Transactions on Programming Languages and Systems;2024-03-29