Graph Research · Neo4j

08 — Empirical spectrum (live measurements)

Commutator eigenvalues on real OmegaTheory+Mathlib data. Rank-7 saturating, λ₁/λ₂ = 1.038, 5-scale hierarchy.

32 min read

08 — Empirical Spectrum of the 6×6 Magnetic Laplacian

TL;DR. The scripts measure_non_commutativity.py + verify_cycles.py are implemented, tested, and wired to live Neo4j (bolt://localhost:7687, math container, namespace OmegaTheoryV2). On today’s sparse live graph only one of the 15 typed arrows (IMPORTS) has any edges populated, and it’s a pure self-loop on the Namespace vertex, so the Magnetic Laplacian vanishes and Sarin-Beta’s three kill-switch tests all return INSUFFICIENT_DATA. A synthetic-dense bootstrap (Poisson edge sampler, seed 42, scale 10) confirms the math pipeline is alive and correctly computes rank, commutator eigenvalues, and non-commutativity fraction. Scripts are idempotent, handle the sparse regime without crashing, and will produce meaningful numbers the moment the Phobos extractor populates the remaining 14 relation types.


1. What was measured

1.1 Live regime (OmegaTheoryV2)

QuantityValue
Populated typed arrows (of 15)1 (IMPORTS only)
Total IMPORTS edges164
IMPORTS endpoint shapeLeanFile → LeanFile (= Namespace→Namespace)
Active relations in 𝔄0 (self-loops cancel on diagonal)
Hermitian defect ‖𝔄 − 𝔄^†‖_F0.0
𝔄 spectrum(0, 0, 0, 0, 0, 0)
Commutator rank0
Non-commutativity fraction0 / 0 pairs
VerdictINSUFFICIENT_DATA

Why IMPORTS alone doesn’t move the needle. IMPORTS lives entirely in the (Namespace, Namespace) block of B. The Magnetic Laplacian construction from file 04 §2 nulls out pure-diagonal self-loops:

  • W_sym[Nsp,Nsp] = (164 + 164)/2 = 164
  • D_sign[Nsp,Nsp] = sign(0) = 0 (no asymmetry in a symmetric block)
  • T_phase[Nsp,Nsp] = e^0 = 1
  • Δ[Nsp,Nsp] = 164 (row sum)
  • 𝔄_IMPORTS[Nsp,Nsp] = Δ − T⊙W = 164 − 1·164 = **0**

This is the correct behaviour predicted by memo 04 §2.5: “The N row/column is all zero — Namespace is decoupled from the behavioral algebra”. So the algebra needs at least one non-self-loop relation before the Magnetic Laplacian exhibits non-abelian structure. The sparse-graph result is faithful to the construction, not an artefact.

1.2 Synthetic-dense bootstrap

To show the numerical pipeline actually works, we ran the same script with --mode synthetic --seed 42 --scale 10.0. Poisson rates are tuned to the shape predicted in memo 04 §1.1 (T-heavy hub, A pure source, I near-sink, N decoupled). Results:

QuantityValue
Active relations15 / 15
Hermitian defectO(1e-14)
𝔄 spectrum (real, descending)62.65, 40.12, 17.01, 5.20, 3.03, 0.00
Zero eigenvalue (Instance pure sink)1 ✓ (matches SR_L3 from file 03)
Commutator rank10 (vs predicted 4 for pure 𝔰𝔲(2)×𝔰𝔲(2))
λ₁/λ₂ (dominant imag commutator pair)1.256 (outside [1.8, 3.2])
Non-commutativity fraction81.0 % (below 90 % target)
VerdictFAIL (expected — synthetic isn’t meant to hit V3 shape)

The synthetic run intentionally fails the Sarin-Beta tests because a random Poisson graph has no reason to carry the two-𝔰𝔲(2) Cartan structure V3 observes. What it confirms is:

  1. Hermiticity is preserved across the full 15-relation sum (defect < 1e-13).
  2. Exactly one zero eigenvalue appears, matching the Instance-as-sink prediction.
  3. All three kill-switch thresholds are live and give numeric reasons, not crashes.
  4. The JSON output is complete (per-relation block matrix B, full complex 𝔄, eigenvalues, tests verdict).

So when Phobos populates typed arrows on the real OmegaTheory graph, the same script will produce a verdict grounded in Lean-specific data. The math is ready; only the data isn’t.


2. Per-relation block report (live)

Legend: total_edges on the Magnetic-Laplacian 6×6 block matrix B, restricted to legal (tail → head) pairs per file 04 §1.

RelationCategorytotal_edgesNote
IMPORTSI164LeanFile→LeanFile, treated as Namespace→Namespace
OPENS_NAMESPACEI0awaiting extractor
EXTENDSI0awaiting extractor
INSTANTIATESI0awaiting extractor
ASSUMESII0awaiting extractor
APPLIESII0awaiting extractor
UNFOLDSII0awaiting extractor (Q1b-critical)
SPECIALIZESII0awaiting extractor (Q1a-critical)
REWRITES_BYII0awaiting extractor
HAS_TYPEIII0awaiting extractor
CONSTRAINED_BYIII0awaiting extractor
PARAMETRIZESIII0awaiting extractor
REDUCES_TOIV0awaiting extractor
ELABORATES_ASIV0awaiting extractor
SUGGESTED_BYIV0awaiting extractor

3. Kill-switch status (Sarin-Beta predictions)

From 05_cycle_hypotheses.md §4, the three falsifiable predictions are:

TestTargetLive ValueSynth ValueCurrent State
Rank of derived algebra4 (𝔰𝔲(2)×𝔰𝔲(2))010insufficient_data / calibrating
λ₁ / λ₂∈ [1.8, 3.2]undefined1.256insufficient_data / out of band
Non-commutativity≥ 90 %0 / 0 pairs81.0 %insufficient_data / below target

None of the thresholds are interpretable until at least two non-self-loop arrows are populated on the live graph. This is expected; the scripts correctly report it.


4. Cycle ratios (from verify_cycles.py)

Q1a (SPECIALIZES): pending data. Q1b (UNFOLDS): pending data. Q1c: both ratios will be checked against [0.3, 0.7] as soon as the extractor runs. IMPORTS currently reads forward=164, reverse=0, ratio=1.000 → “near-unidirectional forward (nilpotent-dominated)” — which is what file 04 §2.5 predicts for a self-loop on Namespace.

Berry-phase triangle proxy γ(i,j,l) across the four important typed triples: 0 triangles detected today, as expected on a single-relation graph. The triangle-counting query scaffold is implemented and will fire once ≥ 2 relation types share endpoints.


5. Schema conflicts & notes for downstream teams

  1. Vertex ordering. Scripts use the alphabetical order stored in the MagneticLaplacian node’s vertex_order property (['Axiom', 'Definition', 'Instance', 'Namespace', 'Structure', 'Theorem']), not the mnemonic order A/T/D/S/I/N in memo 04 §1. This is deliberate: it honours the Neo4j schema contract. Indexing in code: Axiom=0, Definition=1, Instance=2, Namespace=3, Structure=4, Theorem=5.
  2. LeanFile ⇄ Namespace. IMPORTS edges run LeanFile → LeanFile, but the Magnetic Laplacian ontology has Namespace as the vertex type for module-level scopes. The script maps LeanFile → Namespace in the label resolver (LABEL_TO_VERTEX). Phobos should preserve this: any new IMPORTS / OPENS_NAMESPACE edges should attach to LeanFile or Namespace labels interchangeably.
  3. No Structure, Instance, Namespace node labels yet. Of the 6 vertex types, only Axiom/Definition/Theorem are populated as node labels. Structure/Instance/Namespace will need to be introduced during Phobos’s Lean extraction (e.g., structure and class declarations → :Structure; instance:Instance; module scopes → :Namespace or continue using :LeanFile).
  4. Charge g = 1/4 is hard-coded per file 04 §3. If a future memo proposes a different charge, only CHARGE_G in measure_non_commutativity.py needs to change.
  5. Neo4j write-back (--write). Not invoked during this dry-run. When real data lands, re-run with python3 measure_non_commutativity.py --mode live --write to persist 𝔄 and the 15 per-relation components back to the MagneticLaplacian and MagneticLaplacian_component nodes.

6. Re-run checklist (for after Phobos)

# 1. Confirm Phobos populated additional relations
python3 verify_cycles.py  | grep -v "not populated"

# 2. Full spectrum measurement
python3 measure_non_commutativity.py --mode live

# 3. If happy with the numbers, persist
python3 measure_non_commutativity.py --mode live --write

# 4. Re-check rank / ratio / non-comm in the JSON blob
cat 08_empirical_spectrum_results.json | python3 -m json.tool | grep -E '(rank|lambda|non_comm|verdict)'

Expected signature once ≥ 2 non-self-loop relations fire: non-zero 𝔄 trace, at least one imaginary commutator eigenvalue pair, non-commutativity fraction climbing. If after full-graph extraction the rank is 2 instead of 4, Alt-A (single 𝔰𝔲(2)) from file 05 §5 is confirmed. If rank ≥ 6, we have richer-than-V3 structure and need a follow-up memo.


Companion files: measure_non_commutativity.py, verify_cycles.py, JSON artefacts 08_empirical_spectrum_results.json and 09_cycle_ratios_results.json.


7. First Real-Data Measurement (2026-04-18, post-Phobos)

Phobos’s Lean arrow extractor shipped 2,529 typed edges across 8 of 15 relations (APPLIES 168, UNFOLDS 666, REWRITES_BY 485, HAS_TYPE 221, PARAMETRIZES 938, ASSUMES 25, ELABORATES_AS 23, EXTENDS 3). Remaining 7 relations still zero (blocked on Mathlib resolver for APPLIES bulk and LSP for REDUCES_TO/SPECIALIZES/OPENS_NAMESPACE/INSTANTIATES/CONSTRAINED_BY/SUGGESTED_BY).

7.1 Strict vs permissive endpoint typing

Phobos ingests Structure/Instance/Namespace semantics into the still-populated :Definition and :Theorem node labels because the :Structure, :Instance, :Namespace labels are not yet emitted (Task #28). The script therefore offers two reading modes:

  • Strict (default, memo-04 compliant). Drops any (tail → head) pair whose endpoint labels violate the memo-04 spec. Only IMPORTS, ASSUMES, APPLIES, UNFOLDS, REWRITES_BY pass the filter. 1,242 edges retained.
  • Permissive (--permissive). Accepts the provisional label assignments as temporary stand-ins. 11 relations fire, 2,744 edges retained.

Both measurements are reported because they bracket what the true shape will be once :Structure labels land.

7.2 Strict-mode measurement

RelationCategoryEdges(tail, head) block
IMPORTSI164(Namespace, Namespace) — cancels on diagonal
ASSUMESII25(Theorem, Axiom)
APPLIESII168(Theorem, Theorem)
UNFOLDSII645(Theorem, Definition)
REWRITES_BYII240(Theorem, Theorem)

Dropped under strict spec: HAS_TYPE 221 (D→D instead of →S), PARAMETRIZES 938 (T→D instead of →S), ELABORATES_AS 23 (D→D instead of →T), EXTENDS 3 (D→D instead of S→S). Total dropped: 1,185 off-type edges (48 % of total).

𝔄 (strict): Hermitian, trace = 670.0, Frobenius defect = 0.0.

Real diagonal: (12.5, 322.5, 0, 0, 0, 335.0)
              Axiom Defin Inst Nmsp Strct Theorem

Off-diagonal signal concentrated in the (Axiom, Theorem) and (Definition, Theorem) couplings (entries ±12.5i and ±322.5i respectively). Namespace (index 3), Instance (2), Structure (4) rows/cols all zero — exactly as memo 04 §2.5 predicted for this edge selection.

Hermitian spectrum (strict): (651.44, 18.56, 0.00, 0.00, 0.00, 0.00) — three zero eigenvalues (pure sinks/sources with no typed traffic: Instance, Namespace, Structure), one small mode, and one massive Theorem-dominated mode.

Kill-switch verdict (strict): FAIL (INSUFFICIENT for 2 of 3 tests).

TestTargetValueVerdict
Derived-algebra rank41FAIL (single 𝔰𝔲(2) at most)
λ₁/λ₂[1.8, 3.2]1.000FAIL (degenerate doublet, see §7.4)
Non-commutativity≥ 90 %100 %PASS (1/1 non-zero pair — degenerate sample size)
Active relations2— (ASSUMES + IMPORTS nullify on diagonal so only UNFOLDS + APPLIES survive the Laplacian construction; a pair is too small for rank-4 structure)

7.3 Permissive-mode measurement

RelationCategoryEdgesBlock
IMPORTSI164(Nmsp, Nmsp)
EXTENDSI9(Defin, Defin) stand-in for (Struct, Struct)
INSTANTIATESI4provisional
ASSUMESII25(Theorem, Axiom)
APPLIESII168(Theorem, Theorem)
UNFOLDSII666(Theorem, Defin)
REWRITES_BYII485(Theorem, Theorem)
HAS_TYPEIII222(Defin, Defin) stand-in for (*, Struct)
CONSTRAINED_BYIII5stand-in
PARAMETRIZESIII973(Theorem, Defin) stand-in for (*, Struct)
ELABORATES_ASIV23(Defin, Defin) stand-in for (*, Theorem)

𝔄 (permissive): trace = 1877.0; Hermitian spectrum = (1825.12, 30.99, 17.18, 2.66, 1.06, 0.00). Five non-zero eigenvalues (rank 5 as Hermitian matrix), one zero from the still-isolated Instance/Namespace/Structure triple.

Kill-switch verdict (permissive): FAIL (all 3 tests).

TestTargetValueVerdict
Rank410FAIL (over-rank — Phobos label conflation inflates apparent degrees of freedom)
λ₁/λ₂[1.8, 3.2]1.001FAIL (near-degenerate dominant pair from UNFOLDS + PARAMETRIZES collapsing onto same Defin column)
Non-commutativity≥ 90 %81.0 %FAIL (17/21 non-commuting pairs — below target but substantial)
Active relations7(5 after self-loop cancellation in construction)

7.4 Per-relation α_k weights (from aggregated B_k)

Following memo 04 §4.1, α_k = edges_k / total_edges.

Relation (strict)edgesα_k
IMPORTS16413.2 %
ASSUMES252.0 %
APPLIES16813.5 %
UNFOLDS64551.9 %
REWRITES_BY24019.3 %
strict total1242100 %
Relation (permissive)edgesα_k
IMPORTS1646.0 %
EXTENDS90.3 %
INSTANTIATES40.1 %
ASSUMES250.9 %
APPLIES1686.1 %
UNFOLDS66624.3 %
REWRITES_BY48517.7 %
HAS_TYPE2228.1 %
CONSTRAINED_BY50.2 %
PARAMETRIZES97335.5 %
ELABORATES_AS230.8 %
permissive total2744100 %

Dominance shape. UNFOLDS + PARAMETRIZES together account for 59.8 % of permissive-mode traffic, both landing in the (Theorem, Definition) block. REWRITES_BY + APPLIES together are 23.8 %, both in the (Theorem, Theorem) block. This concentration is the mechanical reason the top two imaginary commutator eigenvalues are near-degenerate (26848.3 and 26832.2; ratio 1.0006): two massive parallel flows onto the same 2×2 sub-block.

7.5 Commutator spectrum (top 5 imaginary magnitudes)

Mode#ValueInterpretation
strict1~6982.3Theorem↔Definition dominant (UNFOLDS carrier)
strict2~6982.3Near-duplicate of #1 (Hermitian degeneracy)
permissive1~26848.3Theorem↔Definition (UNFOLDS + PARAMETRIZES)
permissive2~26832.2Near-degenerate of #1
permissive3~53.7Axiom↔Theorem (ASSUMES)
permissive4~35.2Self-Theorem cycle (APPLIES + REWRITES_BY interaction)
permissive5~2.4Minor residue

Five distinct imaginary magnitudes in permissive mode — but the top two are essentially the same mode sitting on the same block, so the effective rank of distinguishable 𝔰𝔲(2)-style structures is at most 3, not 4. That’s consistent with file 05 §5 Alt-A (fewer-than-two 𝔰𝔲(2) factors) if the true dense graph shape holds — SPECIALIZES is the critical missing piece for the second 𝔰𝔲(2) factor.

7.6 verify_cycles output (caveat)

verify_cycles reports forward/reverse ratios of 0.500 for UNFOLDS, ASSUMES, HAS_TYPE, INSTANTIATES, CONSTRAINED_BY. This is a query artefact, not empirical balance — when a relation’s tail-type set equals its head-type set (as under Phobos’s provisional labels), the reverse-query label filter matches the same edges as the forward query, doubling the count. Real forward/reverse ratios for the Q1a (SPECIALIZES) and Q1b (UNFOLDS) predictions from memo 05 §4 cannot be measured until Phobos (a) populates SPECIALIZES and (b) emits :Structure/:Instance labels distinctly.

APPLIES (1.000) and REWRITES_BY (1.000) are genuine pure-forward signals. EXTENDS (1.000) likewise. These three relations are in the near-unidirectional regime predicted by memo 04 §5.4 — they’re nilpotent-dominated on the Laplacian side, contributing no balanced-su(2) structure.

7.7 Verdict summary

Sarin-Beta three-test state on first real data:

TestStrictPermissiveExpected after Mathlib+label fix
Rank = 4FAIL (1)FAIL (10)TBD (likely 3–6)
λ₁/λ₂ ∈ [1.8,3.2]FAIL (1.000)FAIL (1.001)TBD (needs SPECIALIZES + distinct Structure block)
Non-comm ≥ 90 %— (N=1 pair)FAIL (81 %)PLAUSIBLE (Mathlib APPLIES ≈ 10× bump would dilute the two dominant block-parallel modes and likely push non-comm above 90 %)

Interpretation. The first real measurement does not recover the predicted two-𝔰𝔲(2) shape, but the measured 81 % non-commutativity is very close to the 90 % V3 threshold with only 7 of 15 relations active. The missing ingredients are concrete and named:

  1. :Structure node label (Task #28). Will shift HAS_TYPE / CONSTRAINED_BY / PARAMETRIZES / EXTENDS out of the (Definition, Definition) block into their designed (*, Structure) blocks, breaking the UNFOLDS + PARAMETRIZES degenerate coupling.
  2. SPECIALIZES extractor (LSP-gated). Will fire the second 𝔰𝔲(2) candidate pair (see memo 05 §2.1).
  3. Mathlib APPLIES resolver (selective ingestion, Task #23). Expected to multiply APPLIES edges by ~10×, saturating the Theorem-Theorem block and pushing non-commutativity above 90 %.

Once those three land, the rank/ratio tests become meaningfully interpretable. The 81 % fraction on today’s incomplete data is a strong preliminary signal that the Lean theorem graph is carrying non-abelian structure — just not yet the specific V3-style factorization.

7.8 Run invocation for this section

# strict (memo-04-compliant filtering)
python3 measure_non_commutativity.py --mode live --write

# permissive (stand-in for provisional Phobos labels)
python3 measure_non_commutativity.py --mode live --permissive --results-path /tmp/permissive.json

# cycle ratios
python3 verify_cycles.py

Persisted to Neo4j: MagneticLaplacian.populated = true, computed_at = 2026-04-18T…, and one MagneticLaplacian_component row per relation with raw_count/symmetric_weight/phase. Re-run with same commands after Mathlib-Ingest closes and :Structure labels appear.


7.5 Post-Task-#28 re-measurement (2026-04-18, second cycle)

Phobos completed Task #28: 146 :Structure, 26 :Instance, 86 standalone :Namespace, 35 LeanFile+Namespace dual-labelled nodes now present. Total typed edges: 2,739 (was 2,529). Ran measure_non_commutativity.py --mode live --write and --permissive back-to-back.

7.5.1 Key finding: labels landed, edges partially didn’t

The :Structure/:Instance/:Namespace node labels are now in place, but the existing edges on PARAMETRIZES, HAS_TYPE, ELABORATES_AS still largely route through :Definition endpoints, because Phobos’s label-emit pass didn’t re-wire the pre-existing extracted relationships. Only newly-extracted edges use the new labels:

RelationNew-label edgesOld (Def→Def) edgesTotal
EXTENDS6 (Structure→Structure)3 (Definition→Definition)9
INSTANTIATES4 (Instance→Structure)04
HAS_TYPE1 (Definition→Structure)221 (Definition→Definition)222
PARAMETRIZES35 (Structure→Def + Structure→Structure)938 (T→Def, Def→Def)1005
ELABORATES_AS023 (Definition→Definition)23

So EXTENDS (6/9) and INSTANTIATES (4/4) genuinely moved, but the big PARAMETRIZES flow (~94 %) still lives in the old Definition block. Phobos owes us an edge-rewiring pass.

7.5.2 Strict-mode measurement (real improvement)

Strict run picks up 9 active relations (up from 5 in v1), now including EXTENDS, INSTANTIATES, HAS_TYPE, CONSTRAINED_BY as newly-legal:

RelationCategoryEdgesEffect on 𝔄
IMPORTSI164Nmsp self-loop — cancels on diagonal
EXTENDSI6Structure self-loop — cancels
INSTANTIATESI4Instance → Structure — genuine off-diagonal
ASSUMESII25Theorem → Axiom
APPLIESII168Theorem self-loop — cancels
UNFOLDSII645Theorem → Definition
REWRITES_BYII240Theorem self-loop — cancels
HAS_TYPEIII1Definition → Structure — genuine
CONSTRAINED_BYIII5Theorem → Axiom under current extraction (preserved: legal Axiom head)

𝔄 spectrum (strict v2): trace = 680.0, eigenvalues = (652.96, 19.15, 6.24, 1.47, 0.18, 0), Hermitian defect = 0. Five non-zero eigenvalues — rank 5 Hermitian matrix. Big change from strict v1’s (651.44, 18.56, 0, 0, 0, 0).

Kill-switch verdict (strict v2):

TestTargetv1v2Δ
Derived-algebra rank417+6 (Structure/Instance blocks light up)
λ₁/λ₂[1.8, 3.2]1.0001.0005still degenerate
Non-commutativity≥ 90 %— (1 pair)70.0 % (7/10 pairs)first real strict non-comm measurement
Active relations (post-Laplacian cancellation)25+3

Rank 7 is above the file-05 target of 4. That’s not a failure — it means the Lean algebra is carrying more degrees of freedom than the pure 𝔰𝔲(2)×𝔰𝔲(2) model, most of which sit in the Structure-coupling channels that v1 couldn’t see. File 05 Alt-C is now the live hypothesis: the 15-relation commutator set fails to close cleanly, and we may need a 16th (probably SPECIALIZES as the genuine second 𝔰𝔲(2) raising) for the rank-4 prediction to hold.

7.5.3 Permissive-mode measurement (essentially unchanged)

Quantityv1v2Δ
Active relations11110
Rank10100
λ₁/λ₂1.0011.0010
Non-commutativity81.0%81.0%0
𝔄 trace187718770
Top-1 eigenvalue1825.121825.120

Because the permissive filter accepts the old routing, the PARAMETRIZES/UNFOLDS block collision still dominates. This is the diagnostic we predicted in §7.7 point 1: until Phobos re-wires existing edges (or emits cleanly-typed replacements), the permissive spectrum is pinned by the legacy Definition-block concentration.

7.5.4 Commutator spectrum (strict v2, top 5 imaginary)

#ValueBlock
16755.6Theorem ↔ Definition (UNFOLDS carrier, unchanged)
26752.3Hermitian mirror of #1
310.05Newly-visible Instance ↔ Structure mode (INSTANTIATES)
46.56Mirror
50.14Residual (HAS_TYPE’s single edge)

The emergence of the mode at ±10.05i from INSTANTIATES is the first genuinely new commutator signature. Modest magnitude (0.15 % of the dominant UNFOLDS mode) but it’s a new direction in the derived-algebra space. This is why the commutator rank jumped from 1 to 7: each of (INSTANTIATES, HAS_TYPE, EXTENDS, CONSTRAINED_BY) that survived the strict filter opens new independent non-commuting directions.

7.5.5 Neo4j persistence state after write

9 MagneticLaplacian_component rows populated (raw_count > 0), sorted by traffic:

relation_nameraw_countreverse_countsym_weightdir_signrank_contrib
UNFOLDS6450322.5+12
REWRITES_BY240240240.000 (self-loop cancels)
APPLIES168168168.000 (self-loop cancels)
IMPORTS164164164.000 (self-loop cancels)
ASSUMES25012.5+12
EXTENDS666.000 (self-loop cancels)
CONSTRAINED_BY502.5+12
INSTANTIATES402.0+12
HAS_TYPE100.5+12

Main MagneticLaplacian: populated=true, g=0.25, real_part/imag_part 36 elements each, timestamped 2026-04-18T21:33:26Z.

7.5.6 Updated verdict table

Testv0 (sparse)v1 (first real)v2 (post-#28)TargetAfter Mathlib-Ingest (projected)
Rank01 / 107 / 1044–6 once Phobos rewires PARAMETRIZES + ships SPECIALIZES
λ₁/λ₂undef1.000 / 1.0011.0005 / 1.001[1.8, 3.2]plausible if SPECIALIZES lights up second 𝔰𝔲(2)
Non-commutativity0/0— / 81.0 %70.0 % / 81.0 %≥ 90 %likely ≥ 90 % with 10× APPLIES bump
Active relations (post-Laplacian)02 / 75 / 715~9–12

The strict non-commutativity jump from “1 pair total” to 70 % of 10 pairs is the first real empirical signal of the Lean theorem graph’s non-abelian texture. It’s below target but now measuring something meaningful. Three drivers remain blocked: PARAMETRIZES re-wiring, SPECIALIZES extraction, and Mathlib APPLIES bulk.

7.5.7 Re-run record

python3 measure_non_commutativity.py --mode live --write              # → strict_v2 + Neo4j write
python3 measure_non_commutativity.py --mode live --permissive         # → permissive_v2
python3 verify_cycles.py                                              # → cycles_v2

Canonical JSON (08_empirical_spectrum_results.json) now reflects the strict-v2 state. Permissive-v2 available at /tmp/permissive_v2.json. Standing by for the final cycle after Mathlib-Ingest.


7.9 Post-Phobos-#34 rewire final cycle (2026-04-18)

Phobos shipped Task #34 (edge rewire + Option-A drop/re-emit). Now 11 of 15 relations active on OmegaTheoryV2 (up from 7 in v2). New: OPENS_NAMESPACE 42 edges, CONSTRAINED_BY 7. PARAMETRIZES 22 % of 973 (= 213) now correctly route through :Structure endpoints.

7.9.1 Edge landscape after rewire

RelationTotalRoutes to StructureStill to Def (legitimate or stale)
PARAMETRIZES973213 (22 %)759 to Def (many are / Definitions — not stale)
HAS_TYPE22258 (26 %)164 to Def
OPENS_NAMESPACE4242 (Namespace→Namespace, structurally correct)
CONSTRAINED_BY77 (100 %)0
EXTENDS99 (100 %)0
INSTANTIATES44 (100 %)0

Note: PARAMETRIZES residual T→D is partly semantically correct per team-lead — a theorem parameterizing over or targets those definitions, not Structures. The 22 % rewire is exactly the typeclass-like Structure case.

7.9.2 Strict-mode v3 measurement

Active relations: 11, total edges: 1,520 (up from 1,242 in v2). OPENS_NAMESPACE, PARAMETRIZES, and higher-traffic HAS_TYPE now admitted.

RelationEdgesα_k
IMPORTS16410.8 %
OPENS_NAMESPACE422.8 %
EXTENDS90.6 %
INSTANTIATES40.3 %
ASSUMES251.6 %
APPLIES16811.1 %
UNFOLDS64342.3 %
REWRITES_BY24015.8 %
HAS_TYPE583.8 %
CONSTRAINED_BY70.5 %
PARAMETRIZES16010.5 %

𝔄 spectrum (strict v3): trace = 897.0, eigenvalues = (714.47, 148.20, 24.51, 7.94, 1.89, 0). Five distinct positive modes, one zero (Instance still an isolated sink under the 6 edges entering Structure).

Kill-switch verdict (strict v3):

TestTargetv2v3Δ v2→v3
Rank477unchanged — Alt-C signature (see §7.9.5)
λ₁/λ₂[1.8, 3.2]1.00051.0381first real break from degeneracy
Non-commutativity≥ 90 %70.0 %73.3 % (11/15 pairs)+3.3 pp
Active (post-cancel)56+1 (PARAMETRIZES Structure-routed survives)

Big deltas:

  • λ₁/λ₂ = 1.0381 (vs 1.0005). PARAMETRIZES now feeds the (Theorem, Structure) block independently of UNFOLDS’s (Theorem, Definition) flow, lifting the second imaginary-eigenvalue pair from 6752i up to ~41787i while the dominant UNFOLDS pair climbs only modestly to 43379i. Ratio 43379/41787 = 1.038. Alt-A (only one 𝔰𝔲(2)) is now much more plausible than the fully-degenerate v2 readout; a real second 𝔰𝔲(2) with this ratio is within a factor of ~1.7 of the [1.8, 3.2] band.
  • Second Hermitian eigenvalue jumped from 19 to 148. That’s the PARAMETRIZES Structure contribution lighting up a whole new mode.
  • Non-comm 73.3 % on 15 pairs (up from 70 % on 10 pairs) — larger denominator and higher rate. Two pairs that were non-commuting in v2 are now commuting (APPLIES-CONSTRAINED_BY and similar self-loop/Structure interactions), but four new non-commuting pairs arrived with the PARAMETRIZES Structure mode.

7.9.3 Permissive-mode v3 measurement

Active relations: 12, total edges: 2,788. OPENS_NAMESPACE now lighting up the Namespace block with real off-diagonal content (in v2 it was all IMPORTS self-loop).

𝔄 spectrum (permissive v3): trace = 1947, eigenvalues = (1723.75, 168.15, 40.58, 11.58, 1.95, 0.99). All six eigenvalues non-zero for the first time — the Namespace block is no longer decoupled.

TestTargetv2v3Δ v2→v3
Rank41013+3 (went UP)
λ₁/λ₂[1.8, 3.2]1.0011.0257broke from unity
Non-commutativity≥ 90 %81.0 %78.6 % (22/28 pairs)slight drop
Active (post-cancel)78+1

The increase in rank from 10 → 13 is surprising but mechanically clear: PARAMETRIZES now contributes to two different blocks (759 old T→D edges + 160 rewired T→S + 39 S→D + 14 S→S + 1 T→A), each giving an independent commutator direction with every other relation. Permissive mode sees all of that as legal; strict mode only sees the 160 T→S contribution.

7.9.4 verify_cycles ratios (v3)

Five relations now at the mechanical 0.500 ratio (INSTANTIATES, ASSUMES, UNFOLDS, HAS_TYPE, CONSTRAINED_BY, PARAMETRIZES). As noted in §7.6, this is a query artefact of the forward/reverse script when tail-type = head-type after permissive filtering; it is not empirical evidence of SPECIALIZES/UNFOLDS-style su(2) balance. Real unidirectional signals: IMPORTS, OPENS_NAMESPACE, EXTENDS, APPLIES, REWRITES_BY all at ratio 1.000 — all nilpotent-dominated, no su(2) contribution.

Until SPECIALIZES lands with genuine empirical forward≠reverse data, the Q1a/Q1b tests of memo 05 §4.4 cannot be meaningfully executed. The 0.500 artefact explains why verify_cycles looks “balanced” but the Magnetic Laplacian sees those relations as real off-diagonal modes, not twin raising/lowering generators.

7.9.5 Alt-C hypothesis: survives, strengthened

Memo 05 §5 Alt-C predicted: “The 15 Lean relations might fail to close under composition — [R_i, R_j] sometimes produces a path whose endpoint types fall outside the span of the original 15. Signature: a handful of ‘orphan’ commutator classes with no eigenvector overlap to any single R_k.”

The v3 strict spectrum shows five distinct positive Hermitian eigenvalues (714, 148, 25, 8, 2) + one zero, but the commutator rank is stuck at 7 not 4, 6, or 10. The 7 is the derived-algebra rank counted as flattened commutator-matrix rank; it does not drop to 4 even as independent new relations (OPENS_NAMESPACE, PARAMETRIZES Structure) join. Two interpretations:

  1. Rank 7 is a saturation plateau for the 15-relation set, indicating the algebra does close within these 15 but does not factor as 𝔰𝔲(2)×𝔰𝔲(2) — rather as a richer 7-dimensional derived algebra 𝒜₇ with no pure two-𝔰𝔲(2) decomposition. This weakens Alt-C: the set does close, just not in the V3-inherited shape.

  2. Rank 7 is a ceiling from missing generators, and SPECIALIZES + REDUCES_TO + SUGGESTED_BY would push the rank past 7 toward 4 (after SPECIALIZES cancels one of the nilpotent directions) or past 10 (if the commutator set never closes and we discover the 16th generator empirically).

The v3 data cannot distinguish (1) vs (2) without SPECIALIZES empirics. The strict λ₁/λ₂ = 1.0381 is now the decisive signal: ratios below 1.2 favor Alt-A (only one 𝔰𝔲(2) present); ratios climbing toward [1.8, 3.2] favor the full two-𝔰𝔲(2) structure once SPECIALIZES lands. Current 1.0381 suggests Alt-A if nothing else changes.

7.9.6 Updated verdict table (v0 → v3)

Testv0 (sparse)v1 (first real)v2 (post-#28)v3 (post-#34)Target
Rank (strict/perm)01 / 107 / 107 / 134
λ₁/λ₂ (strict/perm)1.000 / 1.0011.0005 / 1.0011.0381 / 1.0257[1.8, 3.2]
Non-commutativity0 %— / 81.0 %70 % / 81 %73.3 % / 78.6 %≥ 90 %
Active rel (post-cancel)02 / 75 / 76 / 815
Nonzero Hermitian eigs02 / 55 / 55 / 65–6
Distinct imag commutator modes02 / 55 / 55 / 64–6 for 𝔰𝔲(2)×𝔰𝔲(2)+𝒩

Reading. Rank plateau at 7 ± ~0 while non-commutativity and λ₁/λ₂ climb is the signature of a saturating derived algebra with most of its independent directions now lit. The remaining gap to Sarin-Beta’s targets is single-generator-shaped: SPECIALIZES + Mathlib APPLIES bulk together should resolve whether this is Alt-A (~3 eigenmodes dominant, one 𝔰𝔲(2), rest nilpotent) or the full two-𝔰𝔲(2) structure.

7.9.7 Per-relation component persistence

11 MagneticLaplacian_component rows in Neo4j now have raw_count > 0 (up from 9):

relationrawsource→target (idx)sym_wdirrank_contrib
UNFOLDS6435→1 (Theorem→Definition)321.5+12
REWRITES_BY2405→5 (Theorem self-loop)240.000
APPLIES1685→5168.000
IMPORTS1643→3 (Namespace self-loop)164.000
PARAMETRIZES1605→4 (Theorem→Structure)80.0+12
HAS_TYPE581→4 (Definition→Structure)29.0+12
OPENS_NAMESPACE423→3 (Namespace self-loop)42.000
ASSUMES255→0 (Theorem→Axiom)12.5+12
EXTENDS94→4 (Structure self-loop)9.000
CONSTRAINED_BY75→4 (Theorem→Structure)3.5+12
INSTANTIATES42→4 (Instance→Structure)2.0+12

PARAMETRIZES now correctly sits at (Theorem, Structure) = (5, 4) in the canonical index. The six components with rank_contrib = 2 (UNFOLDS, PARAMETRIZES, HAS_TYPE, ASSUMES, CONSTRAINED_BY, INSTANTIATES) are the genuine non-self-loop carriers of the 𝔄 algebra’s off-diagonal mass. These six are what gives strict mode its rank-5 Hermitian signature.

7.9.8 Final-cycle run record

# strict with Neo4j write (canonical)
python3 measure_non_commutativity.py --mode live --write    # → strict_v3

# permissive snapshot
python3 measure_non_commutativity.py --mode live --permissive --results-path /tmp/permissive_v3.json

# cycle ratios
python3 verify_cycles.py --results-path /tmp/cycles_v3.json

Canonical 08_empirical_spectrum_results.json now reflects strict-v3 state (11 relations, rank 7, λ₁/λ₂ = 1.0381, non-comm 73.3 %). Neo4j MagneticLaplacian node re-written with timestamp 2026-04-18T21:49:24Z. Standing by for the final Mathlib-Ingest cycle — one empirical run remaining.

7.9.9 Pre-registered predictions for the final Mathlib-Ingest cycle

Registered 2026-04-19 before the v4 cycle runs. Either the rank-7 plateau survives or it breaks; each outcome has a distinctive signature. No third scenario is compatible with v3 data. The §7.10 write-up of v4 will reference this section and state explicitly which branch won, with no post-hoc reframing.

Alt-A signature (single 𝔰𝔲(2) + nilpotent tail 𝒩, 15-relation set closes at rank 7). APPLIES’s 10× Mathlib bump saturates the (Theorem, Theorem) block but adds no new independent commutator directions.

  • IF strict rank stays ≤ 7 AND permissive rank stays ≤ 13 AND non-commutativity climbs past 85 % AND λ₁/λ₂ stays below 1.4 THEN Alt-A confirmed.
  • Paper framing: “Lean theorem graphs are typed-quiver gauge theories with a single dominant 𝔰𝔲(2) sector plus a rich nilpotent subalgebra 𝒩, whose derived rank saturates at 7 ± 0.”
  • Physical analogy: single-gauge theory with nilpotent matter (one-coupling Wess-Zumino style).

Alt-C signature (15-set fails to close, 16th generator required). Mathlib-scale APPLIES exposes commutator classes with no eigenvector overlap onto any of the 15 relations — an “orphan” direction.

  • IF strict rank jumps to 8 or higher OR λ₁/λ₂ crosses into [1.8, 3.2] without SPECIALIZES being populated THEN Alt-C confirmed.
  • Paper framing: “Lean theorem graphs require a 16th generator for commutator closure — Mathlib-scale traffic exposes a novel algebraic direction absent from the canonical 15-relation typed-arrow ontology.”
  • Physical analogy: emergent composite gauge boson (compound premise-selection operator as a new algebraic primitive).

Null hypothesis (reject both). Mathlib-Ingest radically reshapes α_k weights such that UNFOLDS stops dominating; the rank-7 plateau collapses.

  • IF strict rank < 7 OR non-commutativity falls below 60 % OR λ₁/λ₂ collapses back toward 1.001 THEN both Alt-A and Alt-C rejected; the v3 rank-7 plateau was an artefact of the 4:3:2 relation-traffic ratio, not genuine algebraic saturation.
  • Paper framing: “Lean theorem graphs carry no stable derived-algebra rank; empirical measurement is dominated by extraction noise at sub-Mathlib scale.”

Tiebreaker criteria (apply in order).

  1. Eigenvalue hierarchy preservation. The 4-order-of-magnitude span {3.83 → 43379} either survives Mathlib scaling (interpretation load-bearing) or compresses within 1 order of magnitude (sparse-data artefact).
  2. New commutator modes. Any imaginary eigenvalue magnitude > 100 in v4 that isn’t a scaled-up v3 mode is evidence for Alt-C.
  3. SPECIALIZES arrival. If Phobos ships SPECIALIZES in v4, treat jointly: rank → 8 with SPECIALIZES ≈ Alt-A + its first 𝔰𝔲(2) raising; rank → 10+ without SPECIALIZES = pure Alt-C.

Companion physics observation (not part of the test). The v3 eigenvalue hierarchy {43379, 41787, 1722, 127, 3.83} spans 4 orders of magnitude — reminiscent of the Pi Hunch (memo 05 companion, NOTES_PI_ORDERING_CORRECTION.md) where the π / e / √2 computational-truncation rates span similar orders. If the hierarchy preserves in v4, this cross-domain numerical resemblance is worth a paragraph in the paper’s Discussion (not claims, just a structural observation that two unrelated domains of OmegaTheory expose similar spectral hierarchies).