Use Finite-State Space Abstractions: In order to successfully apply explicit-state model checking, defects must be detectable in a sufficiently small state space. This can be achieved either by means of heuristics that constrain the way the state space is searched, or by means of abstractions closing the state space. While the model checker can automatically apply certain abstractions, others should be used explicitly in the target program.
The most important state space reductions of the last category use specialized types to reflect value constraints. For example avoid using “int” and “long” types where the whole range of values is not needed. If a variable v can only take values -1, 0, or 1, then we can declare it as an enumerated type with only those three values. This helps the model checker limit the range of values that it needs to check for.