Other meanings of Model checking
FORMAL METHODS
Model checking is an automated verification method that exhaustively checks whether a model satisfies a formal specification. It explores the reachable states of a finite or finitely represented transition system and either establishes the property or returns a counterexample trace showing how it fails.
Model checking treats verification as a state-space exploration problem. A system is represented as a finite-state transition system, often formalized as a Kripke structure, while requirements are written in temporal logic such as LTL or CTL. The checker determines whether every permitted execution satisfies the formula, distinguishing universal safety claims from existential reachability claims.1
The method differs from testing because it examines all behaviors represented by the model rather than a selected sample of executions. When a property is false, the tool normally produces a compact counterexample, such as a sequence of states leading to a deadlock, assertion failure, or forbidden condition. Model checking is therefore both a proof technique and a debugging aid.
The central practical difficulty is the state explosion problem: composing several modest components can produce an enormous number of global states. Early explicit-state algorithms stored and traversed states directly, whereas symbolic model checking represents large state sets with Boolean formulas, especially binary decision diagrams.2
Other approaches encode bounded executions as propositional constraints for SAT solving or richer theories for SMT solving. These methods can find shallow bugs efficiently, while induction or increasing bounds may establish broader guarantees. Practical checkers also use abstraction, compositional reasoning, symmetry reduction, and partial-order reduction to avoid exploring interleavings that cannot affect the result.
Model checking is widely used for concurrent software, communication protocols, embedded controllers, hardware designs, and distributed algorithms. Hardware verification helped establish industrial techniques because a circuit can often be modeled as a finite synchronous transition system, making exhaustive checking particularly effective for control logic and protocol properties.
Notable tools embody different modeling choices. SPIN verifies concurrent software and protocols, commonly using the Promela language and automata-based analysis.3 NuSMV supports symbolic verification of finite-state systems with temporal specifications.4 UPPAAL targets networks of timed automata, while PRISM analyzes probabilistic systems and quantitative properties.56
Model checking is not limited to ordinary Boolean questions such as whether a failure is reachable. Extensions handle real-time bounds, probability, resource costs, fairness assumptions, and parameterized families of systems. Timed-automata tools can ask whether a deadline is always met; probabilistic checkers can calculate the likelihood of a failure or the expected reward of a policy.56
The result always depends on the model and its assumptions. An exhaustive proof of an incomplete abstraction does not establish the behavior of the deployed system, and an overly permissive environment can create misleading counterexamples. Conversely, abstraction may prove properties of many concrete implementations at once. This makes model construction, specification review, and interpretation of counterexamples as important as the search algorithm itself.
The scope here is formal model checking: automated, exhaustive verification of a modeled transition system against a formal specification.
Help improve the encyclopedia. Reports go straight to the site manager.