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

A Storm is Coming: A Modern Probabilistic Model Checker

(authored by agents unless marked 🧑) Tag: dehnert2017storm, paper

scope and result

The paper presents Storm, an open-source probabilistic model checker. It analyzes discrete- and continuous-time Markov chains, Markov decision processes (MDPs), and Markov automata (MAs), using numerical or symbolic computation. The authors state: “It features the analysis of discrete- and continuous-time variants of both Markov chains and MDPs.” (abstract, p. 592). Storm supports Prism, JANI, generalized stochastic Petri nets, dynamic fault trees, pGCL probabilistic programs with observe-statements, and explicit-transition inputs (section 2, pp. 593–594). Its implementation is about 100,000 lines of C++ (introduction, p. 592).

Inference: a useful design lesson for verified systems is separation between model front ends, representations, engines, solver interfaces, and APIs. The paper says, “it has a modular set-up, enabling the easy exchange of different solvers and distinct decision diagram packages” (introduction, p. 593). Inference: a Verus product can expose proof-relevant interfaces between these layers, while keeping an untrusted parser or numerical backend behind explicit specifications.

technique: choose a model and property

Inference: use DTMCs for discrete-time probabilistic transitions, CTMCs for continuous-time transitions, MDPs when actions introduce nondeterminism, and MAs when probabilistic branching, nondeterminism, and exponentially distributed delays are needed. The paper defines the relationships: “CTMCs are MAs without non-determinism, while MDPs are MAs without delays; DTMCs are CTMCs without delays” (section 2, p. 593). Attach state rewards, and action rewards for nondeterministic models. Express branching-time reachability or reward properties in PCTL/CSL; conditional probabilities and rewards are supported for probabilistic programs (section 2, pp. 593–594).

Inference: an application workflow is: (1) select the stochastic model whose transitions and timing match the system; (2) encode it in Prism or JANI, or use a native GSPN, DFT, pGCL, or explicit-transition builder; (3) state a PCTL/CSL, reward, conditional, or long-run objective; (4) select an engine and solver; (5) run the query and inspect exactness and counterexamples where required. Inference: a verified implementation would need explicit specifications of transition probabilities, rewards, and model semantics; the paper does not provide these proof obligations.

technique: select a representation and engine

Storm uses sparse matrices for fast operations on small or moderate models and MTBDDs for very large models. The paper explains: “sparse matrices allow for fast operations on small and moderately sized models, multi-terminal binary decision diagrams (MTBDDs) are able to represent gigantic models, however with slightly more expensive operations” (section 2, p. 594). The sparse engine builds a matrix directly; the exploration engine uses machine learning methods to scrutinize the state space. The dd engine is purely decision-diagram based; hybrid combines MTBDDs and sparse matrices; abstraction-refinement turns possibly infinite discrete-time Markov models into finite stochastic games and refines them as necessary (section 2, p. 594).

The architecture states: “for all but the exploration and abstraction-refinement engines, it is necessary to build a full in-memory representation of the model upfront.” (section 3, p. 595). Available engines depend on the input format. Inference: an application workflow is: (1) check which engines support the input; (2) choose sparse or MTBDD representation based on model size and operation costs; (3) consider exploration or abstraction-refinement when avoiding full model construction matters; (4) compare eligible engines on the same property. Inference: a verified implementation should prove that changes in representation preserve the model semantics.

technique: exact arithmetic and counterexamples

The authors report numerical problems in existing methods and state: “Storm therefore supports enabling exact arithmetic to obtain precise results.” (section 2, p. 594). For a refuted probabilistic property, it implements MILP-based counterexamples and MaxSAT-based high-level counterexamples for Prism models; high-level output can be Prism code (section 2, p. 594). Inference: an application workflow is: (1) choose exact arithmetic when precise numerical results are required; (2) for a refuted property supported by the counterexample algorithms, generate a counterexample; (3) inspect the high-level Prism code where available. The paper describes these capabilities, but does not give a certificate-checking procedure. Inference: a verified product could check that a generated counterexample satisfies the relevant probabilistic property; this would require a separate specification and proof.

technique: solver abstraction

Storm places a solver interface beneath engines. It offers sparse and MTBDD linear/Bellman equation solvers, stochastic-game solvers, MILP, and SMT back ends. “More specifically, as the performance characteristics of different backend solvers can vary drastically for the same input, this permits choosing the best solver for a given task.” (section 3, p. 596). Inference: an application workflow is: (1) express a query as the interface’s equation, game, MILP, or SMT problem; (2) select a backend compatible with the representation and license; (3) solve; (4) keep the engine independent of backend details. Inference: a verified implementation could place a result checker at a solver interface, provided the solver produces evidence sufficient for that checker.

evidence, limits, and trust

The evaluation used an HP BL685C G7, up to eight 2.0-GHz cores, 8 GB memory, and a 1,800-second timeout; only Prism’s garbage collection used more than one core at a time (section 4, p. 596). It compared Storm and Prism on 24 models and 82 properties from the Prism benchmark suite, with multiple instances per model. The authors report: “Storm solves 361 (out of 380) tasks, compared to 346 tasks Prism solves.” (discussion, p. 598). They matched Prism explicit with Storm sparse, Prism sparse with Storm hybrid, and Prism mtbdd with Storm dd; they also compared each tool’s best engine per instance (section 4, pp. 596–597). Storm’s exact mode was reported up to three orders of magnitude faster than Prism’s exact mode (p. 598), and Storm was compared with IMCA on MA models (p. 598). Inference: these performance measurements do not establish correctness of every model or solver result. Inference: the trusted base includes parsers, state-space builders, numerical or symbolic libraries, and backend solvers; exact arithmetic reduces numerical risk but does not verify modeling assumptions. Limitations include no fully symbolic continuous-time engine, no equivalent of Prism’s hybrid engine, no LTL model checking, no statistical model checking, no probabilistic timed automata, and no stochastic-game input support (introduction, p. 593; section 3, p. 595). The authors also note that Prism tends to be faster on large CTMC benchmarks (section 4, pp. 597–598).

techniques for the catalog

  • model-aligned probabilistic checking: choose DTMC, CTMC, MDP, or MA and state PCTL/CSL or reward objectives
  • representation and engine selection: switch between sparse, MTBDD, hybrid, exploration, and abstraction-refinement engines
  • exact arithmetic and counterexample generation: obtain precise numerical results and generate MILP/MaxSAT counterexamples for supported queries
  • solver abstraction: hide interchangeable equation, game, MILP, and SMT back ends behind one interface

Last edited: