Imagine you want to know whether a bug can ever be reached in a program. You might encode the question as a logical formula: if variable x is greater than 10 and the flag is false, can counter overflow? Pure SAT struggles here â it only speaks in true/false booleans, not integers or comparisons.
Satisfiability Modulo Theories (SMT) fills that gap. An SMT solver answers: "Does there exist an assignment of values to the variables that makes this formula true â where the formula can mix propositional logic and arithmetic, arrays, bitvectors, or strings?"
SMT was shaped in the late 1990s and early 2000s by researchers including Leonardo de Moura, Nikolaj Bjørner, Clark Barrett, and others, leading to the DPLL(T) architecture and, eventually, industrial-strength solvers like Z3 (Microsoft, 2008) and CVC5. The field is active and the solvers grow faster and more expressive every year.
The secret of SMT's power is that it doesn't replace SAT â it wraps it. A SAT solver handles the Boolean skeleton; theory solvers check whether the non-Boolean pieces are consistent. The two alternate, learning from each other, until the formula is either satisfied or proved unsatisfiable.
Comments
Loading comments...