1 · Rules & state space
One growing A/B path, free A/B tokens and constant-rate feeds. An append consumes one free token at the unique path end.
Directed links use the edge labels
src (source) and tgt (target); kind connects a position to its letter.One rule application
The highlighted ABA count increases from 1 to 2. There are 2 admissible A-token choices, giving rate 2 k_A.
Coordinates and graph matches
Coordinate order: C_ABA, M_A, M_B, S_AB, S_A
Before: [1, 2, 1, 1, 0]
After: [2, 1, 1, 0, 1]
Jump: [1, -1, 0, -1, 1]
Explore the state space
Edges are literal rule applications; ×n is their match multiplicity. States at the depth boundary are not expanded. Hover an edge for its rule and rate; click a state for its full graph.
2 · Inputs & semantics
Input rules and graph encoding
P vertices carry A or B tags. N and T vertices encode directed links. Drawings and MolFoundry links use these abbreviations; Python inputs retain the full labels.
The query counts consecutive ABA occurrences, including overlaps.
Query graph
3 · Observable discovery
An exact finite event model is obtained. The linear expectation search remains unfinished at 24 functions.
M_A— free tokens AM_B— free tokens BS_AB— path ends in ABS_A— path ends in A
Follow the discovery of S_AB
Composing the query with append A and reducing the signed contributions gives M_A*S_AB. The terminal AB pattern supplies the factor S_AB; free tokens and this pattern have disjoint images.
| Coefficient | Graph | Reduced count |
|---|---|---|
| 1 | View composite | M_A*S_AB |
4 · pJC
The query image is L C_ABA = M_A*S_AB*k_A. Algorithm 1 searches expectation closure directly from the rules; Algorithm 2 independently constructs the events below.
All events and the EMGF operator
All 8 derived EMGF event classes
δ is the coordinate jump; ae is its activity.
| Event class | Rule / rate | Computed δ | Activity ae | exp(λ·δ) − 1 |
|---|---|---|---|---|
feed_A-support-0 | feed_Abeta_A | ΔM_A=+1 | 1 | exp(lambda_M_A) - 1 |
feed_B-support-1 | feed_Bbeta_B | ΔM_B=+1 | 1 | exp(lambda_M_B) - 1 |
insert_A-support-2 | insert_Ak_A | ΔM_A=-1, ΔS_A=+1 | M_A - M_A*S_A - M_A*S_AB | exp(-lambda_M_A + lambda_S_A) - 1 |
insert_A-support-3 | insert_Ak_A | ΔC_ABA=+1, ΔM_A=-1, ΔS_AB=-1, ΔS_A=+1 | M_A*S_AB | exp(lambda_C_ABA - lambda_M_A - lambda_S_AB + lambda_S_A) - 1 |
insert_A-support-4 | insert_Ak_A | ΔM_A=-1 | M_A*S_A | exp(-lambda_M_A) - 1 |
insert_B-support-5 | insert_Bk_B | ΔM_B=-1 | M_B - M_B*S_A - M_B*S_AB | exp(-lambda_M_B) - 1 |
insert_B-support-6 | insert_Bk_B | ΔM_B=-1, ΔS_AB=-1 | M_B*S_AB | exp(-lambda_M_B - lambda_S_AB) - 1 |
insert_B-support-7 | insert_Bk_B | ΔM_B=-1, ΔS_AB=+1, ΔS_A=-1 | M_B*S_A | exp(-lambda_M_B + lambda_S_AB - lambda_S_A) - 1 |
5 · Initial states
Initial path ABAB, pools A=2 and B=1. Feeds remain active.
6 · Dynamics
━━ FSP ┄┄ SSA estimate
Parameters and numerical bounds
β_A=2, β_B=1.5, k_A=0.9. The paper uses these gated rates with k_B=0.01 over time 0–20. Both numerical methods consume the generated events.
The bounds concern FSP truncation; floating-point error is separate. These settings are computed during the build. Use the notebook to run other rates or queries.