Skip to content

Commit 499b544

Browse files
committed
feat: prove invtSubmoduleToLieIdeal_top (leanprover-community#33271)
Co-authored-by: Janos Wolosz <janos.wolosz@gmail.com>
1 parent 64b2717 commit 499b544

3 files changed

Lines changed: 51 additions & 0 deletions

File tree

Mathlib/Algebra/Lie/Weights/Cartan.lean

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -286,4 +286,20 @@ lemma mem_corootSpace' {x : H} :
286286
(rootSpaceProduct R L H α (-α) 0 (add_neg_cancel α) (⟨y, hy⟩ ⊗ₜ[R] ⟨z, hz⟩)).property using 0
287287
simp [hyz]
288288

289+
section FiniteDimensional
290+
291+
variable {K : Type*} [Field K] [LieAlgebra K L]
292+
variable [FiniteDimensional K L] (H : LieSubalgebra K L) [H.IsCartanSubalgebra]
293+
variable [LieModule.IsTriangularizable K H L]
294+
295+
lemma cartan_sup_iSup_rootSpace_eq_top :
296+
H.toLieSubmodule ⊔ ⨆ α : Weight K H L, ⨆ (_ : α.IsNonZero), rootSpace H α = ⊤ := by
297+
rw [eq_top_iff, ← LieModule.iSup_genWeightSpace_eq_top', iSup_le_iff]
298+
intro α
299+
by_cases hα : α.IsZero
300+
· simp [hα]
301+
· exact le_sup_of_le_right <| le_iSup₂_of_le α hα (le_refl _)
302+
303+
end FiniteDimensional
304+
289305
end LieAlgebra

Mathlib/Algebra/Lie/Weights/IsSimple.lean

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -260,6 +260,23 @@ noncomputable def invtSubmoduleToLieIdeal (q : Submodule K (Dual K H))
260260
simp only [add_lie, Submodule.carrier_eq_coe, SetLike.mem_coe] at ih₁ ih₂ ⊢
261261
exact add_mem ih₁ ih₂
262262

263+
@[simp] lemma coe_invtSubmoduleToLieIdeal_eq_iSup (q : Submodule K (Dual K H))
264+
(hq : ∀ i, q ∈ End.invtSubmodule ((rootSystem H).reflection i).toLinearMap) :
265+
(invtSubmoduleToLieIdeal q hq).toSubmodule =
266+
⨆ α : {α : Weight K H L // ↑α ∈ q ∧ α.IsNonZero}, sl2SubmoduleOfRoot α.2.2 :=
267+
rfl
268+
269+
open LieSubmodule in
270+
@[simp] lemma invtSubmoduleToLieIdeal_top :
271+
invtSubmoduleToLieIdeal (⊤ : Submodule K (Module.Dual K H)) (by simp) = ⊤ := by
272+
simp_rw [← toSubmodule_inj, coe_invtSubmoduleToLieIdeal_eq_iSup, iSup_toSubmodule,
273+
top_toSubmodule, iSup_toSubmodule_eq_top, eq_top_iff, ← cartan_sup_iSup_rootSpace_eq_top H,
274+
iSup_subtype, Submodule.mem_top, true_and, sup_le_iff, iSup_le_iff, sl2SubmoduleOfRoot_eq_sup]
275+
refine ⟨?_, fun α hα ↦ le_iSup₂_of_le α hα <| le_sup_of_le_left <| le_sup_of_le_left <| le_refl _⟩
276+
suffices H.toLieSubmodule ≤ ⨆ α : Weight K H L, ⨆ (_ : α.IsNonZero), corootSubmodule α from
277+
this.trans <| iSup₂_mono fun α hα ↦ le_sup_right
278+
simp
279+
263280
section IsSimple
264281

265282
variable [IsSimple K L]

Mathlib/Algebra/Lie/Weights/RootSystem.lean

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -415,6 +415,24 @@ lemma corootForm_rootSystem_eq_killing :
415415
@[simp] lemma rootSystem_root_apply (α) : (rootSystem H).root α = α := rfl
416416
@[simp] lemma rootSystem_coroot_apply (α) : (rootSystem H).coroot α = coroot α := rfl
417417

418+
open LieSubmodule in
419+
@[simp]
420+
lemma biSup_corootSpace_eq_top :
421+
⨆ α : Weight K H L, ⨆ (_ : α.IsNonZero), corootSpace α = ⊤ := by
422+
simp only [← toSubmodule_inj, top_toSubmodule, iSup_toSubmodule,
423+
← RootPairing.IsRootSystem.span_coroot_eq_top (P := rootSystem H),
424+
coe_corootSpace_eq_span_singleton, Submodule.iSup_span]
425+
congr
426+
ext α
427+
simp [eq_comm]
428+
429+
@[simp]
430+
lemma biSup_corootSubmodule_eq_cartan :
431+
⨆ α : Weight K H L, ⨆ (_ : α.IsNonZero), corootSubmodule α = H.toLieSubmodule := by
432+
suffices ⨆ α : Weight K H L, ⨆ (_ : α.IsNonZero), corootSpace α = ⊤ from
433+
le_antisymm (by simp) (by simp [← LieSubmodule.map_iSup, this])
434+
simp
435+
418436
instance : (rootSystem H).IsCrystallographic where
419437
exists_value α β :=
420438
⟨chainBotCoeff β.1 α.1 - chainTopCoeff β.1 α.1, by simp [apply_coroot_eq_cast β.1 α.1]⟩

0 commit comments

Comments
 (0)