String Solving with Stabilization and Transducers (Technical Report)
For developers of string solvers and users needing efficient handling of relational constraints (e.g., replaceAll), this work provides a practical performance improvement over prior automata-based approaches.
The paper extends the stabilization-based string solving method to handle relational constraints via finite-state transducers, reducing expensive concatenation elimination. The resulting solver vastly outperforms existing solvers on relational benchmarks, solving more instances orders of magnitude faster.
We generalize an efficient automata-based approach to string constraint solving, the stabilization-based method behind the solver Z3-Noodler, to support relational constraints represented by finite-state transducers (useful, for example, for modeling replaceAll constraints). We focus on an efficient treatment of length constraints by reducing the need for expensive concatenation elimination, which is a major bottleneck in automata-based string solving. We also propose powerful heuristics that significantly improve performance in practice. Implemented on top of Z3-Noodler, our method vastly outperforms existing solvers on benchmarks with relational constraints. It solves more instances and runs orders of magnitude faster.