A DPLL(T) Theory Solver for a Theory of Strings and Regular Expressions
Authors: Tianyi Liang, Andrew Reynolds, Cesare Tinelli, Clark Barrett and Morgan Deters
Paper Information
| Title: | A DPLL(T) Theory Solver for a Theory of Strings and Regular Expressions |
| Authors: | Tianyi Liang, Andrew Reynolds, Cesare Tinelli, Clark Barrett and Morgan Deters |
| Proceedings: | CAV 2014 LNCS Proceedings |
| Editors: | Armin Biere, Swen Jacobs and Roderick Bloem |
| Keywords: | Theory of Strings, String solvers, SMT, DPLL(T) |
| Abstract: | ABSTRACT. An increasing number of applications in verification and security rely or could benefit from automatic solvers that can check the satisfiability of constraints over a rich set of data types that includes character strings. Unfortunately, most string solvers today are standalone tools that can reason only about (some fragment) of the theory of strings and regular expressions, sometimes with strong restrictions on the expressiveness of their input language such as, for instance, length bounds on all string variables. These solvers are based on reductions to satisfiability problems over other data types, such as bit vectors, or to decision problems over automata. In this paper, we present a set of algebraic techniques for solving constraints over the theory of (unbounded) strings natively, without reduction to other problems. Our techniques can be used to construct string theory solvers that can be integrated into general, multi-theory SMT solvers based on the DPLL(T) architecture. We have implemented these techniques in our SMT solver CVC4 to expand its set of built-in data types to strings with concatenation, length, and membership in regular languages. This implementation makes CVC4 the first solver able to accept a rich set of mixed constraints over strings, integers, reals, arrays and algebraic data types. Our initial experimental results show that, in addition, over pure string problems CVC4 is highly competitive in a number ways with specialized string solvers. |
| Pages: | 17 |
| Talk: | Jul 22 11:05 |
| Paper: | ![]() |
