Parallelizing SMT Solvers via Dynamic Partitioning, Core-Guided Search-Space Pruning, and Online Backbone Detection (2025.07-2026.05) [paper] [report] [code] [slides]

At Microsoft Research, I worked with Nikolaj Bjørner to design and implement a novel parallel framework for the Z3 SMT solver that uses feedback from active search to steer solving. Our approach dynamically builds a binary partition tree of the search space by sampling from workers’ VSIDS statistics during solving. We introduced a novel search-space pruning mechanism that harnesses the full power of core-based CDCL-style pruning to continuously shrink the partition tree. We further optimized our architecture by incorporating online backbone detection into worker threads, as well as a terminate-on-demand mechanism to eagerly eliminate work on pruned subproblems. The resulting algorithm is highly generalizable and scalable. The implementation can be found here and was released in z3-5.0.0.











