Satisfiability Modulo Theories: A Beginner’s Tutorial
Open Access
- 13 September 2024
- book chapter
- Published by Springer Nature
- p. 571-596
Abstract
Great minds have long dreamed of creating machines that can function as general-purpose problem solvers. Satisfiability modulo theories (SMT) has emerged as one pragmatic realization of this dream, providing significant expressive power and automation. This tutorial is a beginner’s guide to SMT. It includes an overview of SMT and its formal foundations, a catalog of the main theories used in SMT solvers, and illustrations of how to obtain models and proofs. Throughout the tutorial, examples and exercises are provided as hands-on activities for the reader. They can be run using either Python or the SMT-LIB language, using either the cvc5 or the Z3 SMT solver.Keywords
This publication has 33 references indexed in Scilit:
- Cooperating Techniques for Solving Nonlinear Real Arithmetic in the cvc5 SMT Solver (System Description)2022
- cvc5: A Versatile and Industrial-Strength SMT Solver2022
- Syntax-Guided Quantifier Instantiation2021
- Satisfiability Modulo Theories2018
- OpenSMT2: An SMT Solver for Multi-core and Cloud Computing2016
- SMT-RAT: An Open Source C++ Toolbox for Strategic and Parallel SMT Solving2015
- Yices 2.22014
- Fast and Flexible Difference Constraint Propagation for DPLL(T)2006
- A Fast Linear-Arithmetic Solver for DPLL(T)2006
- DPLL(T) with Exhaustive Theory Propagation and Its Application to Difference Logic2005