A model checker verifies a property by building a graph of all of the states in the model. In SMV, the number of states in the model is , where n is the number of state variables in the cone of the property. In fact, it is only necessary for the model checker to consider the states that are ``reachable'' from an initial state. However, as you might expect, the amount of computational effort required to verify a property still tends to grow very rapidly with the number of state variables. This is known as the ``state explosion problem''.
To address this problem, SMV uses a structure called a ``Binary Decision Diagram'' (BDD) to implicitly represent the state graph of the model, and sets of states satisfying given properties. For some models and properties, the use of BDD's (implicit enumeration) allows SMV to handle models with many orders of magnitude more states than could be handled by considering individual states (explicit enumeration). First, we see a simple example of a circuit with a very large number of states that can still be handled efficiently using BDD's. Later we'll consider what to do when a direct approach using BDD's doesn't work.