🤖 AI Summary
Static filtering techniques have long been overlooked in Datalog and lack support for Answer Set Programming (ASP). This work presents the first unified generalization of static filtering to both Datalog and ASP, introducing a more expressive form of filtering predicates together with a corresponding theoretical framework. The approach enables efficient reasoning through logic program rewriting, static analysis, and controllable approximation strategies. While preserving full expressiveness, the method substantially enhances the performance of rule-based systems, achieving order-of-magnitude speedups on representative benchmarks and real-world datasets.
📝 Abstract
Static filtering is a data-independent optimisation method for Datalog, which generalises algebraic query rewriting techniques from relational databases. In spite of its early discovery by Kifer and Lozinskii in 1986, the method has been overlooked in recent research and system development, and special cases are being rediscovered independently. We therefore recall the original approach, using updated terminology and more general filter predicates that capture features of modern systems, and we show how to extend its applicability to answer set programming (ASP). The outcome is strictly more general but also more complex than the classical approach: double exponential in general and single exponential even for predicates of bounded arity. As a solution, we propose tractable approximations of the algorithm that can still yield much improved logic programs in typical cases, e.g., it can improve the performance of rule systems over real-world data in the order of magnitude.