Abstract
This article describes model checking techniques that use satisfiability solving. Model checking is an automatic verification method which determines whether a given property holds or not by exploring the state space of a system. Satisfiability solving-based model checking can enjoy the recent rapid performance improvement of SAT or SMT solvers. In this article we first describe the basics of model checking and of satisfiability solving. Then we explain how program's source code can be model checked using satisfiability solving. Next we focus on a more general class of systems and describe bounded model checking for it. This technique is bounded in the sense that the state search is limited to the space reachable within a fixed number of transitions. We also show how this limitation can be removed to allow verifying the whole behavior of the system.