Algorithms to determine the satisfiability of first-order formulas modulo background theories, known as the Satisfiability Modulo Theories (SMT) problem, have become an enabling technology for verification, test-vector generation, compiler optimization, scheduling, and other areas. The development of SMT solvers started in the 90s, with program verification as the main use case, and has seen numerous advances since then, including better methods for Boolean reasoning, more efficient decision procedures for various logical theories, and new approaches to solve formulas with quantifiers. Over the last decade, there has been a consolidation in the way SMT solvers are constructed, with the DPLL(T) architecture having emerged as the standard approach. As a consequence, most solvers today include a CDCL-based SAT solver for efficient Boolean reasoning, augmented with theory-specific decision procedures for theories like linear arithmetic, arrays, or bit-vectors. These ingredients have made SMT techniques well-suited for use in larger automated reasoning and formal verification efforts.

This special issue surveys recent developments in the SMT field. We present a total of seven articles from several areas of the field. The first three contributions focus on efficient handling of arithmetic theories. The first addresses linear integer arithmetic, the second non-linear arithmetic over integers and reals, and the third focuses on efficiently handling problems combining arithmetic and quantifiers.

The next two contributions focus on theoretical aspects of the theory of uninterpreted functions, and the related theory of arrays. In the fourth contribution, NP-completeness of small conflict set generation for uninterpreted functions is proven, while the fifth paper defines a decision procedure and derives complexity results for a fragment combining uninterpreted functions and cardinality constraints.

The sixth article of the issue presents a decision procedure for checking entailment between separation logic formulas with inductive predicates specifying complex data structures, a logic that has recently become popular for verification of heap-manipulating software programs.

Finally, the seventh contribution explores a non-CDCL-based way of checking satisfiability of bit-vector formulas, using the approach of propagation-based local search to significantly speed up the construction of satisfying assignments.

The articles were selected through an open call for contributions, and a two-step selection process, with authors first submitting only an abstract; the authors of all eight abstracts were then invited to submit full articles. Each contribution was reviewed by at least three experts, and finally seven articles were selected for the special issue.

We would like to thank the authors of all the articles, the anonymous reviewers for the efforts in the reviewing process, and the FMSD Editor-in-chief Daniel Kroening for making this special issue possible.

November 2017

Alberto Griggio

Philipp Rümmer