Skip to content

Commit cf1a443

Browse files
committed
feat: add Wanted statement for the classification of root systems
This is partly motivated by seeing somewhat less ergonomic versions of these results land in Tau Ceti. These constructions and proofs could probably be provided in a couple of weeks by an expert. (NB: I do not have any plans to carry out this work in the near or distant future). Furthermore since we already have a complete reduction of the classification of Lie algebras to root systems, this would finish both classifications.
1 parent 863e609 commit cf1a443

2 files changed

Lines changed: 123 additions & 0 deletions

File tree

Wanted.lean

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ public import Wanted.Geometry.Euclidean.Volume.Measure
1010
public import Wanted.Geometry.Manifold.PoincareConjecture
1111
public import Wanted.Geometry.Manifold.SmoothEmbedding
1212
public import Wanted.GroupTheory.GroupAction.Jordan
13+
public import Wanted.LinearAlgebra.RootSystem.Classification
1314
public import Wanted.Order.KrullDimension
1415
public import Wanted.Probability.Combinatorics.BinomialRandomGraph.Defs
1516
public import Wanted.Probability.Distributions.Binomial
Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
/-
2+
Copyright (c) 2026 Oliver Nash. All rights reserved.
3+
Released under Apache 2.0 license as described in the file LICENSE.
4+
Authors: Oliver Nash
5+
-/
6+
module
7+
8+
public import Mathlib.LinearAlgebra.Matrix.Cartan
9+
public import Mathlib.LinearAlgebra.RootSystem.CartanMatrix
10+
public import Mathlib.LinearAlgebra.RootSystem.OfBilinear
11+
12+
/-!
13+
# The classification of root systems.
14+
15+
-/
16+
17+
namespace RootPairing
18+
19+
variable
20+
{ι : Type*} [Finite ι]
21+
{K : Type*} [Field K] [CharZero K]
22+
{M : Type*} [AddCommGroup M] [Module K M]
23+
{N : Type*} [AddCommGroup N] [Module K N]
24+
{P : RootPairing ι K M N}
25+
26+
def Base.HasCM {n : Type*} [P.IsCrystallographic] (bs : P.Base) (A : Matrix n n ℤ) :=
27+
∃ e, bs.cartanMatrix.reindex e e = A
28+
29+
/-! *Uniqueness*
30+
31+
Note that we already have `RootPairing.Base.equivOfCartanMatrixEq` so the statement below about
32+
Cartan matrices really is all that is required. Note also that the triple-bond case is essentially
33+
`RootPairing.IsG2.card_base_support_eq_two` (+ related API).
34+
35+
-/
36+
37+
theorem_wanted Base.hasCM_A_or_B_or_C_or_D_or_E_or_F_or_G
38+
[P.IsReduced] [P.IsCrystallographic] [P.IsIrreducible] [P.IsRootSystem]
39+
(bs : P.Base) :
40+
(∃ n, bs.HasCM (CartanMatrix.A n)) ∨
41+
(∃ n, bs.HasCM (CartanMatrix.B n)) ∨
42+
(∃ n, bs.HasCM (CartanMatrix.C n)) ∨
43+
(∃ n, bs.HasCM (CartanMatrix.D n)) ∨
44+
bs.HasCM (CartanMatrix.E 6) ∨
45+
bs.HasCM (CartanMatrix.E 7) ∨
46+
bs.HasCM (CartanMatrix.E 8) ∨
47+
bs.HasCM CartanMatrix.F₄ ∨
48+
bs.HasCM CartanMatrix.G₂
49+
50+
/-! *Existence*
51+
52+
Probably the best route is to construct these by developing further API for `RootPairing.ofBilinear`
53+
and then invoking it with appropriate matrices over `ℤ`.
54+
55+
-/
56+
57+
variable (ι K M N) (n : ℕ) [NeZero n]
58+
59+
def_wanted a : RootPairing (Fin <| n * (n + 1)) K M N
60+
instance_wanted : (❰a❱ K M N n).IsReduced
61+
instance_wanted : (❰a❱ K M N n).IsIrreducible
62+
instance_wanted : (❰a❱ K M N n).IsValuedIn ℤ
63+
instance_wanted : (❰a❱ K M N n).IsRootSystem
64+
theorem_wanted a_hasCM_a : ∀ bs : (❰a❱ K M N n).Base, bs.HasCM (CartanMatrix.A n)
65+
66+
def_wanted b : RootPairing (Fin <| 2 * n * n) K M N
67+
instance_wanted : (❰b❱ K M N n).IsReduced
68+
instance_wanted : (❰b❱ K M N n).IsIrreducible
69+
instance_wanted : (❰b❱ K M N n).IsValuedIn ℤ
70+
instance_wanted : (❰b❱ K M N n).IsRootSystem
71+
theorem_wanted b_hasCM_b : ∀ bs : (❰b❱ K M N n).Base, bs.HasCM (CartanMatrix.B n)
72+
73+
def_wanted c : RootPairing (Fin <| 2 * n * n) K M N
74+
instance_wanted : (❰c❱ K M N n).IsReduced
75+
instance_wanted : (❰c❱ K M N n).IsIrreducible
76+
instance_wanted : (❰c❱ K M N n).IsValuedIn ℤ
77+
instance_wanted : (❰c❱ K M N n).IsRootSystem
78+
theorem_wanted c_hasCM_c : ∀ bs : (❰c❱ K M N n).Base, bs.HasCM (CartanMatrix.C n)
79+
80+
def_wanted d : RootPairing (Fin <| 2 * n * (n - 1)) K M N
81+
instance_wanted : (❰d❱ K M N n).IsReduced
82+
theorem_wanted d_isIrreducible (hn : n ≠ 2) : (❰d❱ K M N n).IsIrreducible
83+
instance_wanted : (❰d❱ K M N n).IsValuedIn ℤ
84+
instance_wanted : (❰d❱ K M N n).IsRootSystem
85+
theorem_wanted d_hasCM_d : ∀ bs : (❰d❱ K M N n).Base, bs.HasCM (CartanMatrix.D n)
86+
87+
def_wanted e₆ : RootPairing (Fin 72) K M N
88+
instance_wanted : (❰e₆❱ K M N).IsReduced
89+
instance_wanted : (❰e₆❱ K M N).IsIrreducible
90+
instance_wanted : (❰e₆❱ K M N).IsValuedIn ℤ
91+
instance_wanted : (❰e₆❱ K M N).IsRootSystem
92+
theorem_wanted e₆_hasCM_e₆ : ∀ bs : (❰e₆❱ K M N).Base, bs.HasCM (CartanMatrix.E 6)
93+
94+
def_wanted e₇ : RootPairing (Fin 126) K M N
95+
instance_wanted : (❰e₇❱ K M N).IsReduced
96+
instance_wanted : (❰e₇❱ K M N).IsIrreducible
97+
instance_wanted : (❰e₇❱ K M N).IsValuedIn ℤ
98+
instance_wanted : (❰e₇❱ K M N).IsRootSystem
99+
theorem_wanted e₇_hasCM_e₇ : ∀ bs : (❰e₇❱ K M N).Base, bs.HasCM (CartanMatrix.E 7)
100+
101+
def_wanted e₈ : RootPairing (Fin 240) K M N
102+
instance_wanted : (❰e₈❱ K M N).IsReduced
103+
instance_wanted : (❰e₈❱ K M N).IsIrreducible
104+
instance_wanted : (❰e₈❱ K M N).IsValuedIn ℤ
105+
instance_wanted : (❰e₈❱ K M N).IsRootSystem
106+
theorem_wanted e₈_hasCM_e₈ : ∀ bs : (❰e₈❱ K M N).Base, bs.HasCM (CartanMatrix.E 8)
107+
108+
def_wanted f₄ : RootPairing (Fin 48) K M N
109+
instance_wanted : (❰f₄❱ K M N).IsReduced
110+
instance_wanted : (❰f₄❱ K M N).IsIrreducible
111+
instance_wanted : (❰f₄❱ K M N).IsValuedIn ℤ
112+
instance_wanted : (❰f₄❱ K M N).IsRootSystem
113+
theorem_wanted f₄_hasCM_f₄ : ∀ bs : (❰f₄❱ K M N).Base, bs.HasCM CartanMatrix.F₄
114+
115+
def_wanted g₂ : RootPairing (Fin 12) K M N
116+
instance_wanted : (❰g₂❱ K M N).IsReduced
117+
instance_wanted : (❰g₂❱ K M N).IsIrreducible
118+
instance_wanted : (❰g₂❱ K M N).IsValuedIn ℤ
119+
instance_wanted : (❰g₂❱ K M N).IsRootSystem
120+
theorem_wanted g₂_hasCM_g₂ : ∀ bs : (❰g₂❱ K M N).Base, bs.HasCM CartanMatrix.G₂
121+
122+
end RootPairing

0 commit comments

Comments
 (0)