「‍」 Lingenic

Bounded Model Checking

(⤓.md ◇.md); γ ≜ [2026-07-17T120407.600, 2026-07-17T135416.643] ∧ |γ| = 3

Bounded Model Checking

Origin. Biere, Cimatti, Clarke, Zhu (1999). Unroll transition relation k times. SAT encoding of bounded reachability. No state explosion for bounded depth. Foundation for industrial verification.

Models. Check property up to bound k. Path of length k as propositional formula. SAT solver finds bugs. Incremental deepening. Complete for finite systems with known diameter.

Formalism.

Transition system: M = (S, I, T) where:

  • S: states (propositional variables)
  • I(s): initial states
  • T(s, s'): transition relation

BMC encoding: Unroll k steps: I(s₀) ∧ T(s₀, s₁) ∧ ... ∧ T(sₖ₋₁, sₖ)

Safety property: ¬(I(s₀) ∧ ⋀ᵢT(sᵢ, sᵢ₊₁) ∧ ⋁ᵢ¬P(sᵢ)) UNSAT iff no counterexample of length ≤k.

Liveness (bounded): Find lassos: path to loop. l ≤ k: loop-back position. Büchi acceptance in loop.

Incremental BMC: k = 0, 1, 2, ... Reuse learned clauses. Stop at diameter or resource limit.

Completeness: Diameter d: longest shortest path. If SAT for all k ≤ d: property holds. Recurrence diameter: harder to compute.

Interpolation for completeness: Craig interpolants from UNSAT proofs. Approximate reachability. McMillan's approach.

Symbols.

SymbolUnicodeNameMeaning
kBoundUnrolling depth
IInitialInitial states
TTransitionStep relation
SATSatisfiableHas model
UNSATUnsatisfiableNo model

Metatheory. Sound: counterexamples are real. Complete for bounded depth. SAT complexity. Incremental solving crucial. Parallel/distributed variants.

Applies to. Hardware verification. Software BMC (CBMC). Security (fuzzing guidance). Bug finding. Test generation.

Limitations. Incomplete for unbounded. Large bounds expensive. Liveness harder. Diameter unknown. Memory for unrolling.

© 2026 Lingenic LLC