Multi-variable Quantification of BDDs in External Memory using Nested Sweeping (Extended Paper)
Steffan Christ Sølvsten, Jaco van de Pol
TL;DR
This work introduces nested sweeping to extend IO-efficient BDD manipulation to multi-variable quantification within the Adiar framework. By coordinating an outer Apply/Reduce sweep with nested inner Apply/Reduce sweeps, the method computes existential (and universal) quantifications and supports the relational product in an external-memory setting. The authors provide formal complexity bounds, a suite of optimisations, and an implementation in Adiar v2.0, accompanied by extensive experiments showing notable improvements (approximately 1.7x average speedups and ~21% total time reduction) over prior approaches and competitive performance against CAL and depth-first BDD packages on larger instances. The results demonstrate practical impact for solving QBFs and GoE problems with BDDs that exceed main memory, and the framework lays groundwork for broader IO-efficient, multi-recursive BDD operations and future extensions such as variable reordering and other decision diagram variants.
Abstract
Previous research on the Adiar BDD package has been successful at designing algorithms capable of handling large Binary Decision Diagrams (BDDs) stored in external memory. To do so, it uses consecutive sweeps through the BDDs to resolve computations. Yet, this approach has kept algorithms for multi-variable quantification, the relational product, and variable reordering out of its scope. In this work, we address this by introducing the nested sweeping framework. Here, multiple concurrent sweeps pass information between eachother to compute the result. We have implemented the framework in Adiar and used it to create a new external memory multi-variable quantification algorithm. Compared to conventional depth-first implementations, Adiar with nested sweeping is able to solve more instances of our benchmarks and/or solve them faster.
