-
Notifications
You must be signed in to change notification settings - Fork 892
[Merged by Bors] - feat(Algebra/Lie): prove derivations are inner in finite-dimensional Killing Lie algebra #12250
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
@frederic-marbach Thanks for doing this. I added a commit because I realised that new lemma you proposed I'm out of time for today so I'll have to finish reviewing tomorrow. |
Co-authored-by: Oliver Nash <github@olivernash.org>
Also some minor tweaks to Lie theory
This should be helpful as I recently added some facts connecting `LieAlgebra.IsKilling` with `LinearMap.BilinForm.Nondegenerate`
|
I thought about this PR quite a bit today and I have some remarks:
With all that in mind I tried to work out what was the core result and I learned (from your code!) that seems to be that if |
|
So here's what I suggest: variable (R L : Type*) [Field R] [LieRing L] [LieAlgebra R L] [Module.Finite R L]
/-- A local notation for the set of (Lie) derivations on `L`. -/
local notation "𝔻" => (LieDerivation R L L)
-- /-- A local notation for the ideal range of `ad`. -/
-- local notation "𝕀" => LieHom.idealRange (ad R L)
-- /-- A local notation for the Killing complement of the ideal range of `ad`. -/
-- local notation "𝕀ᗮ" => LieIdeal.killingCompl R 𝔻 𝕀
lemma killingForm_restrict_range_ad :
(killingForm R 𝔻).restrict (ad R L).range = killingForm R (ad R L).range := by
rw [← (ad_isIdealMorphism R L).eq, ← LieIdeal.killingForm_eq]
rfl
variable {R L}
-- This is really the key result
lemma ad_mem_orthogonal_of_mem_orthogonal
{D : LieDerivation R L L} (hD : D ∈ (killingForm R 𝔻).orthogonal (ad R L).range) (x : L) :
ad R L (D x) ∈ (killingForm R 𝔻).orthogonal (ad R L).range := by
have : (killingForm R 𝔻).orthogonal (ad R L).range = (ad R L).idealRange.killingCompl := by
simp [← (ad_isIdealMorphism R L).eq]
rw [this] at hD ⊢
rw [← lie_der_ad_eq_ad_der]
exact lie_mem_left _ _ (ad R L).idealRange.killingCompl _ _ hD
lemma add_mem_ker_killingForm_ad_range_of_mem_orthogonal
{D : LieDerivation R L L} (hD : D ∈ (killingForm R 𝔻).orthogonal (ad R L).range) (x : L) :
ad R L (D x) ∈ (LinearMap.ker <| killingForm R (ad R L).range).map (ad R L).range.subtype := by
rw [← killingForm_restrict_range_ad]
exact LinearMap.BilinForm.inf_orthogonal_self_le_ker_restrict
(LieModule.traceForm_isSymm R 𝔻 𝔻).isRefl ⟨by simp, ad_mem_orthogonal_of_mem_orthogonal hD x⟩
variable (R L)
variable [LieAlgebra.IsKilling R L]
@[simp] lemma ad_apply_eq_zero_iff (x : L) : ad R L x = 0 ↔ x = 0 := by
refine ⟨fun h ↦ ?_, fun h ↦ by simp [h]⟩
rwa [← LieHom.mem_ker, ad_ker_eq_center, LieAlgebra.center_eq_bot_of_semisimple,
LieSubmodule.mem_bot] at h
instance instIsKilling_range_ad : LieAlgebra.IsKilling R (ad R L).range :=
(LieEquiv.ofInjective (ad R L) (injective_ad_of_center_eq_bot <| by simp)).isKilling
lemma killingForm_restrict_range_ad_nondegenerate :
((killingForm R 𝔻).restrict (ad R L).range).Nondegenerate :=
killingForm_restrict_range_ad R L ▸ LieAlgebra.IsKilling.killingForm_nondegenerate R _
lemma range_ad_eq_top : (ad R L).range = ⊤ := by
rw [← LieSubalgebra.coe_to_submodule_eq_iff]
apply LinearMap.BilinForm.eq_top_of_restrict_nondegenerate_of_orthogonal_eq_bot
(LieModule.traceForm_isSymm R 𝔻 𝔻).isRefl (killingForm_restrict_range_ad_nondegenerate R L)
refine (Submodule.eq_bot_iff _).mpr fun D hD ↦ ext fun x ↦ ?_
simpa using add_mem_ker_killingForm_ad_range_of_mem_orthogonal hD x
lemma exists_eq_ad (D : 𝔻) : ∃ x, ad R L x = D := by
change D ∈ (ad R L).range
rw [range_ad_eq_top R L]
exact Submodule.mem_topI've been too lazy to add comments or to use the local notation though both would be good. What do you think? |
|
I applied your suggestions, with local notations and (some) comments. I have a few questions:
|
Yes, we should keep both.
It could be generalised if we had a typeclass
Good point, I think we should drop this now.
Yes, probably |
ocfnash
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for doing this, I learned the proof from your work!
I think this is ready to be merged but I'm going to ask for another reviewer to take a look because the PR now contains a mixture of your work and mine.
|
Thanks. I fixed the typo, renamed the file, and removed my useless lemma. |
jcommelin
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks. Very nice work! Two mini comments
bors d+
|
✌️ frederic-marbach can now approve this pull request. To approve and merge a pull request, simply reply with |
Co-authored-by: Johan Commelin <johan@commelin.net>
|
bors r+ |
…Killing Lie algebra (#12250) This finishes the proof that all derivations in a finite-dimensional Lie algebra with non-degenerate Killing form are inner derivations, a project discussed in [this thread](https://leanprover.zulipchat.com/#narrow/stream/287929-mathlib4/topic/Derivations.20on.20Lie.20algebras) with @ocfnash. Co-authored-by: Oliver Nash <github@olivernash.org>
|
Pull request successfully merged into master. Build succeeded: |
…Killing Lie algebra (#12250) This finishes the proof that all derivations in a finite-dimensional Lie algebra with non-degenerate Killing form are inner derivations, a project discussed in [this thread](https://leanprover.zulipchat.com/#narrow/stream/287929-mathlib4/topic/Derivations.20on.20Lie.20algebras) with @ocfnash. Co-authored-by: Oliver Nash <github@olivernash.org>
…Killing Lie algebra (#12250) This finishes the proof that all derivations in a finite-dimensional Lie algebra with non-degenerate Killing form are inner derivations, a project discussed in [this thread](https://leanprover.zulipchat.com/#narrow/stream/287929-mathlib4/topic/Derivations.20on.20Lie.20algebras) with @ocfnash. Co-authored-by: Oliver Nash <github@olivernash.org>
…Killing Lie algebra (#12250) This finishes the proof that all derivations in a finite-dimensional Lie algebra with non-degenerate Killing form are inner derivations, a project discussed in [this thread](https://leanprover.zulipchat.com/#narrow/stream/287929-mathlib4/topic/Derivations.20on.20Lie.20algebras) with @ocfnash. Co-authored-by: Oliver Nash <github@olivernash.org>
This finishes the proof that all derivations in a finite-dimensional Lie algebra with non-degenerate Killing form are inner derivations, a project discussed in this thread with @ocfnash.
I am particularly open to design remarks or suggestions. More specifically, here are some points of which I doubt:
Killing.leanfile for a hacky coercion I could not figure my way out otherwise.