Skip to content

Commit 07bed7f

Browse files
isaacbowenclaude
andcommitted
session 32: Grassmannian tangent + general dim accounting + probe results
Lean: - exteriorPower_two_rank: dim(Λ²(M)) = C(dim(M), 2) — general formula subsumes rank-2 and rank-3 cases, gives dim(so(d)) = C(d,2) - exteriorPower_two_of_rank_three: dim(Λ²(R³)) = 3 (write subspace) - commutator_off_diagonal_range: P·[W,P]·P = 0 - commutator_off_diagonal_kernel: (1-P)·[W,P]·(1-P) = 0 Together: [W,P] is purely off-diagonal in P-decomposition = Grassmannian tangent - 44 theorems total, 0 sorry Probed remaining TODOs: - Controllability: dimensional accounting done, bracket-generation needs algebraic geometry ("generic") — multi-session - Haar convergence: requires probability on compact groups — not algebraically accessible - Birth indelibility: requires dynamical systems (unique trajectories) — not algebraically accessible - Grassmannian: algebraic core done, overlap-specific mapping needs more structure Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 88a9e15 commit 07bed7f

3 files changed

Lines changed: 89 additions & 19 deletions

File tree

lean/LeanFoam/ThreeBody.lean

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,4 +106,49 @@ equality is the core structural fact.
106106
-- Rather than re-prove this, we note the Mathlib reference and
107107
-- formalize the structural identity the spec actually uses.
108108

109+
/-!
110+
### Grassmannian tangent: [W, P] is off-diagonal
111+
112+
The commutator of a write W with a projection P maps range(P) into
113+
ker(P) and ker(P) into range(P). It has no on-diagonal component.
114+
This is the algebraic content of the Grassmannian tangent: the
115+
perturbation lives in Hom(range(P), ker(P)), which IS T_P Gr(k,d).
116+
117+
Spec reference: "three-body mapping" → "vertical structure (containment)
118+
is a Grassmannian tangent at the observer's slice"
119+
-/
120+
121+
open Matrix in
122+
/-- The commutator [W, P] has zero projection onto range(P) → range(P).
123+
Equivalently: P · [W, P] · P = 0 for any projection P.
124+
The write doesn't map the observer's subspace back into itself. -/
125+
theorem commutator_off_diagonal_range
126+
{n : Type*} [Fintype n] [DecidableEq n]
127+
{R : Type*} [CommRing R]
128+
(W P : Matrix n n R) (hP : P * P = P) :
129+
P * (W * P - P * W) * P = 0 := by
130+
have h : P * (W * P - P * W) * P = P * W * (P * P) - (P * P) * W * P := by
131+
noncomm_ring
132+
rw [h, hP, sub_self]
133+
134+
open Matrix in
135+
/-- The commutator [W, P] has zero projection onto ker(P) → ker(P).
136+
Equivalently: (1 - P) · [W, P] · (1 - P) = 0 for any projection P.
137+
The write doesn't map the complement back into itself either.
138+
139+
Together with commutator_off_diagonal_range: [W, P] is purely
140+
off-diagonal in the P-decomposition. It maps range(P) → ker(P) and
141+
ker(P) → range(P). This IS the Grassmannian tangent T_P Gr(k,d). -/
142+
theorem commutator_off_diagonal_kernel
143+
{n : Type*} [Fintype n] [DecidableEq n]
144+
{R : Type*} [CommRing R]
145+
(W P : Matrix n n R) (hP : P * P = P) :
146+
(1 - P) * (W * P - P * W) * (1 - P) = 0 := by
147+
have hP2 : P * (1 - P) = 0 := by rw [mul_sub, mul_one, hP, sub_self]
148+
have hP3 : (1 - P) * P = 0 := by rw [sub_mul, one_mul, hP, sub_self]
149+
have h : (1 - P) * (W * P - P * W) * (1 - P) =
150+
(1 - P) * W * (P * (1 - P)) - ((1 - P) * P) * W * (1 - P) := by
151+
noncomm_ring
152+
rw [h, hP2, hP3]; simp
153+
109154
end FoamSpec

