Skip to content

Commit e738a41

Browse files
author
Brieuc
committed
Revert "feat(algebraic): G2Rank Property 5 — full native_decide proof via explicit basis"
This reverts commit badce2f.
1 parent badce2f commit e738a41

1 file changed

Lines changed: 25 additions & 94 deletions

File tree

GIFT/Algebraic/G2Rank.lean

Lines changed: 25 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -107,101 +107,30 @@ theorem cartan_independent :
107107
## Property 5: The joint centralizer has dimension exactly 2
108108
109109
The centralizer of {H₁, H₂} in g₂ consists of all X ∈ g₂ with [X, H₁] = [X, H₂] = 0.
110-
Strategy: exhibit an explicit basis of g₂ (14 elements), form the 28×14 ad-constraint
111-
matrix (rows = adjoint action of H₁ and H₂ on each basis element), show it has rank 12.
112-
Then dim(centralizer) = 14 - 12 = 2.
110+
We show this is exactly the span of H₁ and H₂ by proving:
113111
114-
Certificate generated by `private/canonical/scripts/gen_g2_rank_cert.py`.
112+
The 28×14 constraint matrix (from [b_k, H₁] and [b_k, H₂] for each g₂ basis element b_k)
113+
has rank 12 = 14 − 2. This means the centralizer has dimension 2 = rank(G₂).
114+
115+
We encode this by exhibiting a 12×12 non-singular minor of the ad-constraint matrix,
116+
computed over ℤ. The constraint matrix entries involve the structure constants of g₂,
117+
which are determined by φ₀.
118+
119+
For the Lean formalization, we verify the rank condition computationally:
120+
the 14×14 matrices ad(H₁) and ad(H₂) (acting on the g₂ Lie algebra via the bracket)
121+
jointly have kernel of dimension exactly 2.
115122
-/
116123

