Glossary

ReactiveDynamics is a Petri net engine, and since v0.3 its API uses standard Petri-net vocabulary — place, marking, arc — in place of the chemical-reaction-network words it inherited from its Catalyst-derived DSL surface (see ADR 0017). This page is the term dictionary: what each concept is called here, and which published family of Petri nets to read if you want the theory behind it.

A token is a discrete unit of resource sitting in a place — the Petri-net sense of the word, unrelated to language-model tokens. When this documentation says "token" it always means the former.

Two registers, deliberately

The reference pages and the normative contract say place, marking and arc, because those are the names in the code and in the literature. The tutorials and case studies say resource pool for the same thing — it is the word a portfolio or capacity discussion actually uses — glossed once at first use as "a place, in Petri-net terms". Both registers describe one object; nothing in the engine distinguishes them.

Core vocabulary

TermWhat it is in RD
placeA resource pool: the :S rows of a network, one per named resource. Authored with @add_place or by naming it in a transition line.
markingThe quantity of tokens in each place — the net's state. state.u is the current marking; placeInitVal (@prob_init) declares the initial marking M₀.
tokenOne discrete unit of resource in a place. Fungible tokens are pure quantity (cash, headcount); structured tokens are agents with attributes, identity and history.
arcOne participation of a place in a transition — an ArcSpec row carrying (transition, place, side, stoichiometry, modality). Input arcs form the left-hand side, output arcs the right-hand side.
arc weightThe stoichiometric coefficient on an arc (2I is an arc of weight 2). May be a time-varying expression.
transitionA stateful recipe that spawns in-flight instances, occupies its input places for a cycletime, then completes with probability probability and emits its output places. Already the canonical Petri-net word; unchanged.
preset / postsetThe input places of a transition (•t) and its output places (t•) — the left- and right-hand sides of a reaction line.
firingOne in-flight instance of a transition running to completion.
colour setThe attribute schema of a structured place's tokens. Declared with @structured_token and registered by register_token_kind!.

Which literature answers a question

The mapping from RD's features onto the published Petri-net extensions, so you know where to look.

RD conceptStandard termFamily / note
fungible resource poolplace; its count is that place's markingclassical place/transition net; M₀ is the initial marking
structured-token poolplace with a colour set; its tokens are distinguishableColoured Petri nets (Jensen) — token attributes are colours
left-/right-hand-side entryinput arc / output arc; stoichiometry is the arc weight (inscription)classical
LHS / RHS multisetpreset •t / postset t•classical
transitiontransitionalready canonical
rate expressionfiring rate, marking-dependent. RD's Poisson intensity with unbounded concurrency is infinite-server semanticsStochastic PN / GSPN
capacity on a transitionk-server semantics — distinct from place capacity, an unrelated classical notion RD does not implementGSPN
cycletimefiring duration (not a firing interval: this is Timed PN, not Time PN)Timed PN (Ramchandani)
probability on completionrandom switch / probabilistic firing outcomeGSPN
priority + the allocatorpriority and random switches, extended by RD's rationing ruleGSPN + ADR 0002
:nonblock modalityread arc / test arcclassical extension
:conserved modalityself-loop / side conditionclassical
:rate modalitycontinuous transitionhybrid / continuous PN
a conservation invariant (S+I+R constant)P-invariant (S-invariant)classical structural analysis
resources held over a duration under contentionclosest published relative: Queueing Petri nets (QPN)Bause
a structured token selected by predicatebinding element (a transition plus a variable binding)Coloured PN

Renamed in v0.3

Each retired name still resolves for one release and warns; see ADR 0017 for the full migration.

RetiredUse instead
@add_species@add_place
SetSpeciesSetMarking
ReactantSpecArcSpec
reactant_specsarcs
specnameplacename
register_structured_species!register_token_kind!
the specName/specInitVal/specModality/… store columnsplaceName/placeInitVal/placeModality/…

The serialized JSON document renamed with them. The exporter emits only the new keys, so re-exporting a document written before v0.3 migrates it; the loader reads the retired keys for one release and warns.

Retired keyUse instead
top-level "species" array"places"
top-level "reactants" array"arcs"
an arc's "species""place"
a population[] entry's "species""place"
the action verb "set_species""set_marking"
a ref node's "kind": "species""kind": "place"
the result-frame / export column :species:place
the @select/@advance field :species:place (accepted silently — a warning would fire once per tick)