Abstract
Logic programming languages such as Datalog have become popular as Domain Specific Languages (DSLs) for solving large-scale, real-world problems, in particular, static program analysis and network analysis. The logic specifications that model analysis problems process millions of tuples of data and contain hundreds of highly recursive rules. As a result, they are notoriously difficult to debug. While the database community has proposed several data provenance techniques that address the
Declarative Debugging Challenge
for Databases, in the cases of analysis problems, these state-of-the-art techniques do not scale.
In this article, we introduce a novel bottom-up Datalog evaluation strategy for debugging: Our provenance evaluation strategy relies on a new provenance lattice that includes proof annotations and a new fixed-point semantics for semi-naïve evaluation. A debugging query mechanism allows arbitrary provenance queries, constructing partial proof trees of tuples with minimal height. We integrate our technique into Soufflé, a Datalog engine that synthesizes C++ code, and achieve high performance by using specialized parallel data structures. Experiments are conducted with D
OOP
/DaCapo, producing proof annotations for tens of millions of output tuples. We show that our method has a runtime overhead of 1.31× on average while being more flexible than existing state-of-the-art techniques.
Funder
Australian Government through the ARC Discovery Project
AWS
Publisher
Association for Computing Machinery (ACM)
Cited by
16 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. Flan: An Expressive and Efficient Datalog Compiler for Program Analysis;Proceedings of the ACM on Programming Languages;2024-01-05
2. Program Repair Guided by Datalog-Defined Static Analysis;Proceedings of the 31st ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering;2023-11-30
3. Macaron: A Logic-based Framework for Software Supply Chain Security Assurance;Proceedings of the 2023 Workshop on Software Supply Chain Offensive Research and Ecosystem Defenses;2023-11-26
4. Mobius: Synthesizing Relational Queries with Recursive and Invented Predicates;Proceedings of the ACM on Programming Languages;2023-10-16
5. Interactive Debugging of Datalog Programs;Proceedings of the ACM on Programming Languages;2023-10-16