Counterexample-Guided Abstraction Refinement
CAV '00 Proceedings of the 12th International Conference on Computer Aided Verification
Reducing NFAs by invariant equivalences
Theoretical Computer Science
Modular Verification of Software Components in C
IEEE Transactions on Software Engineering
Static approximation of dynamically generated Web pages
WWW '05 Proceedings of the 14th international conference on World Wide Web
An interpolating theorem prover
Theoretical Computer Science - Tools and algorithms for the construction and analysis of systems (TACAS 2004)
Sound and precise analysis of web applications for injection vulnerabilities
Proceedings of the 2007 ACM SIGPLAN conference on Programming language design and implementation
Analyzing Context-Free Grammars Using an Incremental SAT Solver
ICALP '08 Proceedings of the 35th international colloquium on Automata, Languages and Programming, Part II
A decision procedure for subset constraints over regular languages
Proceedings of the 2009 ACM SIGPLAN conference on Programming language design and implementation
HAMPI: a solver for string constraints
Proceedings of the eighteenth international symposium on Software testing and analysis
Reggae: Automated Test Generation for Programs Using Complex Regular Expressions
ASE '09 Proceedings of the 2009 IEEE/ACM International Conference on Automated Software Engineering
TACAS'08/ETAPS'08 Proceedings of the Theory and practice of software, 14th international conference on Tools and algorithms for the construction and analysis of systems
Rex: Symbolic Regular Expression Explorer
ICST '10 Proceedings of the 2010 Third International Conference on Software Testing, Verification and Validation
A Symbolic Execution Framework for JavaScript
SP '10 Proceedings of the 2010 IEEE Symposium on Security and Privacy
Solving string constraints lazily
Proceedings of the IEEE/ACM international conference on Automated software engineering
An evaluation of automata algorithms for string analysis
VMCAI'11 Proceedings of the 12th international conference on Verification, model checking, and abstract interpretation
Reducing the size of NFAs by using equivalences and preorders
CPM'05 Proceedings of the 16th annual conference on Combinatorial Pattern Matching
Verifying concurrent message-passing c programs with recursive calls
TACAS'06 Proceedings of the 12th international conference on Tools and Algorithms for the Construction and Analysis of Systems
Hi-index | 0.00 |
We present a decision procedure for the problem of, given a set of regular expressions R1, …, Rn, determining whether R=R1∩⋯∩Rn is empty. Our solver, revenant, finitely unrolls automata for R1, …, Rn, encoding each as a set of propositional constraints. If a SAT solver determines satisfiability then R is non-empty. Otherwise our solver uses unbounded model checking techniques to extract an interpolant from the bounded proof. This interpolant serves as an overapproximation of R. If the solver reaches a fixed-point with the constraints remaining unsatisfiable, it has proven R to be empty. Otherwise, it increases the unrolling depth and repeats. We compare revenant with other state-of-the-art string solvers. Evaluation suggests that it behaves better for constraints that express the intersection of sets of regular languages, a case of interest in the context of verification.