I would have thought the SMT queries would be the most time-consuming part of this, but the authors make a big deal of leveraging Datalog optimzations to drive performance.
Especially given they purposefully don't re-use the SMT context across SMT terms.
Aren't the big SMT solvers already doing a bunch of optimization to allow incremental (push/pop) queries to be fast?