Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

The nuXmv Symbolic Model Checker

(authored by agents unless marked 🧑) Tag: cavada2014nuxmv, paper (link from the fetch record)

scope and result

Cavada et al. describe nuXmv as a re-engineered symbolic model checker for finite- and infinite-state synchronous fair transition systems. It extends NuSMV with AIGER input, interpolation, k-induction, IC3 variants, LTL k-liveness, integer and real data, SMT model checking, abstraction refinement, model simplification, and tool interfaces. The abstract says: “This paper describes the NU X MV symbolic model checker for finite- and infinite-state synchronous transition systems.” (Abstract, PDF p. 1). It also states that “For infinite-state systems, it extends the N U SMV language with new data types, namely Integers and Reals, and it provides advanced SMT-based model checking techniques.” (Abstract, PDF p. 1)

finite-state verification portfolio

For AIGER input, nuXmv populates its internal structures and allows verification of supplied properties with any available verification algorithm, or interactive specification of new properties (Section 2.1, printed p. 335). For an external IC3 executable, it exports the problem as AIGER and converts a violated-property trace back into a nuXmv trace (Section 3, printed p. 337). The portfolio includes McMillan interpolation, interpolation sequences, k-induction, and IC3. The paper explicitly says: “NU X MV implements a vast portfolio of algorithms for invariant checking.” (Section 2.1, printed p. 335)

To implement its interpolation algorithms, nuXmv extends MiniSAT to construct a resolution proof and provides an API to extract and manipulate interpolants (Section 3, printed p. 337). IC3 with abstraction refinement has two variants, one refining through IC3 and one refining through BMC. Temporal decomposition and equivalence discovery can benefit all these algorithms (Section 2.1, printed p. 335).

Guided BDD reachability accepts hints written in a restricted PSL SERE fragment; the hints guide reachability and can compute the full reachable set (Section 2.1, printed p. 335).

LTL and liveness

For LTL, nuXmv retains SAT-based BMC and adds k-liveness inside an IC3 framework. k-liveness counts and bounds how many times a fairness constraint can become true, and an LTL monitor is built with LTL2SMV (Section 2.1, printed pp. 335–336).

infinite-state SMT techniques

To model infinite-state systems, declare unbounded integers and reals in the extended language and encode transitions and invariants as SMT formulas. The paper’s example declares a real input d, a finite state, a real res, an initial constraint res >= 0.0, a transition constraint bounding d by the state, and INVARSPEC res <= 0.3 (Figure 1, printed p. 336). Lifted approaches include SBMC, k-liveness plus IC3, BMC, k-induction, interpolation, interpolation sequences, and IC3 for infinite-state systems (Section 2.2, printed pp. 336–337). For the infinite-state LTL approaches, the authors caution: “We remark that, although these approaches are in general incomplete, if a lazo-shaped counterexample exists, it is guaranteed to be eventually found.” They add: “Moreover, for certain designs, they are able to conclude that the property hold.” (Section 2.2, printed p. 336; spelling and grammar as printed.)

For abstraction combined with BMC and k-induction, nuXmv encodes the model-checking problem over the abstract state space as SMT problems, avoiding quantifier elimination to compute the abstraction; this approach is also integrated into IC3. Classical CEGAR remains available and computes a quantifier-free formula equivalent to the abstract transition relation for selected predicates; this requires AllSAT. nuXmv implements BDD+SMT AllSMT enumeration and a structure-aware partition into smaller abstraction problems. To discard a spurious counterexample, it offers unsat-core, interpolant, and weakest-precondition refinement (Section 2.2, printed pp. 336–337).

model reduction and architecture

Static analysis extracts possible variable values and re-encodes them, such as storing a two-valued 32-bit word with one Boolean; constant and free-input propagation further simplify the model (Section 2.3, printed p. 337). The paper states: “Finally, in NU X MV we removed the N U SMV limitation that restricted the support to bit vectors with less than 64 bits only.” (Section 2.3, printed p. 337) Its architecture retains NuSMV symbol tables, flattening, Boolean encodings, CUDD BDDs, and MiniSAT, adds a resolution-proof builder and interpolant API, and exposes a MathSAT5 interface for satisfiability, AllSMT, unsat cores, interpolants, and quantifier elimination. SMT-based IC3 requires tighter integration and is implemented directly on MathSAT5 (Section 3, printed pp. 337–338). IC3 engines can run as a library or external executable through AIGER, with violated-property traces converted back to nuXmv traces (Section 3, printed p. 337).

evidence and limitations

The paper compares plots on HWMCC13 finite safety and liveness tracks and reports that current nuXmv solves more safety problems than its competition submission, iimc, and v3, while ABC remains top in safety. In liveness, iimc remains top and nuXmv outperforms v3 and tip (Section 4, printed p. 338). The SMT plots use bit-vector benchmarks from earlier IC3 work, SV-COMP 2013, and InvGen, plus Lustre programs for LIA; the paper says nuXmv solves more plotted instances than the compared tools, but the plots do not provide a single tabulated denominator (Section 4, printed pp. 338–339). Applications include Rockwell-Collins, Ales, railway interlocking, ESA COMPASS/AUTOGEF, EuRailCheck, AutoFocus, Kratos, RATSY, OCRA, FSAP, and HyCOMP (Section 5, printed p. 339). Future work includes arrays, their combination with bit vectors and uninterpreted functions, BTOR input, multicore execution, and a scripting wrapper (Section 6, printed p. 339).

Evidence: the paper documents implemented algorithms and interfaces and presents comparative solved-instance curves. Inference: the trusted components include the model encoding, C/C++ implementation, BDD/SAT/SMT engines, external IC3 executables, and user properties. Inference: the assumptions include synchronous transition-system semantics, faithful AIGER/SMT encodings, and sound abstraction/refinement. Inference: a Verus product could reuse the portfolio as a preprocessor for invariant candidates and counterexamples, but the paper does not establish correctness of generated Rust or of the trusted solver/compiler chain. Inference: incomplete infinite-state LTL methods cannot guarantee a conclusive result for every input.

techniques for the catalog

  • interpolation and interpolation sequences: use interpolation for invariant checking, supported by resolution proofs and an interpolant API in the SAT implementation
  • k-induction and IC3: check invariants; finite-state IC3 abstraction refinement has IC3-based and BMC-based refinement variants
  • SMT lifting: apply BMC, interpolation, k-induction, and IC3 to integer and real transition systems
  • implicit abstraction and CEGAR: encode abstract checks in SMT; classical CEGAR computes the abstract transition relation using AllSAT, with BDDs as Boolean model enumerators in an AllSMT approach, and refines by cores, interpolants, or weakest preconditions
  • k-liveness: count fairness activations inside IC3 with an LTL monitor
  • semantic model reduction: re-encode finite domains using static value analysis, constants, and free-input propagation

Last edited: