Affiliation:
1. Georgia Institute of Technology
2. Oxford University
Abstract
A central task for a program analysis concerns how to efficiently find a program abstraction that keeps only information relevant for proving properties of interest. We present a new approach for finding such abstractions for program analyses written in Datalog. Our approach is based on counterexample-guided abstraction refinement: when a Datalog analysis run fails using an abstraction, it seeks to generalize the cause of the failure to other abstractions, and pick a new abstraction that avoids a similar failure. Our solution uses a boolean satisfiability formulation that is general, complete, and optimal: it is independent of the Datalog solver, it generalizes the failure of an abstraction to as many other abstractions as possible, and it identifies the cheapest refined abstraction to try next. We show the performance of our approach on a pointer analysis and a typestate analysis, on eight real-world Java benchmark programs.
Funder
National Science Foundation
Engineering and Physical Sciences Research Council
Defense Advanced Research Projects Agency
Publisher
Association for Computing Machinery (ACM)
Subject
Computer Graphics and Computer-Aided Design,Software
Cited by
8 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. Eagle;ACM Transactions on Software Engineering and Methodology;2021-10-31
2. Accelerating Program Analyses in Datalog by Merging Library Facts;Static Analysis;2021
3. Mitigating power side channels during compilation;Proceedings of the 2019 27th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering;2019-08-12
4. Core-Boosted Linear Search for Incomplete MaxSAT;Integration of Constraint Programming, Artificial Intelligence, and Operations Research;2019
5. Per-Dereference Verification of Temporal Heap Safety via Adaptive Context-Sensitive Analysis;Static Analysis;2019