@@ -17,19 +17,20 @@ Weyl-group-invariant submodules of the corresponding root system. In this file w
1717and `LieAlgebra.IsKilling.invtSubmoduleToLieIdeal`, which constructs the ideal associated to an
1818invariant submodule.
1919
20- As of Mar 2026, the proofs that these maps are part of an order isomorphism is still pending.
21-
2220## Main definitions
2321* `LieIdeal.rootSet`: the set of roots whose root space is contained in a given Lie ideal.
2422* `LieIdeal.rootSpan`: the submodule of `Dual K H` spanned by `LieIdeal.rootSet`.
2523* `LieIdeal.toInvtRootSubmodule`: the invariant root submodule associated to an ideal.
2624* `LieAlgebra.IsKilling.invtSubmoduleToLieIdeal`: constructs a Lie ideal from an invariant
27- submodule of the dual space
25+ submodule of the dual space.
26+ * `LieAlgebra.IsKilling.lieIdealOrderIso`: the order isomorphism between Lie ideals and
27+ invariant root submodules.
2828
2929 ## Main results
3030* `LieAlgebra.IsKilling.restr_inf_cartan_eq_iSup_corootSubmodule`: the intersection of a Lie ideal
3131 and a Cartan subalgebra is the span of the coroots whose roots have root spaces in the ideal.
32- * `LieAlgebra.IsKilling.instIsIrreducible`: the root system of a simple Lie algebra is irreducible
32+ * `LieAlgebra.IsKilling.isSimple_iff_isIrreducible`: a Killing Lie algebra is simple if and only
33+ if its root system is irreducible.
3334 -/
3435
3536@[expose] public section
@@ -500,84 +501,63 @@ lemma mem_rootSet_invtSubmoduleToLieIdeal (q : Submodule K (Dual K H))
500501 le_iSup_of_le ⟨↑α, hα, H.isNonZero_coe_root α⟩ le_rfl
501502 _ = J.restr H := (restr_invtSubmoduleToLieIdeal_eq_iSup q hq).symm
502503
503- open LieSubmodule in
504- @[simp] lemma invtSubmoduleToLieIdeal_top :
505- invtSubmoduleToLieIdeal (⊤ : Submodule K (Module.Dual K H)) (by simp) = ⊤ := by
506- simp_rw [← toSubmodule_inj, coe_invtSubmoduleToLieIdeal_eq_iSup, iSup_toSubmodule,
507- top_toSubmodule, iSup_toSubmodule_eq_top, eq_top_iff, ← cartan_sup_iSup_rootSpace_eq_top H,
508- iSup_subtype, Submodule.mem_top, true_and, sup_le_iff, iSup_le_iff, sl2SubmoduleOfRoot_eq_sup]
509- refine ⟨?_, fun α hα ↦ le_iSup₂_of_le α hα <| le_sup_of_le_left <| le_sup_of_le_left <| le_refl _⟩
510- suffices H.toLieSubmodule ≤ ⨆ α : Weight K H L, ⨆ (_ : α.IsNonZero), corootSubmodule α from
511- this.trans <| iSup₂_mono fun α hα ↦ le_sup_right
512- simp
513-
514- @[simp] lemma invtSubmoduleToLieIdeal_apply_eq_top_iff (q : Submodule K (Dual K H))
515- (hq : ∀ i, q ∈ End.invtSubmodule ((rootSystem H).reflection i).toLinearMap) :
516- invtSubmoduleToLieIdeal q hq = ⊤ ↔ q = ⊤ := by
517- refine ⟨fun h ↦ ?_, fun h ↦ by simp [h]⟩
518- have h : (⨆ α : {α : Weight K H L // ↑α ∈ q ∧ α.IsNonZero}, sl2SubmoduleOfRoot α.2 .2 ) = ⊤ := by
519- rw [← LieSubmodule.toSubmodule_inj] at h
520- have := coe_invtSubmoduleToLieIdeal_eq_iSup q hq
521- exact (LieSubmodule.toSubmodule_eq_top (⨆ α, sl2SubmoduleOfRoot α.property.right)).mp h
522- by_contra hq_ne_top
523- have h_ne_bot : q.dualCoannihilator ≠ ⊥ := by
524- contrapose! hq_ne_top
525- have := Subspace.finrank_add_finrank_dualCoannihilator_eq q
526- rw [hq_ne_top, finrank_bot, add_zero] at this
527- exact Submodule.eq_top_of_finrank_eq (this.trans Subspace.dual_finrank_eq.symm)
528- obtain ⟨y, hy_mem, hy_ne_zero⟩ := Submodule.exists_mem_ne_zero_of_ne_bot h_ne_bot
529- have hy_ortho : ∀ f ∈ q, f y = 0 := (Submodule.mem_dualCoannihilator y).mp hy_mem
530- have h_comm : ∀ α : {α : Weight K H L // ↑α ∈ q ∧ α.IsNonZero},
531- ∀ z ∈ sl2SubmoduleOfRoot α.2 .2 , ⁅(y : L), z⁆ = 0 := fun α z hz => by
532- have hy : (α.1 : H → K) y = 0 := hy_ortho _ α.2 .1
533- rw [sl2SubmoduleOfRoot_eq_sup] at hz
534- obtain ⟨z_αneg, hz_αneg, z_cor, ⟨h_cor, _, rfl⟩, rfl⟩ := Submodule.mem_sup.mp hz
535- obtain ⟨z_α, hz_α, z_negα, hz_negα, rfl⟩ := Submodule.mem_sup.mp hz_αneg
536- simp only [lie_add, ← LieSubalgebra.coe_bracket_of_module]
537- rw [lie_eq_smul_of_mem_rootSpace hz_α, hy, zero_smul, zero_add,
538- lie_eq_smul_of_mem_rootSpace hz_negα, Pi.neg_apply, hy, neg_zero, zero_smul, zero_add]
539- have h_cor_in_zero : (h_cor : L) ∈ rootSpace H (0 : H → K) := by
540- rw [rootSpace_zero_eq]; exact h_cor.property
541- convert lie_eq_smul_of_mem_rootSpace h_cor_in_zero y using 1 ; simp
542- have h_comm_all : ∀ z : L, ⁅(y : L), z⁆ = 0 := fun z => by
543- have hz : z ∈ ⨆ α : {α : Weight K H L // ↑α ∈ q ∧ α.IsNonZero},
544- (sl2SubmoduleOfRoot α.2 .2 ).toSubmodule := by
545- convert Submodule.mem_top using 1
546- rw [← LieSubmodule.iSup_toSubmodule, h]; rfl
547- rw [Submodule.mem_iSup] at hz
548- exact hz (LinearMap.ker (ad K L y)) fun α z hz => by simpa using h_comm α z hz
549- have h_y_center : (y : L) ∈ LieAlgebra.center K L := fun z => by
550- rw [← lie_skew, h_comm_all, neg_zero]
551- simp only [center_eq_bot, LieSubmodule.mem_bot, ZeroMemClass.coe_eq_zero] at h_y_center
552- exact hy_ne_zero h_y_center
553-
554- @[simp] lemma invtSubmoduleToLieIdeal_apply_eq_bot_iff (q : Submodule K (Module.Dual K H))
555- (hq : ∀ i, q ∈ Module.End.invtSubmodule ((rootSystem H).reflection i).toLinearMap) :
556- invtSubmoduleToLieIdeal q hq = ⊥ ↔ q = ⊥ := by
557- refine ⟨fun h => ?_, fun h => ?_⟩
558- · by_contra hq_nonzero
559- have hq_invt : q ∈ (rootSystem H).invtRootSubmodule := by
560- rw [RootPairing.mem_invtRootSubmodule_iff]; exact hq
561- have h_ne_bot : (⟨q, hq_invt⟩ : (rootSystem H).invtRootSubmodule) ≠ ⊥ :=
562- fun h_eq => hq_nonzero (Subtype.ext_iff.mp h_eq)
563- rw [Ne, RootPairing.invtRootSubmodule.eq_bot_iff, not_forall] at h_ne_bot
564- obtain ⟨i, hi⟩ := h_ne_bot
565- rw [not_not] at hi
566- have hα₀ : i.val.IsNonZero := (Finset.mem_filter.mp i.property).2
567- have h_sl2_le : (sl2SubmoduleOfRoot hα₀ : Submodule K L) ≤ invtSubmoduleToLieIdeal q hq := by
568- rw [LieIdeal.toLieSubalgebra_toSubmodule, coe_invtSubmoduleToLieIdeal_eq_iSup,
569- LieSubmodule.iSup_toSubmodule]
570- exact le_iSup_of_le ⟨i.val, hi, hα₀⟩ le_rfl
571- rw [h] at h_sl2_le
572- simp only [LieIdeal.toLieSubalgebra_toSubmodule, LieSubmodule.bot_toSubmodule, le_bot_iff,
573- LieSubmodule.toSubmodule_eq_bot] at h_sl2_le
574- exact sl2SubmoduleOfRoot_ne_bot i.1 hα₀ h_sl2_le
575- · simp [h, invtSubmoduleToLieIdeal]
576-
577- instance [IsSimple K L] : (rootSystem H).IsIrreducible := by
578- have _i := nontrivial_of_isIrreducible K L L
579- exact RootPairing.IsIrreducible.mk' (rootSystem H) <| fun q h₀ h₁ ↦ by
580- have := IsSimple.eq_bot_or_eq_top (invtSubmoduleToLieIdeal q h₀)
581- aesop
504+ @[gcongr]
505+ lemma invtSubmoduleToLieIdeal_mono {q₁ q₂ : Submodule K (Dual K H)}
506+ (hq₁ : ∀ i, q₁ ∈ End.invtSubmodule ((rootSystem H).reflection i).toLinearMap)
507+ (hq₂ : ∀ i, q₂ ∈ End.invtSubmodule ((rootSystem H).reflection i).toLinearMap)
508+ (h : q₁ ≤ q₂) :
509+ invtSubmoduleToLieIdeal q₁ hq₁ ≤ invtSubmoduleToLieIdeal q₂ hq₂ := by
510+ change (invtSubmoduleToLieIdeal q₁ hq₁).restr H ≤ (invtSubmoduleToLieIdeal q₂ hq₂).restr H
511+ exact iSup_le fun ⟨α, hα_mem, hα_nz⟩ ↦ le_iSup_of_le ⟨α, h hα_mem, hα_nz⟩ le_rfl
512+
513+ lemma lieIdealOrderIso_left_inv (I : LieIdeal K L)
514+ (hI : ∀ α, I.rootSpan ∈ End.invtSubmodule ((rootSystem H).reflection α).toLinearMap :=
515+ (rootSystem H).mem_invtRootSubmodule_iff.mp I.rootSpan_mem_invtRootSubmodule) :
516+ invtSubmoduleToLieIdeal I.rootSpan hI = I := by
517+ set J := invtSubmoduleToLieIdeal I.rootSpan
518+ ((rootSystem H).mem_invtRootSubmodule_iff.mp I.rootSpan_mem_invtRootSubmodule)
519+ have h_eq : ∀ α : H.root, α ∈ J.rootSet ↔ α ∈ I.rootSet := fun α ↦ by
520+ rw [mem_rootSet_invtSubmoduleToLieIdeal, rootSystem_root_apply]
521+ exact ⟨I.mem_rootSet_of_mem_rootSpan, fun h ↦ Submodule.subset_span ⟨α, h, rfl⟩⟩
522+ have h_restr : J.restr H = I.restr H := by
523+ rw [J.restr_eq_iSup_sl2SubmoduleOfRoot, I.restr_eq_iSup_sl2SubmoduleOfRoot]
524+ exact le_antisymm
525+ (iSup₂_le fun α hα ↦ le_iSup₂_of_le α ((h_eq α).1 hα) le_rfl)
526+ (iSup₂_le fun α hα ↦ le_iSup₂_of_le α ((h_eq α).2 hα) le_rfl)
527+ rw [← LieSubmodule.toSubmodule_inj, ← LieSubmodule.restr_toSubmodule J H,
528+ ← LieSubmodule.restr_toSubmodule I H, h_restr]
529+
530+ lemma lieIdealOrderIso_right_inv (q : (rootSystem H).invtRootSubmodule)
531+ (hq : ∀ α, ↑q ∈ End.invtSubmodule ((rootSystem H).reflection α).toLinearMap :=
532+ (rootSystem H).mem_invtRootSubmodule_iff.mp q.property) :
533+ (invtSubmoduleToLieIdeal q.1 hq).toInvtRootSubmodule = q := by
534+ simp only [Subtype.ext_iff, LieIdeal.toInvtRootSubmodule, LieIdeal.rootSpan, LieIdeal.rootSet]
535+ conv_rhs => rw [RootPairing.invtRootSubmodule.eq_span_root q]
536+ congr 2 ; ext α
537+ exact mem_rootSet_invtSubmoduleToLieIdeal _ _
538+
539+ variable (H) in
540+ /-- The order isomorphism between Lie ideals and invariant root submodules. -/
541+ noncomputable def lieIdealOrderIso :
542+ LieIdeal K L ≃o (rootSystem H).invtRootSubmodule where
543+ toFun := LieIdeal.toInvtRootSubmodule
544+ invFun q := invtSubmoduleToLieIdeal q.1 ((rootSystem H).mem_invtRootSubmodule_iff.mp q.2 )
545+ left_inv := lieIdealOrderIso_left_inv
546+ right_inv := lieIdealOrderIso_right_inv
547+ map_rel_iff' {I J} := by
548+ refine ⟨fun h ↦ ?_, LieIdeal.toInvtRootSubmodule_mono⟩
549+ rw [← lieIdealOrderIso_left_inv (H := H) I, ← lieIdealOrderIso_left_inv (H := H) J]
550+ exact invtSubmoduleToLieIdeal_mono _ _ h
551+
552+ /-- A Killing Lie algebra is simple if and only if its root system is irreducible. -/
553+ theorem isSimple_iff_isIrreducible : (rootSystem H).IsIrreducible ↔ IsSimple K L := by
554+ nontriviality L
555+ have hL : ¬ IsLieAbelian L :=
556+ (isLieAbelian_iff_subsingleton K (L := L)).not.mpr (not_subsingleton L)
557+ rw [RootPairing.isIrreducible_iff_invtRootSubmodule, ← isSimple_iff_of_not_isLieAbelian K L hL,
558+ (lieIdealOrderIso H).isSimpleOrder_iff]
559+
560+ instance [IsSimple K L] : (rootSystem H).IsIrreducible :=
561+ isSimple_iff_isIrreducible.mpr ‹_›
582562
583563end LieAlgebra.IsKilling
0 commit comments