Skip to content

Commit 5b4a8ff

Browse files
committed
feat(Algebra/Lie): Killing Lie algebras are semisimple (#13265)
1 parent 9220d10 commit 5b4a8ff

File tree

2 files changed

+35
-20
lines changed

2 files changed

+35
-20
lines changed

Mathlib/Algebra/Lie/Killing.lean

Lines changed: 27 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ Copyright (c) 2023 Oliver Nash. All rights reserved.
33
Released under Apache 2.0 license as described in the file LICENSE.
44
Authors: Oliver Nash
55
-/
6+
import Mathlib.Algebra.Lie.InvariantForm
67
import Mathlib.Algebra.Lie.Semisimple.Basic
78
import Mathlib.Algebra.Lie.TraceForm
89

@@ -22,19 +23,22 @@ non-degenerate Killing form.
2223
2324
This file contains basic definitions and results for such Lie algebras.
2425
25-
## Main definitions
26+
## Main declarations
27+
2628
* `LieAlgebra.IsKilling`: a typeclass encoding the fact that a Lie algebra has a non-singular
2729
Killing form.
28-
* `LieAlgebra.IsKilling.instHasTrivialRadical`: if a Lie algebra has non-singular Killing form
29-
then it has trivial radical.
30+
* `LieAlgebra.IsKilling.instSemisimple`: if a finite-dimensional Lie algebra over a field
31+
has non-singular Killing form then it is semisimple.
32+
* `LieAlgebra.IsKilling.instHasTrivialRadical`: if a Lie algebra over a PID
33+
has non-singular Killing form then it has trivial radical.
3034
3135
## TODO
3236
3337
* Prove that in characteristic zero, a semisimple Lie algebra has non-singular Killing form.
3438
3539
-/
3640

37-
variable (R L M : Type*) [CommRing R] [LieRing L] [LieAlgebra R L]
41+
variable (R K L M : Type*) [CommRing R] [Field K] [LieRing L] [LieAlgebra R L] [LieAlgebra K L]
3842

3943
namespace LieAlgebra
4044

@@ -60,13 +64,28 @@ lemma killingForm_nondegenerate :
6064
(killingForm R L).Nondegenerate := by
6165
simp [LinearMap.BilinForm.nondegenerate_iff_ker_eq_bot]
6266

63-
/-- The converse of this is true over a field of characteristic zero. There are counterexamples
64-
over fields with positive characteristic. -/
65-
instance instHasTrivialRadical [IsDomain R] [IsPrincipalIdealRing R] : HasTrivialRadical R L := by
66-
refine (hasTrivialRadical_iff_no_abelian_ideals R L).mpr fun I hI ↦ ?_
67+
variable {R L} in
68+
lemma ideal_eq_bot_of_isLieAbelian [IsDomain R] [IsPrincipalIdealRing R]
69+
(I : LieIdeal R L) [IsLieAbelian I] : I = ⊥ := by
6770
rw [eq_bot_iff, ← killingCompl_top_eq_bot]
6871
exact I.le_killingCompl_top_of_isLieAbelian
6972

73+
instance instSemisimple [IsKilling K L] [Module.Finite K L] : IsSemisimple K L := by
74+
apply InvariantForm.isSemisimple_of_nondegenerate (Φ := killingForm K L)
75+
· exact IsKilling.killingForm_nondegenerate _ _
76+
· exact LieModule.traceForm_lieInvariant _ _ _
77+
· exact (LieModule.traceForm_isSymm K L L).isRefl
78+
· intro I h₁ h₂
79+
exact h₁.1 <| IsKilling.ideal_eq_bot_of_isLieAbelian I
80+
81+
/-- The converse of this is true over a field of characteristic zero. There are counterexamples
82+
over fields with positive characteristic.
83+
84+
Note that when the coefficients are a field this instance is redundant since we have
85+
`LieAlgebra.IsKilling.instSemisimple` and `LieAlgebra.IsSemisimple.instHasTrivialRadical`. -/
86+
instance instHasTrivialRadical [IsDomain R] [IsPrincipalIdealRing R] : HasTrivialRadical R L :=
87+
(hasTrivialRadical_iff_no_abelian_ideals R L).mpr IsKilling.ideal_eq_bot_of_isLieAbelian
88+
7089
end IsKilling
7190

7291
section LieEquiv

Mathlib/Algebra/Lie/TraceForm.lean

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,12 @@ Copyright (c) 2023 Oliver Nash. All rights reserved.
33
Released under Apache 2.0 license as described in the file LICENSE.
44
Authors: Oliver Nash
55
-/
6-
import Mathlib.LinearAlgebra.PID
76
import Mathlib.Algebra.DirectSum.LinearMap
8-
import Mathlib.FieldTheory.IsAlgClosed.AlgebraicClosure
9-
import Mathlib.LinearAlgebra.BilinearForm.Orthogonal
7+
import Mathlib.Algebra.Lie.InvariantForm
108
import Mathlib.Algebra.Lie.Weights.Cartan
119
import Mathlib.Algebra.Lie.Weights.Linear
10+
import Mathlib.FieldTheory.IsAlgClosed.AlgebraicClosure
11+
import Mathlib.LinearAlgebra.PID
1212

1313
/-!
1414
# The trace and Killing forms of a Lie algebra.
@@ -85,6 +85,10 @@ lemma traceForm_apply_lie_apply' (x y z : L) :
8585
= - traceForm R L M ⁅y, x⁆ z := by rw [← lie_skew x y, map_neg, LinearMap.neg_apply]
8686
_ = - traceForm R L M y ⁅x, z⁆ := by rw [traceForm_apply_lie_apply]
8787

88+
lemma traceForm_lieInvariant : (traceForm R L M).lieInvariant L := by
89+
intro x y z
90+
rw [← lie_skew, map_neg, LinearMap.neg_apply, LieModule.traceForm_apply_lie_apply R L M]
91+
8892
/-- This lemma justifies the terminology "invariant" for trace forms. -/
8993
@[simp] lemma lie_traceForm_eq_zero (x : L) : ⁅x, traceForm R L M⁆ = 0 := by
9094
ext y z
@@ -344,15 +348,7 @@ variable (I : LieIdeal R L)
344348

345349
/-- The orthogonal complement of an ideal with respect to the killing form is an ideal. -/
346350
noncomputable def killingCompl : LieIdeal R L :=
347-
{ __ := (killingForm R L).orthogonal I.toSubmodule
348-
lie_mem := by
349-
intro x y hy
350-
simp only [AddSubsemigroup.mem_carrier, AddSubmonoid.mem_toSubsemigroup,
351-
Submodule.mem_toAddSubmonoid, LinearMap.BilinForm.mem_orthogonal_iff,
352-
LieSubmodule.mem_coeSubmodule, LinearMap.BilinForm.IsOrtho]
353-
intro z hz
354-
rw [← LieModule.traceForm_apply_lie_apply]
355-
exact hy _ <| lie_mem_left _ _ _ _ _ hz }
351+
LieAlgebra.InvariantForm.orthogonal (killingForm R L) (LieModule.traceForm_lieInvariant R L L) I
356352

357353
@[simp] lemma toSubmodule_killingCompl :
358354
LieSubmodule.toSubmodule I.killingCompl = (killingForm R L).orthogonal I.toSubmodule :=

0 commit comments

Comments
 (0)