lean/LeanFoam/WriteMap.lean

Lines changed: 36 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -28,24 +28,27 @@ confined to a 2-plane, up to scalar. Proof: Λ²(2-plane) is 1-dimensional.
2828
Spec reference: "the writing map", constraint (a)+(b)+(c) → uniqueness.
2929
-/
3030

31-
/-- For a 2-dimensional free module, dim(Λ²(M)) = 1.
32-
The wedge product is the unique alternating 2-form up to scalar. -/
31+
/-- dim(Λ²(M)) = C(dim(M), 2). The general dimensional accounting for
32+
write subspaces and so(d). Specific cases:
33+
- dim = 2: C(2,2) = 1 (write uniqueness — the wedge is unique up to scalar)
34+
- dim = 3: C(3,2) = 3 (write subspace per R³ observer)
35+
- dim = d: C(d,2) = d(d-1)/2 = dim(so(d)) (the full target algebra) -/
36+
theorem exteriorPower_two_rank
37+
(R : Type*) [CommRing R] [Nontrivial R]
38+
(M : Type*) [AddCommGroup M] [Module R M]
39+
[Module.Free R M] [Module.Finite R M] :
40+
Module.finrank R (⋀[R]^2 M) = Nat.choose (Module.finrank R M) 2 := by
41+
rw [exteriorPower.finrank_eq]
42+
43+
/-- dim(Λ²(2-plane)) = 1. Write uniqueness: the wedge product is the
44+
unique alternating 2-form on a 2-plane, up to scalar. -/
3345
theorem exteriorPower_two_of_rank_two
3446
(R : Type*) [CommRing R] [Nontrivial R]
3547
(M : Type*) [AddCommGroup M] [Module R M]
3648
[Module.Free R M] [Module.Finite R M]
3749
(hdim : Module.finrank R M = 2) :
3850
Module.finrank R (⋀[R]^2 M) = 1 := by
39-
rw [exteriorPower.finrank_eq, hdim]
40-
native_decide
41-
42-
/-- Specialization to ℝ. -/
43-
theorem write_map_unique_real
44-
(V : Type*) [AddCommGroup V] [Module ℝ V]
45-
[Module.Free ℝ V] [Module.Finite ℝ V]
46-
(hdim : Module.finrank ℝ V = 2) :
47-
Module.finrank ℝ (⋀[ℝ]^2 V) = 1 :=
48-
exteriorPower_two_of_rank_two ℝ V hdim
51+
rw [exteriorPower_two_rank, hdim]; native_decide
4952

5053
/-!
5154
## 2. Trace Zero — Writes Live in su(d)
@@ -97,7 +100,27 @@ theorem write_skew_symmetric {n : Type*} [Fintype n] [DecidableEq n]
97100
simp [transpose_sub, transpose_vecMulVec]
98101

99102
/-!
100-
## 4. Stacked Write Trace
103+
## 4. Write Subspace Dimension
104+
105+
The write subspace for an R³ observer is Λ²(R³), which is 3-dimensional.
106+
This is the bottleneck: each observer can only write in 3 of the d²
107+
Lie algebra dimensions per step.
108+
109+
Spec reference: "the writing map" → "the write subspace is exactly
110+
3-dimensional per observer — the exterior algebra Λ²(R³)"
111+
-/
112+
113+
/-- dim(Λ²(R³)) = 3. The write subspace per R³ observer is 3-dimensional. -/
114+
theorem exteriorPower_two_of_rank_three
115+
(R : Type*) [CommRing R] [Nontrivial R]
116+
(M : Type*) [AddCommGroup M] [Module R M]
117+
[Module.Free R M] [Module.Finite R M]
118+
(hdim : Module.finrank R M = 3) :
119+
Module.finrank R (⋀[R]^2 M) = 3 := by
120+
rw [exteriorPower_two_rank, hdim]; native_decide
121+
122+
/-!
123+
## 5. Stacked Write Trace
101124
102125
For complex vectors (stacked observer), the write d⊗m† − m⊗d† has
103126
nonzero trace. Unlike the real case (write_traceless), the stacked

