---
pipeline_tag: text-generation
library_name: pytorch
language:
- en
license: cc-by-4.0
tags:
- research
- semsimula
- conservative-language-model
- scalar-potential
- lagrangian-mechanics
- energy-based-model
- physics-informed
- fock-space
- parflm
- parf
- multi-channel-xi
- structured-vtheta
- analytical-gradient
- interpretable
- gaussian-mixture-potential
- virtual-registers
- controlled-conservativity
- sparse-routing
- tinystories
- non-transformer
- attention-free
- constant-memory-inference
- riemannian-geometry
- riemannian-geodesics
datasets:
- roneneldan/TinyStories
metrics:
- perplexity
model-index:
- name: semsimula-fock-parflm-structured-vtheta
results:
- task:
type: text-generation
dataset:
type: roneneldan/TinyStories
name: TinyStories
split: validation
metrics:
- type: perplexity
value: 10.90
name: Validation Perplexity (SQ3 K=8)
verified: false
---
> **CAUSAL-LEAK NOTICE — RESOLVED, MODEL RE-TRAINED WITH THE FIX**
>
> A post-publication causal audit identified an **architectural causal leak** in the Fock reverse-channel mechanism shared by all models in the SPLM family that use the reverse channel: the reverse channel blended each token's content into a **global register state shared across all positions within the same integration step**, so future-token information leaked backward into past-token predictions.
>
> **The checkpoint on this page is the re-trained, leak-fixed model** (`prefix_causal_registers=True`). The fix was certified on this exact training run:
> - **Future-perturbation probe, bit-exact:** perturbing tokens after position *t* changed past logits by exactly **0.0** in float64, at steps 8,000 and 16,000, and the deterministic architectural probe (`eval_max_delta`) is bit-exact `0.0` at all four checkpoints (4k/8k/12k/16k).
> - **Honest vs. standard PPL agree** within ~1.4–2.0 standard errors (not statistically distinguishable from zero) — the expected signature once the channel is closed.
>
> **Training-time cost of the fix:** a like-for-like rerun of the *leaky* architecture (same seed, same 16k steps) reproduces the original **10.36 PPL** almost exactly; the fixed rerun reaches **10.90 PPL** — a real but modest **+0.54 PPL** tax, similar in kind (slightly larger in magnitude) to the MLP-\\(V_\theta\\) sibling's **+0.40 PPL** tax. Both are far smaller than the **+3.51 nats (~33× PPL)** the same leak pathway cost on the much larger OpenWebText-scale variant.
> - The "Fock paradox" gap analysis below is updated accordingly: **1.20 PPL / 12.4%** gap vs the honest MLP baseline (was reported as 1.06 PPL / 11.4% under the leaky architecture).
> - **A separate, unrelated error was also found and fixed while re-certifying this model:** the architecture table below previously reported **17,407,980 total parameters**, copy-pasted from the MLP-\\(V_\theta\\) sibling card. The true count for this SQ3 variant, verified by loading the checkpoint with zero missing/unexpected keys, is **18,194,420** (the SQ3 hypernetwork is larger than the 3-layer MLP it replaces).
> - The structured \\(V_\theta\\) contributions (analytical gradients, explicit attractor centres, landscape compression) are unaffected — only the absolute PPL and parameter-count numbers changed.
>
> For the full root-cause analysis, see [`Fock-PARFLM_Causal_Leak_Audit_Results.md`](https://github.com/dimitarpg13/semsimula-paper/blob/main/companion_notes/Fock-PARFLM_Causal_Leak_Audit_Results.md). For the paired leaky-vs-fixed rerun on this exact configuration, see this repo's [`causal_leak_fix_verification.md`](causal_leak_fix_verification.md).
# Fock-PARFLM v2.1 with Structured V_theta (SQ3 Mixture of Quadratic Wells)
A **structured variant** of the [Fock-PARFLM v2.1](https://huggingface.co/dimitarpg13/semsimula-fock-parflm) language model in which the MLP scalar potential \\(V_\theta\\) is replaced by a **mixture of K=8 diagonal quadratic wells** (SQ3), while retaining the full MLP-based pairwise potential \\(V_\phi\\) and the Fock register mechanism (16 registers, LIFO stack discipline, reverse channel, now leak-free via `prefix_causal_registers=True`). This replacement yields:
- **Full analytical gradients for \\(V_\theta\\)** — no `torch.autograd.grad` needed for the scalar potential force, eliminating the second-order computation graph for the \\(V_\theta\\) component
- **Explicit attractor centres** — the 8 semantic attractors \\(\mu_k(\xi)\\) are readable directly from the model parameters, with no gradient-descent extraction required
- **Most compressed \\(V_\theta\\) landscape** — with both \\(V_\phi\\) and Fock registers carrying the force budget, \\(V_\theta\\) collapses to the flattest bias field observed across all three architectures (mean 0.017, range 16.0)
The trade-off is a **1.20 PPL gap**: **10.90 PPL** (honest, leak-free) vs the MLP baseline's **9.70 PPL** (12.4% excess cross-entropy). This is larger than the PARFLM gap (0.17 PPL) despite even greater landscape compression — the "Fock paradox" discussed below.
This model is from the [Semantic Simulation](https://doi.org/10.5281/zenodo.19712427) framework.
## Table of Contents
- [When to Use This Model](#when-to-use-this-model)
- [Architecture](#architecture)
- [SCAF Causal-Leak Audit (Formal)](#scaf-causal-leak-audit-formal)
- [About the SCAF Library](#about-the-scaf-library)
- [The Fock Paradox: Maximal Compression, Moderate Gap](#the-fock-paradox-maximal-compression-moderate-gap)
- [How to Get Started](#how-to-get-started)
- [Training Details](#training-details)
- [Evaluation Results](#evaluation-results)
- [SPLM Family Overview](#splm-family-overview)
- [Bias, Risks, and Limitations](#bias-risks-and-limitations)
- [Citation](#citation)
## When to Use This Model
Choose this structured variant over the [MLP-based Fock-PARFLM v2.1](https://huggingface.co/dimitarpg13/semsimula-fock-parflm) when:
| Priority | Structured V_theta (this model) | MLP V_theta ([baseline](https://huggingface.co/dimitarpg13/semsimula-fock-parflm)) |
|---|---|---|
| **Interpretability** | 8 explicit attractor centres, zero-cost basin readout | Black-box; requires 1,500-step GD extraction per prompt |
| **Inference speed** | ~2x faster V_theta force computation (analytical gradient) | Standard (autograd for both V_theta and V_phi) |
| **Raw PPL** | 10.90 (honest, leak-free) | **9.70** (honest, leak-free) |
| **PPL gap** | 1.20 PPL (12.4%) | — |
| **Memory** | No second-order graph for V_theta (V_phi graph retained) | Full graph for both |
Both PPL numbers are from the leak-fixed architecture (`prefix_causal_registers=True`); see the causal-leak notice above for the fix and its small, honest cost.
**Bottom line:** for Fock-PARFLM, structured \\(V_\theta\\) is a **viable option when interpretability or analytical-gradient inference is valued** — the 1.20 PPL cost is meaningful but the attractor readout and speed gains may justify it. For maximum PPL, use the MLP baseline.
## Architecture
```
Input tokens x_1, ..., x_T
|
Embedding E[x] + positional encoding
|
For each of L=8 integration steps:
|
+-- K-EMA channels: xi^(k)_t = causal_ema(h, alpha_k) [K_xi=4 channels]
|
+-- Structured V_theta (SQ3):
| xi_flat = flatten(xi_1..xi_K) [K_xi * d = 1024]
| V = -tau * logsumexp_k(-E_k/tau + log pi_k) [K_mix=8 wells]
| f_theta = -analytical_grad_h V [closed-form]
|
+-- Pairwise V_phi (competitive structural MLP):
| scores = score_net(h_t, h_s) [for all s <= t]
| top-k selection via Gumbel-softmax [k=8 neighbours]
| f_phi = -grad_h V_phi(h_t, h_s) [autograd, sparse]
|
+-- Fock register pool (v2.1):
| M=16 virtual registers with Q/K/V creation gates
| LIFO stack discipline, salience decay
| Per-register tau and key subspaces
| Reverse channel (non-conservative exchange)
| *** register state is now per-position (prefix-causal fix); no leak ***
| f_fock = creation + destruction + exchange forces
|
+-- Total force: f = f_theta + f_phi + f_fock
|
+-- Damped Stormer-Verlet step: h += (h-h_prev)/(1+dt*gamma) + dt^2*f/(m*(1+dt*gamma))
|
+-- LayerNorm(h)
|
Logits = h @ E^T [tied embeddings]
```
| Parameter | Value |
|---|---|
| Hidden dim (d) | 256 |
| Layers (L) | 8 |
| V_theta kind | SQ3 (mixture of K quadratic wells) |
| Mixture components (K_mix) | 8 |
| Temperature (tau) | 1.0 |
| Xi channels (K_xi) | 4 |
| V_phi kind | structural_competitive |
| V_phi hidden | 128 |
| Top-k (sparse routing) | 8 |
| Gumbel tau | 1.0 (init), 0.3 (min) |
| Fock version | v2.1 |
| Registers (M) | 16 |
| Register d_k | 64 |
| Stack discipline | LIFO |
| Reverse channel | Yes — fixed lifecycle, leak-free (was the causal leak source pre-fix) |
| Per-register tau/keys | Yes |
| Gathered V_phi | Yes |
| Per-layer V_phi scale | Yes |
| LN before distance | Yes |
| Layer checkpoint | Yes |
| Mass model | logfreq (frozen surprisal lookup) |
| Damping gamma | 0.30 nominal, ~0.033 effective (LayerNorm prevents compounding; see note below) |
| lambda_V (V_theta regularisation) | 0.01 |
| Prefix-causal registers | **Yes** (`prefix_causal_registers=True`; bit-exact 0.0 future-perturbation sensitivity verified at steps 8k/16k) |
| Total parameters | **18,194,420** (corrected — previously misreported as 17,407,980, copy-pasted from the MLP sibling) |
| \\(V_\theta\\) parameters | **4,207,625** |
**Effective damping.** The nominal gamma = 0.30 overstates the true dissipation. The LayerNorm applied after each integration step rescales the hidden state, absorbing most of the velocity decay. The dynamics are therefore **heavily underdamped** even at this nominal value. Gamma-sweep experiments on the [OpenWebText-scale depth-conditioned variant](https://huggingface.co/dimitarpg13/semsimula-fock-parflm-depthcond-vtheta-openwebtext) confirm that the effective damping is much smaller than the nominal coefficient.
## SCAF Causal-Leak Audit (Formal)
The causal-leak notice above and `causal_leak_fix_verification.md` document a hand-built verification of the fix. This section adds a formal, tool-generated audit of this exact checkpoint (`checkpoint/ckpt_best.pt`) using [SCAF](https://github.com/dimitarpg13/semsimula-scaf)'s standardised probe battery. **Verdict: `CLEAN`**, with every control and probe passing:
| Control / probe | Result |
|---|---|
| `control_determinism` | PASS (0.0 logit) |
| `control_placebo` | PASS (0.0 logit) |
| `control_positive` | PASS (61.56 logit — probe reaches the model) |
| `future_perturbation` | PASS (0.0 logit, bit-exact) |
| `target_relocation` | PASS (-3.8e-06 nats, PPL inflation ~1.0x) |
| Tier-A hidden-state leak probe (Phase 1.5) | PASS (0.0 cosine deviation at every one of 9 sampled layers) |
| Phase-2 ATE (do-future intervention) | 0.0 nats (p=1.0, 10,000 permutations) |
| Phase-3 legacy architectural probe | CLEAN (bit-exact 0.0 `max_dlogit_past` / `mean_dnll_past`) |
| Phase-6 estimation-report cross-check | agrees with reference ATE (0.0), refutations pass |
> **On the raw PPL numbers inside these JSON files:** `target_relocation` and the legacy probe report `standard`/`honest` PPL in the billions (e.g. `detail_ppl_standard: 19,317,229,008`). This is **not** a measurement of the model's real quality — it is a byproduct of scoring a tiny, deliberately adversarial 64-target diagnostic slice with the probe's own scoring convention, and is expected to look nothing like the model's real **10.90 PPL** validation score reported elsewhere on this card. The number that matters here is the **ratio** between the standard and honest variants (0.999996, i.e. effectively 1.0x inflation) and the **paired difference** (-3.8e-06 nats, noise-floor), not either value in isolation.
Tier-B (well-parameter) geometric probes are skipped for this checkpoint (`has_vtheta_wells: false`) — the structured-quadratic SQ3 potential does not expose the Gaussian-mixture `well_parameters()` interface Tier-B needs, a known, expected gap for this \\(V_\theta\\) family rather than an audit failure. Phase-4's register-usage diagnostics (entropy/diversity/creation-gate-strength per layer, verdict `MIXED`) are a **separate, non-leak diagnostic** — SCAF's mediation/diagnostic outputs never affect the `CLEAN`/`LEAK` verdict — included here for completeness rather than as evidence either way.

The middle-left panel (CATE by distance to cut) is the clearest single signal: a real leak produces a spike concentrated near distance zero that decays with distance (the "shared-register leak" profile SCAF's own documentation describes); here the profile is **flat at exactly zero across the entire window**, the expected picture for a genuinely causal model. Full raw output: `scaf_analysis_results/phase1_scaf_audit.json` through `phase6_estimation_report.json` in this repository.
## About the SCAF Library
This audit was produced with [**SCAF**](https://github.com/dimitarpg13/semsimula-scaf) (SemSimula Causal Auditing Framework), a standalone, model-agnostic library that resolves onto a checkpoint by structural (duck) typing — no base class or `Protocol` required. Its **causal audit** (on `main`, used above) detects, sizes, and attributes causal leaks via two complementary probes — `future_perturbation` (bit-exact: is there a leak at all?) and `target_relocation` (how many nats of perplexity were unearned?) — backed by three controls (`determinism`, `placebo`, `positive`) that gate the `CLEAN` verdict, a `mediation` knockout diagnostic for locating a confirmed leak, `scaf.LeakMonitor` for continuous training-time monitoring, and a DoWhy/EconML estimand bridge for exact paired-inference ATEs and CATE-by-distance heterogeneity profiles.
SCAF also has a second, independent audit family — a **stiffness audit** (`scaf.StiffnessProbe`, on the `stiffness_audit` branch, scheduled to merge into `main`) that checks a trained model's *numerical* integration stability rather than its causal structure. It is not applicable to this checkpoint's causal-audit results above, but is directly relevant to this architecture family: see [dimitarpg13/semsimula-fock-parflm-anisogaussian-vtheta-owt-d384-verlet-instability](https://huggingface.co/dimitarpg13/semsimula-fock-parflm-anisogaussian-vtheta-owt-d384-verlet-instability) for a worked example where it identified a structural Störmer–Verlet instability in a sibling (anisotropic-Gaussian) \\(V_\theta\\) family.
## The Fock Paradox: Maximal Compression, Moderate Gap
Across the three SPLM-family architectures tested with structured \\(V_\theta\\), the Fock-PARFLM exhibits a striking paradox: the **flattest \\(V_\theta\\) landscape** yet the **second-largest expressivity gap**.
| Architecture | Structured V_theta PPL | MLP baseline PPL | Gap | Gap (%) | Mean V_theta | Range |
|---|---|---|---|---|---|---|
| [Multi-Xi SPLM (SQ3)](https://huggingface.co/dimitarpg13/semsimula-splm-multixi-structured-vtheta) | 13.33 | 11.51 | 1.82 | 5.5% | 99.8 | 644.9 |
| **Fock-PARFLM v2.1 (SQ3, this model)** | **10.90** | **9.70** | **1.20** | **12.4%** | **0.017** | **16.0** |
| [Multi-Xi PARFLM (SQ3)](https://huggingface.co/dimitarpg13/semsimula-parflm-multixi-structured-vtheta) | 12.27 | 12.10 | 0.17 | 0.6% | 0.02 | 31.4 |
> Both Fock-PARFLM PPL values (structured and MLP) are now leak-free, from re-trained checkpoints with `prefix_causal_registers=True`. The SPLM and PARFLM values were always leak-free (no reverse channel). All cross-architecture comparisons in this table are now valid on a like-for-like (honest PPL) basis.
The landscape compression is monotonic (SPLM > PARFLM > Fock-PARFLM), but the expressivity gap is **non-monotonic**: PARFLM achieves the smallest gap despite a less compressed landscape than Fock-PARFLM. This ranking is unchanged after the leak fix — only the absolute PPL and gap magnitudes moved.
**Why?** Operating close to the dataset's entropy floor (9.70 PPL for the honest MLP baseline), the Fock model is where the marginal value of each nat of \\(V_\theta\\) precision is higher. The Fock register mechanism (creation/destruction operators, stack discipline, reverse channel) creates a more structured dynamical regime where even a near-flat \\(V_\theta\\) must provide fine-grained corrections that the diagonal quadratic parameterisation cannot match. The relationship between landscape compression and expressivity gap is therefore **architecture-dependent**, modulated by proximity to the entropy floor.
The **force** from the structured \\(V_\theta\\) is computed in closed form:
$$f_\theta = -\nabla_h V_\theta = -\sum_{k=1}^{K} q_k(\xi, h) \cdot a_k(\xi) \odot (h - \mu_k(\xi))$$
where \\(q_k\\) are the softmax responsibilities over the 8 quadratic wells. The \\(V_\phi\\) force still uses autograd (sparse, over top-k=8 neighbours only), and the Fock forces use their own differentiable computation.
For full derivations, all four structured variants (SQ1--SQ4), landscape compression analysis, attractor basin decoding, and hyperparameter selection strategies, see the companion note: [`Structured_VTheta_Design_and_Theory.md`](https://github.com/dimitarpg13/semsimula-paper/blob/main/companion_notes/Structured_VTheta_Design_and_Theory.md).
## How to Get Started
```python
import torch, sys
sys.path.insert(0, "multixi")
sys.path.insert(0, "parf")
sys.path.insert(0, "energetic_minima")
sys.path.insert(0, "sarf_mass_variant")
from parf.model_fock_parf_multixi import FockMultiXiPARFLM, FockMultiXiPARFConfig
from parf.model_structured_vtheta import MixtureQuadraticVTheta
from parf.model_structured_vtheta_multixi import StructuredVThetaMultiXiAdapter
# -- Build base model --
config = FockMultiXiPARFConfig(
vocab_size=50257, d=256, L=8,
v_hidden=1024, v_depth=3,
max_len=1024,
fixed_gamma=0.30, xi_channels=4,
xi_alpha_inits=[0.25, 0.5, 0.75, 0.95],
xi_learnable=True, mass_mode="logfreq",
logfreq_path="logfreq_surprisal_tinystories.npy",
v_phi_kind="structural_competitive",
v_phi_phi_hidden=128, v_phi_theta_hidden=128,
top_k=8, score_head_hidden=32,
gumbel_tau_init=1.0, gumbel_tau_min=0.3,
gumbel_noise=True,
use_gathered_v_phi=True,
use_layer_checkpoint=True,
ln_before_distance=True,
per_layer_v_phi_scale=True,
fock_version="v2",
n_registers=16, d_k=64,
tau_create_init=8.0,
register_salience_decay=0.5,
register_salience_threshold=0.01,
stack_discipline=True,
reverse_channel=True,
per_register_tau=True,
per_register_keys=True,
ortho_register_init=True,
prefix_causal_registers=True, # leak fix — must be True to reproduce this checkpoint
)
model = FockMultiXiPARFLM(config)
# -- Swap in structured V_theta --
K_xi, d = 4, 256
inner = MixtureQuadraticVTheta(d=d, K=8, tau=1.0, xi_d=K_xi * d)
model.V_theta = StructuredVThetaMultiXiAdapter(inner, K=K_xi, d=d)
# -- Load checkpoint --
from huggingface_hub import hf_hub_download
ckpt_path = hf_hub_download(
repo_id="dimitarpg13/semsimula-fock-parflm-structured-vtheta",
filename="checkpoint/ckpt_best.pt",
)
state = torch.load(ckpt_path, map_location="cpu")
model.load_state_dict(state["model_state_dict"])
model.eval()
print(f"Parameters: {sum(p.numel() for p in model.parameters()):,}")
# -- Read attractor centres directly --
x = torch.randint(0, 50257, (1, 64))
with torch.no_grad():
h = model._embed(x)
xis = model._compute_xis(h) # (1, 64, 4, 256)
centres = model.V_theta.attractor_centres(xis) # (1, 64, 8, 1024)
print(f"Attractor centres shape: {centres.shape}") # 8 basins per token
```
### Available Artifacts
| File | Description |
|---|---|
| `checkpoint/ckpt_best.pt` | Best checkpoint, leak-fixed (A2 arm, `prefix_causal_registers=True`, 10.90 PPL at step 14,400) |
| `causal_leak_fix_verification.md` | Paired leaky-vs-fixed rerun: bit-exact future-perturbation probe, honest-vs-standard PPL, parameter-count correction |
| `scaf_analysis_results/phase1_scaf_audit.json` | Formal SCAF Phase-1 audit: verdict, controls, `future_perturbation`/`target_relocation` probes |
| `scaf_analysis_results/phase1_5_geometric_probes.json` | Tier-A hidden-state leak probe (per-layer cosine deviation) |
| `scaf_analysis_results/phase2_ate_result.json`, `phase2_leak_frame.csv` | Phase-2 do-future ATE estimate and the underlying per-position leak frame |
| `scaf_analysis_results/phase2_5_geometric_leak_frame.csv` | Geometric-distance leak frame (Tier-A companion dataset) |
| `scaf_analysis_results/phase3_legacy_probe.json` | Legacy architectural causal probe (bit-exact `max_dlogit_past`/`mean_dnll_past`) |
| `scaf_analysis_results/phase4_register_diagnostics.json` | Per-layer register entropy/diversity/creation-gate diagnostics (not part of the leak verdict) |
| `scaf_analysis_results/phase5_ate_bar.png`, `phase5_dashboard.png` | SCAF scorecard dashboard and ATE bar chart (see [SCAF Causal-Leak Audit](#scaf-causal-leak-audit-formal)) |
| `scaf_analysis_results/phase6_cate_by_distance.png`, `phase6_estimation_report.json` | CATE-by-distance-to-cut profile and DoWhy/EconML estimation cross-check |
| `training_log.jsonl` | Per-step training metrics (40 eval points), including `causal_probe` and `trained_leak_probe` events |
| `training_curve_A2.png` | Training/validation loss curves |
| `v_theta_hist_A2.png` | V_theta output distribution histogram |
| `landscape_stats_A2.json` | V_theta landscape statistics (mean, std, range), recomputed on the leak-fixed checkpoint |
| `model_structured_vtheta.py` | Structured V_theta classes (SQ1--SQ4) |
| `model_structured_vtheta_multixi.py` | Multi-Xi adapter |
| `config.json` | Model configuration |
## Training Details
### Training Data
[TinyStories](https://huggingface.co/datasets/roneneldan/TinyStories) --- a synthetic corpus of short children's stories generated by GPT-3.5/4, tokenized with GPT-2 BPE (vocab size 50,257). Training cap: 5M tokens; validation: ~140k tokens.
### Training Procedure
The base model architecture is identical to the [Fock-PARFLM v2.1](https://huggingface.co/dimitarpg13/semsimula-fock-parflm). The only modification is the \\(V_\theta\\) replacement: the 3-layer MLP is swapped for the SQ3 mixture at model construction time, before training begins from scratch. The pairwise \\(V_\phi\\) (competitive structural MLP, hidden=128, top-k=8) and Fock register pool (16 registers, LIFO, reverse channel) are unchanged.
| Hyperparameter | Value |
|---|---|
| Optimizer | AdamW |
| Learning rate | 5e-4 (cosine decay) |
| Warmup steps | 400 |
| Weight decay | 0.01 |
| Gradient clipping | 1.0 |
| Batch size | 16 |
| Block size | 512 |
| Training steps | 16,000 |
| lambda_V (V_theta regularisation) | 0.01 |
| Hardware | NVIDIA A100 40GB (Google Colab) |
### Training Script
[`notebooks/conservative_arch/scaleup/colab_fock_multixi_structured_vtheta.ipynb`](https://github.com/dimitarpg13/semsimula-paper/blob/main/notebooks/conservative_arch/scaleup/colab_fock_multixi_structured_vtheta.ipynb) --- Colab notebook with structured V_theta arms, GDrive output, checkpointing, and live progress display.
## Evaluation Results
### TinyStories Validation Perplexity
| Model | PPL | Params | Analytical V_theta grad | V_theta--MLP gap | Causal leak |
|---|---|---|---|---|---|
| Matched Attention (baseline) | **7.81** | 19.5M | --- | --- | No |
| [Fock-PARFLM v2.1 (MLP)](https://huggingface.co/dimitarpg13/semsimula-fock-parflm) | **9.70** | 17.4M | No | --- | Fixed & verified |
| **Fock-PARFLM v2.1 (SQ3, this model)** | **10.90** | 18.2M | **Yes** | **1.20 PPL** | Fixed & verified |
| [Multi-Xi SPLM (MLP)](https://huggingface.co/dimitarpg13/semsimula-splm-multixi) | **11.51** | 16.5M | No | --- | No |
| [Multi-Xi PARFLM (MLP)](https://huggingface.co/dimitarpg13/semsimula-parflm-multixi) | **12.06** | 17.6M | No | --- | No |
| [Multi-Xi PARFLM (SQ3)](https://huggingface.co/dimitarpg13/semsimula-parflm-multixi-structured-vtheta) | **12.27** | 17.3M | Yes | 0.17 PPL | No |
| [Multi-Xi SPLM (SQ3)](https://huggingface.co/dimitarpg13/semsimula-splm-multixi-structured-vtheta) | **13.33** | 17.3M | Yes | 1.82 PPL | No |
> Both Fock-PARFLM models (MLP and SQ3) were re-trained with `prefix_causal_registers=True` and independently certified leak-free (bit-exact 0.0 future-perturbation sensitivity). All PPL values in this table are now on a like-for-like, honest basis. Fock-PARFLM (SQ3) still beats both Multi-Xi models, but its edge over the honest MLP-\\(V_\theta\\) Fock sibling (9.70) is now a 1.20 PPL gap rather than the 1.06 PPL gap reported under the leaky architecture.
### V_theta Landscape Statistics
| Metric | This model (Fock-PARFLM) | PARFLM structured V_theta | SPLM structured V_theta |
|---|---|---|---|
| Mean V_theta | 0.017 | 0.02 | 99.8 |
| Std V_theta | 0.42 | 0.51 | 26.3 |
| Range | 16.0 | 31.4 | 644.9 |
*Recomputed on the leak-fixed checkpoint (previously: mean 0.008, std 0.26, range 19.1 on the leaky checkpoint). Both runs show the same near-flat landscape; exact values differ because the fixed run is an independently-trained model with different weights.*
### Learned Xi-Channel Decay Rates
The final learned alpha values \\([\alpha_1, \ldots, \alpha_4] = [0.14, 0.56, 0.79, 0.95]\\) are stable and consistent with the SPLM \\([0.12, 0.59, 0.84, 0.97]\\) and PARFLM \\([0.11, 0.55, 0.81, 0.97]\\) values, confirming that the causal EMA context structure is invariant to the \\(V_\theta\\) parameterisation, the presence of \\(V_\phi\\), and the Fock dynamics.
## SPLM Family Overview
This model is part of the **Semantic Simulation SPLM family**:
| Model | Design | Corpus | PPL | HuggingFace |
|---|---|---|---|---|
| Multi-Xi SPLM (MLP) | Pure scalar potential | TinyStories | 11.51 | [semsimula-splm-multixi](https://huggingface.co/dimitarpg13/semsimula-splm-multixi) |
| Multi-Xi SPLM (SQ3) | Structured scalar potential | TinyStories | 13.33 | [semsimula-splm-multixi-structured-vtheta](https://huggingface.co/dimitarpg13/semsimula-splm-multixi-structured-vtheta) |
| Multi-Xi PARFLM (MLP) | Scalar + pairwise forces | TinyStories | 12.06 | [semsimula-parflm-multixi](https://huggingface.co/dimitarpg13/semsimula-parflm-multixi) |
| Multi-Xi PARFLM (SQ3) | Structured scalar + pairwise | TinyStories | 12.27 | [semsimula-parflm-multixi-structured-vtheta](https://huggingface.co/dimitarpg13/semsimula-parflm-multixi-structured-vtheta) |
| Fock-PARFLM v2.1 (MLP) | PARFLM + Fock registers | TinyStories | 9.70 | [semsimula-fock-parflm](https://huggingface.co/dimitarpg13/semsimula-fock-parflm) |
| **Fock-PARFLM v2.1 (SQ3)** | **Structured + pairwise + Fock** | **TinyStories** | **10.90** | **this model** |
| Fock-PARFLM v2.1 (depth-cond. isotropic Gaussian) | Bounded multi-context + pairwise + Fock | TinyStories | 16.33 | [semsimula-fock-parflm-depthcond-vtheta](https://huggingface.co/dimitarpg13/semsimula-fock-parflm-depthcond-vtheta) |
| Fock-PARFLM v2.1 (depth-cond. anisotropic Gaussian + fock-reg) | Bounded, ellipsoidal multi-context + pairwise + Fock | TinyStories | 9.04 | [semsimula-fock-parflm-anisogaussian-vtheta](https://huggingface.co/dimitarpg13/semsimula-fock-parflm-anisogaussian-vtheta) |
| Fock-PARFLM v2.1 (aniso-Gaussian + fock-reg, first-order/Fock-G1) | Same as above, gradient-flow integrator | TinyStories | 8.95 | [semsimula-fock-parflm-anisogaussian-vtheta-fock-g1](https://huggingface.co/dimitarpg13/semsimula-fock-parflm-anisogaussian-vtheta-fock-g1) |
| Fock Attention (MLP V_theta) | Fock + attention | TinyStories | 9.42 | [semsimula-fock-attention](https://huggingface.co/dimitarpg13/semsimula-fock-attention) |
| Hybrid SPLM+Attn | Attention + SPLM refinement | TinyStories | 8.50 | [semsimula-hybrid-splm](https://huggingface.co/dimitarpg13/semsimula-hybrid-splm) |
| Fock-PARFLM v2.1 (aniso-Gaussian + fock-reg, gamma sweep, d=384) | Bounded, ellipsoidal multi-context + pairwise + Fock — 8-way gamma sweep + geodesic analysis | OpenWebText | 278.27 (best of 8, 3K-step sweep) | [semsimula-fock-parflm-anisogaussian-vtheta-owt-d384-gammasweep](https://huggingface.co/dimitarpg13/semsimula-fock-parflm-anisogaussian-vtheta-owt-d384-gammasweep) |
| Fock-PARFLM v2.1 (aniso-Gaussian + fock-reg, gamma sweep, d=768) | Bounded, ellipsoidal multi-context + pairwise + Fock — 8-way gamma sweep + geodesic analysis | OpenWebText | 326.97 (best of 8, 3K-step sweep) | [semsimula-fock-parflm-anisogaussian-vtheta-owt-d768-gammasweep](https://huggingface.co/dimitarpg13/semsimula-fock-parflm-anisogaussian-vtheta-owt-d768-gammasweep) |
| Fock-PARFLM v2.1 (aniso-Gaussian + fock-reg, gamma sweep, d=1024) | Bounded, ellipsoidal multi-context + pairwise + Fock — 8-way gamma sweep + geodesic analysis | OpenWebText | 244.23 (best of 8, 3K-step sweep) | [semsimula-fock-parflm-anisogaussian-vtheta-owt-d1024-gammasweep](https://huggingface.co/dimitarpg13/semsimula-fock-parflm-anisogaussian-vtheta-owt-d1024-gammasweep) |
| Fock-PARFLM v2.1 (aniso-Gaussian + fock-reg, Verlet instability, d=384) | Same architecture, two full-run attempts — SCAF stiffness audit identifies structural Verlet instability | OpenWebText | 184.11 / 211.63 (both runs stalled, not final) | [semsimula-fock-parflm-anisogaussian-vtheta-owt-d384-verlet-instability](https://huggingface.co/dimitarpg13/semsimula-fock-parflm-anisogaussian-vtheta-owt-d384-verlet-instability) |
**Collection:** [Semantic Simulation SPLM Model Family](https://huggingface.co/collections/dimitarpg13/semantic-simulation-splm-model-family)
## Bias, Risks, and Limitations
- **Research checkpoint only.** This model is a proof-of-concept for structured scalar potentials in Fock-augmented architectures, not a production system.
- **TinyStories only.** Trained exclusively on synthetic children's stories (~5M tokens). Not suitable for general-purpose language generation.
- **English only.** No multilingual capability.
- **Small scale.** 18.2M parameters, 256-dim hidden states.
- **No safety training.** No RLHF, DPO, or safety filtering has been applied.
- **V_phi and Fock forces still use autograd.** Only the \\(V_\theta\\) gradient is analytical; the \\(V_\phi\\) pairwise force and Fock register forces still require `torch.autograd.grad`. The overall training speedup is therefore partial (\\(V_\phi\\) and Fock forces dominate the cost).
- **Moderate expressivity gap.** The 1.20 PPL gap (12.4% excess CE) is larger than the PARFLM structured V_theta gap (0.17 PPL), reflecting the higher precision demands of the Fock architecture near the dataset's entropy floor.
- **Causal leak in the reverse channel — resolved.** The Fock reverse channel previously introduced a causal leak by blending each token's content into a global register state shared across all sequence positions within the same integration step. On the OpenWebText-scale variant of the same architecture, a causal probe measured +3.51 nats of NLL inflation (~33× PPL factor) from this pathway. **This checkpoint was re-trained with the architectural fix (`prefix_causal_registers=True`)** and certified leak-free via a bit-exact (0.0, float64) future-perturbation probe and honest-vs-standard PPL agreement within noise. The fix cost a modest **+0.54 PPL** relative to a like-for-like leaky rerun (10.36 → 10.90). See the [full audit](https://github.com/dimitarpg13/semsimula-paper/blob/main/companion_notes/Fock-PARFLM_Causal_Leak_Audit_Results.md), this repo's [`causal_leak_fix_verification.md`](causal_leak_fix_verification.md), and the formal [SCAF Causal-Leak Audit](#scaf-causal-leak-audit-formal) section above (verdict `CLEAN`, all controls and probes passing).
## Citation
```bibtex
@misc{Gueorguiev2026SemSim,
author = {Gueorguiev, Dimitar P.},
title = {Semantic Simulation: A Prescriptive Lagrangian Framework
for Efficient Semantic Inference --- A Conservative-by-
Construction Language Model and the Shared-Potential
Separator, with a Correspondence to Joint Embedding
Predictive Architectures},
year = {2026},
publisher = {Zenodo},
doi = {10.5281/zenodo.19712427},
url = {https://doi.org/10.5281/zenodo.19712427},
note = {Version v15 (Jun 7, 2026).
Companion code repository (DOI 10.5281/zenodo.20579561):
\url{https://github.com/dimitarpg13/semsimula-paper}}
}
```
## Environmental Impact
- **Hardware:** NVIDIA A100 40GB (Google Colab)
- **Training time:** ≈3 hours for the original leaky run (16,000 steps, A2 arm). The re-trained, leak-fixed checkpoint on this page took noticeably longer — checkpoint timestamps for the final segment (steps 14,400→16,000) imply ≈4.7s/step, i.e. a full run on the order of ≈20 hours, a larger relative slowdown than the ≈3× seen on the MLP-\\(V_\theta\\) sibling (per-position register bookkeeping is a bigger fraction of a lighter, analytical-gradient step).
- **Carbon footprint:** Estimated less than 10 kg CO2 for the leak-fixed rerun (was <2 kg CO2 for the original leaky run).
> **Correction (2026-09-27) — integrator name.** This model's layer step was described here as a *damped Euler* step. It is not. The update is
> `h_new = h + (h - h_prev)/(1 + dt*gamma) + dt^2*f/(m*(1 + dt*gamma))`, which carries no velocity state at all: the velocity is the position difference `h - h_prev`. Undamped this is `h_{n+1} = 2*h_n - h_{n-1} + dt^2*f/m`, i.e. **Störmer–Verlet in position form**. It is also not *velocity*-Verlet, which carries an explicit velocity through half-kick/drift/half-kick.
> The distinction matters because the \\(\omega \cdot dt < 2\\) stability wall is the Störmer/leapfrog bound and applies to this lineage; the semi-implicit Euler models in the same collection were never subject to it. Only the name was wrong — no measurement on this card changes.
> **Correction (2026-09-28) — this model is NOT purely conservative.** Its `config.json` sets `use_reverse_channel: true`, and the reverse channel — the register-to-token path — is not the gradient of anything in \\(h\\). Later measurement on this architecture puts the deflection of the layer step from the damped \\(V_\theta\\) geodesic at **1.09 with the reverse channel on and 0.0003 with it off**, i.e. the non-gradient term carries most of the step. The conservative-by-construction claim, and the Riemannian capabilities that were derived from it, hold for the **conservative sector** \\(V_\theta + V_\varphi\\) and for siblings trained without the reverse channel — not for this checkpoint as shipped. Measurements on this card are unaffected; only the framing was wrong.