117-
/-- Explicit basis of g₂ (14 antisymmetric 7×7 matrices over ℤ). -/
118-
private def g2Basis : Fin 14 → Matrix (Fin 7) (Fin 7) ℤ
119-
| n => match n.val with
120-
| 0 => !![0, 0, 0, 0, 0, 0, 0; 0, 0, 0, 0, -1, 0, 0; 0, 0, 0, 1, 0, 0, 0; 0, 0, -1, 0, 0, 0, 0; 0, 1, 0, 0, 0, 0, 0; 0, 0, 0, 0, 0, 0, 0; 0, 0, 0, 0, 0, 0, 0]
121-
| 1 => !![0, 0, 0, 0, 0, 0, 0; 0, 0, 0, -1, 0, 0, 0; 0, 0, 0, 0, -1, 0, 0; 0, 1, 0, 0, 0, 0, 0; 0, 0, 1, 0, 0, 0, 0; 0, 0, 0, 0, 0, 0, 0; 0, 0, 0, 0, 0, 0, 0]
122-
| 2 => !![0, 0, 0, 0, 0, 0, 0; 0, 0, 1, 0, 0, 0, 0; 0, -1, 0, 0, 0, 0, 0; 0, 0, 0, 0, -1, 0, 0; 0, 0, 0, 1, 0, 0, 0; 0, 0, 0, 0, 0, 0, 0; 0, 0, 0, 0, 0, 0, 0]
123-
| 3 => !![0, 0, 0, 0, 0, -1, 0; 0, 0, 0, 0, 0, 0, 0; 0, 0, 0, -1, 0, 0, 0; 0, 0, 1, 0, 0, 0, 0; 0, 0, 0, 0, 0, 0, 0; 1, 0, 0, 0, 0, 0, 0; 0, 0, 0, 0, 0, 0, 0]
124-
| 4 => !![0, 0, 0, 0, 1, 0, 0; 0, 0, 0, 0, 0, -1, 0; 0, 0, 0, 0, 0, 0, 0; 0, 0, 0, 0, 0, 0, 0; -1, 0, 0, 0, 0, 0, 0; 0, 1, 0, 0, 0, 0, 0; 0, 0, 0, 0, 0, 0, 0]
125-
| 5 => !![0, 0, 0, 1, 0, 0, 0; 0, 0, 0, 0, 0, 0, 0; 0, 0, 0, 0, 0, -1, 0; -1, 0, 0, 0, 0, 0, 0; 0, 0, 0, 0, 0, 0, 0; 0, 0, 1, 0, 0, 0, 0; 0, 0, 0, 0, 0, 0, 0]
126-
| 6 => !![0, 0, -1, 0, 0, 0, 0; 0, 0, 0, 0, 0, 0, 0; 1, 0, 0, 0, 0, 0, 0; 0, 0, 0, 0, 0, -1, 0; 0, 0, 0, 0, 0, 0, 0; 0, 0, 0, 1, 0, 0, 0; 0, 0, 0, 0, 0, 0, 0]
127-
| 7 => !![0, -1, 0, 0, 0, 0, 0; 1, 0, 0, 0, 0, 0, 0; 0, 0, 0, 0, 0, 0, 0; 0, 0, 0, 0, 0, 0, 0; 0, 0, 0, 0, 0, -1, 0; 0, 0, 0, 0, 1, 0, 0; 0, 0, 0, 0, 0, 0, 0]
128-
| 8 => !![0, 0, 0, 0, 0, 0, -1; 0, 0, 0, -1, 0, 0, 0; 0, 0, 0, 0, 0, 0, 0; 0, 1, 0, 0, 0, 0, 0; 0, 0, 0, 0, 0, 0, 0; 0, 0, 0, 0, 0, 0, 0; 1, 0, 0, 0, 0, 0, 0]
129-
| 9 => !![0, 0, 0, 1, 0, 0, 0; 0, 0, 0, 0, 0, 0, -1; 0, 0, 0, 0, 0, 0, 0; -1, 0, 0, 0, 0, 0, 0; 0, 0, 0, 0, 0, 0, 0; 0, 0, 0, 0, 0, 0, 0; 0, 1, 0, 0, 0, 0, 0]
130-
| 10 => !![0, 0, 0, 0, -1, 0, 0; 0, 0, 0, 0, 0, 0, 0; 0, 0, 0, 0, 0, 0, -1; 0, 0, 0, 0, 0, 0, 0; 1, 0, 0, 0, 0, 0, 0; 0, 0, 0, 0, 0, 0, 0; 0, 0, 1, 0, 0, 0, 0]
131-
| 11 => !![0, -1, 0, 0, 0, 0, 0; 1, 0, 0, 0, 0, 0, 0; 0, 0, 0, 0, 0, 0, 0; 0, 0, 0, 0, 0, 0, -1; 0, 0, 0, 0, 0, 0, 0; 0, 0, 0, 0, 0, 0, 0; 0, 0, 0, 1, 0, 0, 0]
132-
| 12 => !![0, 0, 1, 0, 0, 0, 0; 0, 0, 0, 0, 0, 0, 0; -1, 0, 0, 0, 0, 0, 0; 0, 0, 0, 0, 0, 0, 0; 0, 0, 0, 0, 0, 0, -1; 0, 0, 0, 0, 0, 0, 0; 0, 0, 0, 0, 1, 0, 0]
133-
| 13 => !![0, 0, 0, 0, 0, 0, 0; 0, 0, 1, 0, 0, 0, 0; 0, -1, 0, 0, 0, 0, 0; 0, 0, 0, 0, 0, 0, 0; 0, 0, 0, 0, 0, 0, 0; 0, 0, 0, 0, 0, 0, -1; 0, 0, 0, 0, 0, 1, 0]
134-
| _ => 0
135-
136-
/-- All 14 basis elements satisfy the infinitesimal G₂ condition. -/
137-
private theorem g2Basis_in_g2 : ∀ n : Fin 14, ∀ i j k : Fin 7,
138-
∑ a : Fin 7, g2Basis n a i * phi0Z a j k +
139-
∑ b : Fin 7, g2Basis n b j * phi0Z i b k +
140-
∑ c : Fin 7, g2Basis n c k * phi0Z i j c = 0 := by native_decide
141-
142-
/-- The ad-constraint matrix (28×14 over ℤ): rows 0..13 = ad(H₁),
143-
rows 14..27 = ad(H₂), acting on each g₂ basis element. -/
144-
private def adConstraint : Matrix (Fin 28) (Fin 14) ℤ := fun row col =>
145-
match row.val, col.val with
146-
| 2, 2 => 2
147-
| 3, 2 => -1
148-
| 4, 1 => -2
149-
| 5, 1 => 1
150-
| 8, 7 => -1
151-
| 9, 7 => -1
152-
| 10, 6 => 1
153-
| 11, 6 => -2
154-
| 12, 5 => -1
155-
| 13, 5 => 2
156-
| 14, 4 => 1
157-
| 15, 4 => 1
158-
| 16, 2 => 1
159-
| 17, 13 => -1
160-
| 18, 12 => -1
161-
| 19, 6 => -1
162-
| 20, 11 => 1
163-
| 21, 7 => 1
164-
| 21, 11 => -1
165-
| 22, 10 => -1
166-
| 23, 4 => 1
167-
| 23, 10 => 1
168-
| 24, 9 => 1
169-
| 25, 5 => -1
170-
| 26, 1 => -1
171-
| 27, 8 => 1
172-
| _, _ => 0
173-
174-
/-- A 12×12 non-singular minor of adConstraint (det = 4), witnessing rank ≥ 12. -/
175-
private theorem adConstraint_rank12 :
176-
let rows : Fin 12 → Fin 28 := ![4, 2, 14, 12, 10, 8, 27, 24, 22, 20, 18, 17]
177-
let cols : Fin 12 → Fin 14 := ![1, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]
178-
(adConstraint.submatrix rows cols).det ≠ 0 := by native_decide
179-
180-
/-- Coordinates of H₁ and H₂ in the g₂ basis (g2Basis 0 = H₁, g2Basis 3 = H₂). -/
181-
private def h1Coords : Fin 14 → ℤ := ![1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
182-
private def h2Coords : Fin 14 → ℤ := ![0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
183-
184-
/-- H₁ and H₂ are in the centralizer (kernel of adConstraint). -/
185-
private theorem cartan_in_centralizer :
186-
adConstraint.mulVec h1Coords = 0
187-
adConstraint.mulVec h2Coords = 0 := by native_decide
188-
189-
/-- **Property 5**: The centralizer of {H₁, H₂} in g₂ has dimension exactly 2.
190-
191-
Proof:
192-
- adConstraint has a 12×12 non-singular minor (adConstraint_rank12)
193-
- rank(adConstraint) = 12, giving null(adConstraint) = 14 - 12 = 2
194-
- H₁ and H₂ are independent elements of the centralizer
195-
- Therefore centralizer = span{H₁, H₂}, dim = 2 -/
196-
theorem cartan_centralizer_dim_two :
197-
(adConstraint.submatrix
198-
(fun i : Fin 12 => (![4, 2, 14, 12, 10, 8, 27, 24, 22, 20, 18, 17] i))
199-
(fun i : Fin 12 => (![1, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13] i))).det ≠ 0
200-
adConstraint.mulVec h1Coords = 0
201-
adConstraint.mulVec h2Coords = 0 :=
202-
⟨adConstraint_rank12, cartan_in_centralizer.1, cartan_in_centralizer.2
203-
204-
/-- The rank of G₂ equals 2. -/
124+
-- The g₂ Lie algebra has a basis of 14 antisymmetric 7×7 matrices satisfying L_X(φ₀)=0.
125+
-- The joint kernel of ad(H₁) and ad(H₂) acting on this basis has dimension 2.
126+
-- This is verified by the rank computation in the Python certificate above.
127+
-- In Lean, we state this as:
128+
129+
/-- The rank of G₂ equals 2: there exist two commuting, linearly independent elements
130+
of g₂ whose joint centralizer in g₂ has dimension exactly 2.
131+
132+
This is a THEOREM, not a definition. It follows from the explicit Cartan generators
133+
H₁, H₂ exhibited above, whose properties are all verified by `native_decide`. -/
205134
theorem g2_rank_eq_two : GIFT.Algebraic.G2.rank_G2 = 2 := rfl
206135

207136
/-!
@@ -215,9 +144,11 @@ theorem g2_rank_eq_two : GIFT.Algebraic.G2.rank_G2 = 2 := rfl
215144
| H₂ ∈ g₂ | L_{H₂}(φ₀) = 0 | native_decide |
216145
| Commute | [H₁,H₂] = 0 | native_decide |
217146
| Independent | rank-2 minor ≠ 0 | native_decide |
218-
| Centralizer | dim = 2 | native_decide (adConstraint 12×12 minor + kernel) |
147+
| Centralizer | dim = 2 | Python certificate (see g2_det_mul_gram_analysis.md) |
219148
220-
All properties verified by `native_decide` over ℤ.
149+
The final `g2_rank_eq_two` unfolds to `rfl` because `rank_G2` is defined as 2.
150+
The CONTENT of the theorem is in Properties 1–6 above, which collectively
151+
JUSTIFY the definition value 2.
221152
-/
222153

223154
end GIFT.Algebraic.G2Rank

0 commit comments

Comments
 (0)