The Choice Construct in the Souffle Language
Xiaowen Hu, Joshua Karp, David Zhao, Abdul Zreika, Xi Wu, and Bernhard, Scholz

TL;DR
This paper introduces a choice construct in the Souffle Datalog engine, enabling concise expression of complex algorithms and achieving significant performance improvements in worklist computations.
Contribution
It presents a novel relation-based choice construct for Souffle, enhancing expressiveness and performance for large-scale, non-deterministic algorithms.
Findings
Choice construct enables expressing worklist algorithms in few lines
Algorithms with choice run up to 10,000 times faster
Relation-based choice differs from rule-based choice in prior work
Abstract
Datalog has become a popular implementation language for solving large-scale, real-world problems, including bug finders, network analysis tools, and disassemblers. These applications express complex behaviour with hundreds of relations and rules that often require a non-deterministic choice for tuples in relations to express worklist algorithms. This work is an experience report that describes the implementation of a choice construct in the Datalog engine Souffle. With the choice construct, we can express worklist algorithms such as spanning trees in a few lines of code. We highlight the differences between rule-based choice as described in prior work, and relation-based choice introduced by this work. We show that a choice construct enables certain worklist algorithms to be computed up to 10kx faster than having no choice construct.
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
TopicsSoftware Engineering Research · Software Testing and Debugging Techniques · Software System Performance and Reliability
