🤖 AI Summary
This work addresses key challenges in solving complex string constraints—namely, inadequate Unicode support, incomplete coverage of regular expression semantics (e.g., lookarounds and capturing groups), and lack of user-defined string transformations. We propose the first SMT-based solving framework supporting full ECMAScript regex semantics, complete Unicode string semantics, and programmable string transformers. Methodologically, we establish the first completeness guarantees for two critical string constraint fragments: straight-line and chain-free constraints. We extend the SMT-LIB string theory by integrating regex semantic parsing, symbolic execution, and an automated completeness-checking algorithm. Experimental evaluation on the SMT-COMP benchmarks shows competitive performance against state-of-the-art solvers, while significantly improving solving coverage and reliability for highly expressive string logics.
📝 Abstract
We present OSTRICH2, the latest evolution of the SMT solver OSTRICH for string constraints. OSTRICH2 supports a wide range of complex functions on strings and provides completeness guarantees for a substantial fragment of string constraints, including the straight-line fragment and the chain-free fragment. OSTRICH2 provides full support for the SMT-LIB theory of Unicode strings, extending the standard with several unique features not found in other solvers: among others, parsing of ECMAScript regular expressions (including look-around assertions and capture groups) and handling of user-defined string transducers. We empirically demonstrate that OSTRICH2 is competitive to other string solvers on SMT-COMP benchmarks.