CRNs are population protocols (CRN-1) #
The population protocol of a network N runs on n agents, each holding a species. In one
interaction it draws a uniformly random ordered pair (u, v) of distinct agents and,
independently, a uniformly random reaction r of N. The pair reacts if the species of
u and v are the reactants of r, and then r fires; otherwise nothing changes. Drawing
the reaction uniformly is what a common rate constant means when several reactions share
their reactants (as X + Y → X + B and X + Y → Y + B in approximate majority). We observe
the protocol on count vectors, which do not depend on which agent receives which product.
Key identity (pair_prob_of_ne, pair_prob_of_eq): the pair has species {A, B} with
probability #A·#B / C(n, 2), or C(#A, 2) / C(n, 2) if A = B. This is the mass-action
propensity divided by the common factor k·C(n, 2) (pair_prob_eq_propensity). Hence the
protocol reacts with probability a₀(x) / (k·|N|·C(n, 2)) (reactProb_eq), each interaction is
a jump of the mass-action chain with that probability and a no-op otherwise (ppStep_expect),
and conditioned on the pair reacting the protocol is exactly the jump chain
(condStep_eq_jumpKernel, and jumpKernel_eq_ppKernel as kernels on count vectors).
The scheduler of the population protocol: a uniformly random ordered pair of distinct agents.
Equations
Instances For
The count vector of a configuration c (agent v holds species c v).
Instances For
One draw of the population protocol of N: a uniformly random ordered pair of distinct
agents and, independently, a uniformly random reaction of N.
Equations
- Crn.sampleDist N hn = Dynamics.Distribution.uniform (Crn.AgentPair n × ↥N.reactions)
Instances For
Equations
The count vector after the interaction ω from configuration c: the drawn reaction
fires if the drawn pair reacts by it.
Equations
- Crn.outcome N c ω = if Crn.Reacts N c ω then (Crn.counts c).react ↑ω.2 else Crn.counts c
Instances For
One interaction of the population protocol of N from configuration c, observed on
count vectors.
Equations
- Crn.ppStep N hn c = (Crn.sampleDist N hn).map (Crn.outcome N c)
Instances For
One interaction of the population protocol of N from configuration c, conditioned on
the drawn pair reacting, observed on count vectors. If no pair can react, nothing changes.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The population protocol of N conditioned on reacting pairs, as a kernel on count
vectors: from x, one conditioned interaction from some configuration with counts x (one
exists; condStep_eq_jumpKernel shows that the choice does not matter).
Equations
- Crn.ppKernel N hn x = if h : ∃ (c : Fin n → S), Crn.counts c = x then Crn.condStep N hn h.choose else Dynamics.Distribution.point x
Instances For
Helper lemmas #
Every count vector is the count vector of some configuration.
The probability of an event under the scheduler: a counting ratio over the n·(n - 1)
ordered pairs of distinct agents.
Key identity (roadmap CRN-1), A ≠ B: a uniformly random ordered pair of distinct
agents has species {A, B} with probability #A·#B / C(n, 2).
Key identity (roadmap CRN-1), A = B: a uniformly random ordered pair of distinct
agents has species {A, A} with probability C(#A, 2) / C(n, 2).
Key identity (roadmap CRN-1): the probability that a uniformly random ordered pair of
distinct agents has the reactant species of r is the mass-action propensity of r divided
by the common factor k·C(n, 2).
The core computation: the expectation of g(r) on the event that the drawn pair reacts by
the drawn reaction r is ∑ᵣ aᵣ(x)·g(r) / (k·|N|·C(n, 2)).
The drawn pair reacts with probability a₀(x) / (k·|N|·C(n, 2)), x the counts.
One interaction of the population protocol is a step of the mass-action jump chain with the probability that the drawn pair reacts, and a no-op otherwise.
CRN-1, pointwise. From every configuration, one interaction of the population protocol conditioned on the pair reacting moves the count vector as one step of the jump chain of stochastic mass-action kinetics with a common rate constant.
CRN-1 (roadmap; Anderson–Kurtz 2011 for the jump chain). For a count-conserving
bimolecular CRN with a common rate constant k, the jump chain of stochastic mass-action
kinetics equals the population protocol picking a uniformly random ordered pair of distinct
agents, conditioned on the pair reacting, as kernels on count vectors.