Backward-Bifurcation Competitive Memory
Implementation & benchmark of arXiv:2608.05914 — Backward bifurcations in spatial replicator models:when invasion criteria fail to predict coexistence
Source paper: Backward bifurcations in spatial replicator models:when invasion criteria fail to predict coexistence arXiv:2608.05914 ⓘ · analyzed Aug 31, 2026
AI-generated research hypothesis, automatically tested. Not peer-reviewed.
Idea description
Replace an ordinary contracting recurrent state with two spatially coupled competing latent populations whose nonlinear interaction admits a stable finite-amplitude coexistence state even when the infinitesimal invasion eigenvalue is negative. This creates hysteretic, robust memory: a representation survives small perturbations and weak evidence, but can be switched by a sufficiently large input pulse.
Formulas
Mathematical statement
Let p(x,t) ∈ [0,1] be the activation frequency of latent population 1 on a spatial domain Ω, with diffusion coefficient D > 0, advection velocity v(x), and control parameter μ. Its linearized invasion operator around p = 0 is L_μ φ = DΔφ - v·∇φ + a(x;μ)φ, and the spatial invasion rate is λ(μ) = s(L_μ), the principal eigenvalue or spectral bound. Near the critical point λ = 0, projection onto the principal eigenfunction gives the amplitude equation dA/dt = A[λ(μ) + cA - kA²], where A ≥ 0 is the amplitude, c > 0 is the quadratic cooperative coefficient, and k > 0 is the saturating cubic coefficient. A stable positive equilibrium exists for λ < 0 whenever c² + 4kλ > 0: A_± = [c ± √(c² + 4kλ)]/(2k). The saddle-node fold is λ_fold = -c²/(4k); A_+ is stable and A_- is unstable. Thus λ < 0 does not imply extinction or zero latent activity. The neural implementation uses this same normal form at every feature location, with λ estimated from the Jacobian of the discretized spatial operator.
Implementation notes
1. Exact integration point: add this as a recurrent latent block before the readout of a GRU, S4-style state-space model, or sequence MLP. Discretize the feature or token axis into N sites; p[i] is the active population at site i, λ_t[i] is produced from the current input by a learned linear projection, and u_t[i] is an external input pulse. Use a periodic or reflecting finite-difference Laplacian and optional learned advection. 2. Pseudocode: initialize p; for each input x_t compute λ=Linear(x_t), u=InputProjection(x_t), lap=laplacian(p), adv=advection(p); set dp=D*lap-adv+p*(λ+c*p-k*p*p)+u; update p=clip(p+dt*dp,0,1); pool p and concatenate it with x_t for the task head. Constrain c,k,D to be positive using softplus. 3. Compute the principal eigenvalue λ_hat of the linearized N×N operator DΔ_h-v∇_h+diag(λ) by 10-20 power iterations or Arnoldi; estimate c and k by fitting measured equilibria after projecting onto the leading eigenvector. The paper supplies the eigenvalue-controlled invasion mechanism and fold normal form; the neural coefficients are empirical estimates. 4. First cheap experiment: train this block and a GRU with matched parameter count on a synthetic sequence dataset containing two persistent spatially localized binary patterns and a delayed-switch task. Before training, sweep constant λ and verify a saddle-node: fit equilibria versus λ and locate λ_fold≈-c²/(4k), with measured fold within 20%. In λ_fold<λ<0, the block should retain a nonzero state after input removal, whereas a linearized control decays. Test hysteresis by increasing and decreasing the input pulse; the predicted signature is two stable response branches separated by an unstable threshold and switching thresholds differing by at least 10%.
Verification
Stage 1 · Toy mechanism gate: Passed ✓
Stage 2 · Mechanism transferred to benchmark: Not reproduced ✗
Stage 2 · Practical benchmark result: Significantly worse ✗
Methodology: 8 paired seeds, permutation test (p<0.05) against a learning-rate-tuned baseline. How verification works
Stage 1 — Mechanism check agent confidence 8/10
Built and ran a reproducible backward-bifurcation normal-form and finite-difference spatial verification in verify_bifurcation.py. The predicted fold lambda_fold=-c²/(4k) was recovered across four (c,k) settings with maximum grid error 0.00019; for lambda<0 but above the fold, the upper finite-amplitude equilibrium persisted while infinitesimal states decayed. Hysteresis was strongly observed, with switching thresholds 0.00250 upward versus 0.31424 downward (125.7x ratio), so the proposed mechanism manifested in the toy system.
- Agent confidence
- 8/10
- Baseline
- Contracting linear state: final amplitude 0.001983 after 60 time units at lambda=-0.1.
- Idea
- Backward-bifurcation state: final amplitude 0.887298, matching the analytic A+=0.887298; measured equilibrium errors were below 3.1e-3 across the tested scaling sweep. Principal spatial eigenvalue was -0.1 to numerical precision.
Limitations: This is a mechanism-level toy verification, not a trained GRU/sequence-task comparison. The spatial test used periodic diffusion and a constant lambda; the localized-seed state was not used to claim uniform convergence. Hysteresis was measured in the scalar normal form with pulses, and finite-time integration plus clipping were not stress-tested across neural training settings.
How to run: python3 verify_bifurcation.py
Stage 2 — Benchmark vs. tuned baseline (arXiv:2608.05914)
Significantly WORSE than the tuned baseline (+202.1%, p=0.0081, wins 0 / 8 paired seeds).
- Benchmark
- Dynamics forecasting
- Model
- rnn_small
- Paired seeds
- 8
- Baseline mean
- 0.001
- Idea mean
- 0.0032
- Effect (Δ)
- 0.0021 (+202.1%; negative = idea better)
- Wins
- 0 / 8 paired seeds
- p-value
- 0.0081 (permutation test, 20 000 shuffles)
- Smallest detectable effect
- ±126.1%
- Mechanism
- Not confirmed ✗
- Practical effect
- Hurts
- Baseline tuning
- swept over 3 configs
Only the registered built-in actuated-pendulum dynamics track was tested; custom persistent-memory tasks, longer horizons, alternative widths, advection, and broader tuning were not evaluated.
How to run: python3 bench_backward_bifurcation.py
Verdict computed by deterministic test code from paired-seed statistics — not by the language model.
Stage 2 — Benchmark latest Failed ✗
Agent confidence: 10/10
The backward-bifurcation recurrent state lost significantly to the matched standard GRU on the registered dynamics track. Baseline mean test MSE was 0.0010460769990459085 versus 0.0031606621923856437 for the idea, with paired delta_mean 0.0021145851933397353 and permutation p_value 0.0081. The trained-model mechanism signature was not confirmed because the pulse decreased the measured idea response.
- Baseline
- mean test MSE=0.0010460769990459085; best lr=0.006
- Delta mean
- 0.0021145851933397353
- Idea
- mean test MSE=0.0031606621923856437; best lr=0.006
- Idea wins
- 0
- N pairs
- 8
- P value
- 0.0081
Benchmark result
Significantly WORSE than the tuned baseline (+202.1%, p=0.0081, wins 0 / 8 paired seeds).
- Benchmark
- Dynamics forecasting
- Model
- rnn_small
- Paired seeds
- 8
- Baseline mean
- 0.001
- Idea mean
- 0.0032
- Effect (Δ)
- 0.0021 (+202.1%; negative = idea better)
- Wins
- 0 / 8 paired seeds
- p-value
- 0.0081 (permutation test, 20 000 shuffles)
- Smallest detectable effect
- ±126.1%
- Mechanism
- Not confirmed ✗
- Practical effect
- Hurts
- Baseline tuning
- swept over 3 configs
Only the registered built-in actuated-pendulum dynamics track was tested; custom persistent-memory tasks, longer horizons, alternative widths, advection, and broader tuning were not evaluated.
How to run: python3 bench_backward_bifurcation.py
Artifacts
- bench_backward_bifurcation.py 4.8 KB View Raw
- bench_report.json 2.9 KB View Raw
- report.md 1.5 KB View
- report_bench_2026-09-01T011734.md 3.6 KB View
- results.json 3.1 KB View Raw
- verify_bifurcation.py 4.9 KB View Raw