@@ -12,6 +12,7 @@ public import Mathlib.LinearAlgebra.Eigenspace.Matrix
1212public import Mathlib.LinearAlgebra.Eigenspace.Minpoly
1313public import Mathlib.LinearAlgebra.Eigenspace.Semisimple
1414public import Mathlib.LinearAlgebra.Lagrange
15+ public import Mathlib.RingTheory.Flat.Localization
1516
1617/-!
1718# Cartan's criteria
@@ -22,9 +23,9 @@ criterion.
2223
2324## Main results
2425
25- * `LieModule.isNilpotent_derivedSeries_of_traceForm_eq_zero_algClosed `: over an algebraically
26- closed field of characteristic zero, if a finite-dimensional representation `M` of `L` has
27- trivial trace form, then `M` is nilpotent as a `⁅L, L⁆`-module.
26+ * `LieModule.isNilpotent_derivedSeries_of_traceForm_eq_zero `: over a field of characteristic zero,
27+ if a finite-dimensional representation `M` of `L` has trivial trace form, then `M` is nilpotent
28+ as a `⁅L, L⁆`-module.
2829
2930 ## TODO
3031
@@ -37,17 +38,19 @@ criterion.
3738* [ J. Humphreys, *Introduction to Lie Algebras and ...* ] (humphreys1972) Chapter II 4.3
3839 -/
3940
40-
4141namespace LieModule
4242
43- variable {K L M : Type *}
44- [Field K] [CharZero K] [IsAlgClosed K]
43+ variable {R K L M : Type *}
44+ [Field K] [CharZero K]
4545 [LieRing L] [LieAlgebra K L]
4646 [AddCommGroup M] [Module K M] [LieRingModule L M] [LieModule K L M] [FiniteDimensional K M]
47+ [CommRing R] [CharZero R] [IsDomain R]
48+ [LieAlgebra R L] [Module R M] [LieModule R L M] [IsNoetherian R M] [Module.Free R M]
4749
4850local notation "φ" => toEnd K L M
4951
50- open Algebra LieAlgebra LinearMap Module Module.End Polynomial
52+ open Algebra Function LieAlgebra LinearMap Module Module.End Polynomial
53+ open scoped TensorProduct
5154
5255lemma exists_polynomial_eval_sub_aux
5356 {ι R K : Type *} [Finite ι] [CommRing R] [Field K] [Algebra R K]
@@ -63,8 +66,10 @@ lemma exists_polynomial_eval_sub_aux
6366 have heq : (⟨a i, ha i⟩ - ⟨a j, ha j⟩ : E) = ⟨a k, ha k⟩ - ⟨a l, ha l⟩ := Subtype.ext hij
6467 rw [← (algebraMap R K).map_sub, ← (algebraMap R K).map_sub, ← map_sub, ← map_sub, heq]
6568
66- /-- If the trace form of `M` is zero, then the `⁅L, L⁆`-module `M` is nilpotent. -/
67- public theorem isNilpotent_derivedSeries_of_traceForm_eq_zero_algClosed (h : traceForm K L M = 0 ) :
69+ /-- An auxiliary lemma used to prove `LieModule.isNilpotent_derivedSeries_of_traceForm_eq_zero`
70+ which proves the same result except without the algebraically closed assumption. -/
71+ theorem isNilpotent_derivedSeries_of_traceForm_eq_zero_aux [IsAlgClosed K]
72+ (h : traceForm K L M = 0 ) :
6873 IsNilpotent (derivedSeries K L 1 ) M := by
6974 /- By Engel's theorem it suffices to prove that `⁅L, L⁆` acts nilpotently on `M`. -/
7075 suffices ∀ x ∈ derivedSeries K L 1 , _root_.IsNilpotent (φ x) from
@@ -82,7 +87,7 @@ public theorem isNilpotent_derivedSeries_of_traceForm_eq_zero_algClosed (h : tra
8287 s.eigenspaces_iSupIndep hs_ss.iSup_eigenspace_eq_top
8388 let I := (ν : K) × Fin (finrank K (s.eigenspace ν))
8489 let v : Basis I K M := eigenDecomp.collectedBasis fun μ ↦ finBasis K (s.eigenspace μ)
85- have : Fintype I := v.fintypeIndexOfRankLtAleph0 (rank_lt_aleph0 K M)
90+ have : Fintype I := FiniteDimensional.fintypeBasisIndex v
8691 let μ : I → K := Sigma.fst
8792 have hsv (i : I) : s (v i) = μ i • v i :=
8893 mem_eigenspace_iff.mp (eigenDecomp.collectedBasis_mem _ i)
@@ -160,4 +165,23 @@ public theorem isNilpotent_derivedSeries_of_traceForm_eq_zero_algClosed (h : tra
160165 exact Finset.sum_congr rfl <| by simp [toMatrix_apply, hyv, hsv]
161166 rw [hX_ns, add_mul, map_add, htr_n, htr_s, zero_add]
162167
168+ /-- If the trace form of `M` is zero, then the `⁅L, L⁆`-module `M` is nilpotent. -/
169+ public theorem isNilpotent_derivedSeries_of_traceForm_eq_zero (h : traceForm R L M = 0 ) :
170+ IsNilpotent (derivedSeries R L 1 ) M := by
171+ set A := AlgebraicClosure (FractionRing R)
172+ have _i : FaithfulSMul R A := FaithfulSMul.trans R (FractionRing R) A
173+ have nilp_ext : IsNilpotent (derivedSeries A (A ⊗[R] L) 1 ) (A ⊗[R] M) :=
174+ isNilpotent_derivedSeries_of_traceForm_eq_zero_aux <| by simpa
175+ rw [isNilpotent_iff_forall' (R := R)]
176+ rw [isNilpotent_iff_forall' (R := A)] at nilp_ext
177+ intro ⟨x, hx⟩
178+ have hx_ext : 1 ⊗ₜ[R] x ∈ derivedSeries A (A ⊗[R] L) 1 := by
179+ rw [derivedSeries_baseChange]
180+ exact Submodule.tmul_mem_baseChange_of_mem 1 hx
181+ have hbc_inj : Injective (End.baseChangeHom R A M) := LinearMap.baseChangeHom_injective R M A
182+ have aux : (toEnd R (derivedSeries R L 1 ) M ⟨x, hx⟩).baseChangeHom R A M =
183+ (toEnd R L M x).baseChange A := rfl
184+ rw [← IsNilpotent.map_iff hbc_inj, aux, ← toEnd_baseChange]
185+ exact nilp_ext ⟨_, hx_ext⟩
186+
163187end LieModule
0 commit comments