Formally verifying the properties of Petri nets
Because Petri nets are a mathematical formalism with decades of theory behind them, they admit a level of formal analysis that ad-hoc workflow diagrams and flowcharts simply don't. They are an object whose state space, reachable markings, and structural invariants can be reasoned about — and, in many cases, decided — by automated tools.
This page sketches what that means in practice for users of Petrinaut.
For classical (untyped) Petri nets, a well-developed body of techniques can decide or approximate a number of properties of interest:
In Petrinaut's setting, these analyses are most directly applicable to the structural skeleton of a net — the places, transitions, arcs, arc weights, and inhibitor arcs — independent of any user-authored code on top.
Adding SDCPN's expressive features — colored tokens with numeric attributes, continuous dynamics, stochastic firing rates — buys you modeling power, but often takes you out of the regime where symbolic verification is tractable. An infinite or unbounded attribute space, or a transition that fires according to a probability distribution rather than a guard, can defeat the state-enumeration techniques that decide reachability on classical nets.
The trade-off between expressiveness and decidability here is the subject of active research, including in ARIA's Safeguarded AI programme.
Today, Petrinaut leans on Monte Carlo simulation: run the net many times under the same configuration, with different random seeds, and aggregate the results into statistical distributions over quantities of interest.
The headless createMonteCarloSimulator and createMonteCarloExperiment APIs in petrinaut-core run many independent simulations with bounded per-run memory, and aggregate user-defined metrics across them. This won't give you "the probability of deadlock is exactly 0.04" — but it will give you tight empirical confidence intervals on questions like "how often does this supply chain breach its target stockout rate?" or "what's the 95th-percentile time to recover from a disruption?"
See the Simulation page for details on running these experiments and authoring the metrics they aggregate.
Petri nets are interesting not just as a modeling tool in their own right, but as a natural fit for the "symbolic" half of neuro-symbolic AI. They are explicit, inspectable structures: an LLM can propose a Petri net, and a formal toolchain can then check it — for reachability, for safety properties, for invariants — before any of it actually runs.
That separation matters when AI systems are doing real work in safety-critical domains. The neural component is allowed to be creative and fluent; the symbolic component decides whether the result is something we're willing to execute. Petri nets give you a target formalism rich enough to capture real processes, yet structured enough to admit machine-checkable guarantees: the gap neuro-symbolic approaches aim to close.
Previous
Next