|
| 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