lean/README.md

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ Mechanically verified results from [the measurement solution](../README.md). Eac
88

99
| theorem | spec reference | statement |
1010
|---------|---------------|-----------|
11+
| `exteriorPower_two_rank` | writing map / controllability | dim(Λ²(M)) = C(dim(M), 2) — general dimensional accounting |
1112
| `exteriorPower_two_of_rank_two` | writing map: uniqueness | dim(Λ²(2-plane)) = 1 |
12-
| `write_map_unique_real` | writing map: uniqueness | specialization to R |
1313
| `write_traceless` | writing map: su(d) | tr(d⊗m - m⊗d) = 0 |
1414
| `write_skew_symmetric` | writing map: Lie algebra | (d⊗m - m⊗d)^T = -(d⊗m - m⊗d) |
1515
| `stacked_write_trace` | group: generative orthogonality | tr(d⊗m† - m⊗d†) = cross dot-product difference |
@@ -49,6 +49,8 @@ Mechanically verified results from [the measurement solution](../README.md). Eac
4949
| `mediation_factors` | three-body: mediation | M = P_A * Pi_B * P_C^T (associativity) |
5050
| `bypass_decomposition` | three-body: bypass | O_AC = M + bypass |
5151
| `roundtrip_symmetric` | three-body: round-trip | (M * M^T)^T = M * M^T |
52+
| `commutator_off_diagonal_range` | three-body: Grassmannian tangent | P * [W,P] * P = 0 (range → range component vanishes) |
53+
| `commutator_off_diagonal_kernel` | three-body: Grassmannian tangent | (1-P) * [W,P] * (1-P) = 0 (kernel → kernel component vanishes) |
5254

5355
**Dynamics.lean** — frame recession under sequential writes.
5456

@@ -67,11 +69,11 @@ Mechanically verified results from [the measurement solution](../README.md). Eac
6769

6870
The following spec claims have computational verification (Python tests) but no Lean proof:
6971

70-
- Controllability (so(d) generated by writes) — `test_controllability.py`
71-
- Haar convergence (L → 1/√2 of max) — derived in spec from convergence theorem for random walks on compact groups
72-
- Birth indelibility (no echo state property) — `test_echo_state.py`
73-
- Stacking mechanism (real ops closed in so(d)) — `test_stacking_mechanism.py`
74-
- Grassmannian vertical structure — `test_grassmannian_vertical.py`
72+
- Controllability (so(d) generated by writes) — partially formalized: dimensional accounting (`exteriorPower_two_rank` gives dim = C(n,2)), per-observer subspace is 3D. Remaining: brackets of generic observers span so(d). `test_controllability.py`
73+
- Haar convergence (L → 1/√2 of max) — requires probability theory on compact groups (convergence theorem for random walks). Not algebraically accessible.
74+
- Birth indelibility (no echo state property) — requires dynamical systems theory (unique trajectories on compact manifolds, state-dependent attractors). Not algebraically accessible. `test_echo_state.py`
75+
- Stacking mechanism — partially formalized: so(d) closure (`commutator_skew_of_skew`), J²=-I even dim (`even_dim_of_complex_structure`), write in so(d) (`write_skew_symmetric`), stacked trace purely imaginary (`stacked_write_trace`, `dotProduct_star_conj`). Remaining: stacked pair generates su(d) (controllability-adjacent)
76+
- Grassmannian vertical structure — partially formalized: [W,P] is off-diagonal in P-decomposition (`commutator_off_diagonal_range`, `commutator_off_diagonal_kernel`). Remaining: tangent maps Knowable → Unknown specifically (requires overlap matrix structure). `test_grassmannian_vertical.py`
7577

7678
## Building
7779

0 commit comments

Comments
 (0)