Overview
Satisfiability Modulo Theories (SMT) appears in the UCLID5 verification workflow as the solving step for verification conditions. UCLID5 generates verification conditions from a model and verification script as formulas in a logic that supports the multiple data types—called theories—used in the model. These formulas are typically the negations of the properties that the user wants to verify, and UCLID5 then invokes an SMT solver on them. [C1]
Role in UCLID5 verification
In the cited processor-verification workflow, models may use multiple forms of typed data, including uninterpreted functions and arrays with arbitrary index and data types. The combination of the model and verification script is translated by UCLID5 into verification-condition formulas over the relevant theories. [C2]
UCLID5 can use several different SMT solvers. In the cited work, the authors used the Z3 solver developed at Microsoft Research. [C3]
Solver outcomes
When UCLID5 invokes an SMT solver, the solver can return three kinds of answers: [C4]
- Unsatisfiable: Because the formulas are typically negations of desired properties, an unsatisfiable result indicates that the desired verification condition holds. [C4]
- Satisfiable: The solver provides concrete values for all data elements in the formula, including uninterpreted functions, such that the formula holds. This typically indicates that a verification condition failed. UCLID5 uses these values to generate a counterexample: a sequence of model actions that could violate the verification condition. [C5]
- Indeterminate: The solver cannot find a satisfying solution but also cannot prove the formula unsatisfiable. This typically indicates that the model is too complex or requires more sophisticated reasoning than the solver can provide. [C6]
Counterexample interpretation
A satisfiable SMT result in this workflow is not described merely as a Boolean failure. UCLID5 uses the solver-provided concrete values to construct a counterexample, and such counterexamples can indicate one of several issues: a true design error, an inaccurate or overly abstract model, or an improperly expressed verification condition. [C5]
Modeling implications
The cited workflow emphasizes that choosing data types and abstractions affects verification. The authors state a general rule: use the most abstract model possible that still captures the system properties needed for correctness. Different pipeline variants may require different abstraction levels during verification. [C7]