-
Notifications
You must be signed in to change notification settings - Fork 297
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat(algebra/universal_enveloping_algebra): construction of universal…
… enveloping algebra and its universal property (#4041) ## Main definitions * `universal_enveloping_algebra` * `universal_enveloping_algebra.algebra` * `universal_enveloping_algebra.lift` * `universal_enveloping_algebra.ι_comp_lift` * `universal_enveloping_algebra.lift_unique` * `universal_enveloping_algebra.hom_ext` Co-authored-by: Eric Wieser <wieser.eric@gmail.com>
- Loading branch information
1 parent
3ebee15
commit d0b5947
Showing
4 changed files
with
130 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,119 @@ | ||
/- | ||
Copyright (c) 2020 Oliver Nash. All rights reserved. | ||
Released under Apache 2.0 license as described in the file LICENSE. | ||
Authors: Oliver Nash | ||
-/ | ||
import algebra.lie_algebra | ||
import algebra.ring_quot | ||
import linear_algebra.tensor_algebra | ||
|
||
/-! | ||
# Universal enveloping algebra | ||
Given a commutative ring `R` and a Lie algebra `L` over `R`, we construct the universal | ||
enveloping algebra of `L`, together with its universal property. | ||
## Main definitions | ||
* `universal_enveloping_algebra`: the universal enveloping algebra, endowed with an | ||
`R`-algebra structure. | ||
* `universal_enveloping_algebra.ι`: the Lie algebra morphism from `L` to its universal | ||
enveloping algebra. | ||
* `universal_enveloping_algebra.lift`: given an associative algebra `A`, together with a Lie | ||
algebra morphism `f : L →ₗ⁅R⁆ A`, `lift R L f : universal_enveloping_algebra R L →ₐ[R] A` is the | ||
unique morphism of algebras through which `f` factors. | ||
* `universal_enveloping_algebra.ι_comp_lift`: states that the lift of a morphism is indeed part | ||
of a factorisation. | ||
* `universal_enveloping_algebra.lift_unique`: states that lifts of morphisms are indeed unique. | ||
* `universal_enveloping_algebra.hom_ext`: a restatement of `lift_unique` as an extensionality | ||
lemma. | ||
## Tags | ||
lie algebra, universal enveloping algebra, tensor algebra | ||
-/ | ||
|
||
universes u₁ u₂ u₃ | ||
|
||
variables (R : Type u₁) (L : Type u₂) | ||
variables [comm_ring R] [lie_ring L] [lie_algebra R L] | ||
|
||
local notation `ιₜ` := tensor_algebra.ι R L | ||
|
||
namespace universal_enveloping_algebra | ||
|
||
/-- The quotient by the ideal generated by this relation is the universal enveloping algebra. | ||
Note that we have avoided using the more natural expression: | ||
| lie_compat (x y : L) : rel (ιₜ ⁅x, y⁆) ⁅ιₜ x, ιₜ y⁆ | ||
so that our construction needs only the semiring structure of the tensor algebra. -/ | ||
inductive rel : tensor_algebra R L → tensor_algebra R L → Prop | ||
| lie_compat (x y : L) : rel (ιₜ ⁅x, y⁆ + (ιₜ y) * (ιₜ x)) ((ιₜ x) * (ιₜ y)) | ||
|
||
end universal_enveloping_algebra | ||
|
||
/-- The universal enveloping algebra of a Lie algebra. -/ | ||
@[derive [inhabited, semiring, algebra R]] | ||
def universal_enveloping_algebra := ring_quot (universal_enveloping_algebra.rel R L) | ||
|
||
namespace universal_enveloping_algebra | ||
|
||
instance : ring (universal_enveloping_algebra R L) := algebra.semiring_to_ring R | ||
|
||
/-- The quotient map from the tensor algebra to the universal enveloping algebra as a morphism of | ||
associative algebras. -/ | ||
def mk_alg_hom : tensor_algebra R L →ₐ[R] universal_enveloping_algebra R L := | ||
ring_quot.mk_alg_hom R (rel R L) | ||
|
||
/-- The natural Lie algebra morphism from a Lie algebra to its universal enveloping algebra. -/ | ||
def ι : L →ₗ⁅R⁆ universal_enveloping_algebra R L := | ||
{ map_lie := λ x y, by | ||
{ suffices : mk_alg_hom R L (ιₜ ⁅x, y⁆ + (ιₜ y) * (ιₜ x)) = mk_alg_hom R L ((ιₜ x) * (ιₜ y)), | ||
{ rw alg_hom.map_mul at this, simp [lie_ring.of_associative_ring_bracket, ← this], }, | ||
exact ring_quot.mk_alg_hom_rel _ (rel.lie_compat x y), }, | ||
..(mk_alg_hom R L).to_linear_map.comp ιₜ } | ||
|
||
variables {A : Type u₃} [ring A] [algebra R A] (f : L →ₗ⁅R⁆ A) | ||
|
||
/-- The universal property of the universal enveloping algebra: Lie algebra morphisms into | ||
associative algebras lift to associative algebra morphisms from the universal enveloping algebra. -/ | ||
def lift : universal_enveloping_algebra R L →ₐ[R] A := | ||
ring_quot.lift_alg_hom R (tensor_algebra.lift R L (f : L →ₗ[R] A)) | ||
begin | ||
intros a b h, induction h with x y, | ||
simp [lie_ring.of_associative_ring_bracket], | ||
end | ||
|
||
@[simp] lemma lift_ι_apply (x : L) : lift R L f (ι R L x) = f x := | ||
begin | ||
have : ι R L x = ring_quot.mk_alg_hom R (rel R L) (ιₜ x), by refl, | ||
simp [this, lift], | ||
end | ||
|
||
lemma ι_comp_lift : (lift R L f) ∘ (ι R L) = f := | ||
by { ext, simp, } | ||
|
||
lemma lift_unique (g : universal_enveloping_algebra R L →ₐ[R] A) : | ||
g ∘ (ι R L) = f ↔ g = lift R L f := | ||
begin | ||
split; intros h, | ||
{ apply ring_quot.lift_alg_hom_unique, | ||
rw ← tensor_algebra.lift_unique, | ||
ext x, | ||
change _ = f x, rw ← congr h rfl, | ||
refl, }, | ||
{ subst h, apply ι_comp_lift, }, | ||
end | ||
|
||
@[ext] lemma hom_ext {g₁ g₂ : universal_enveloping_algebra R L →ₐ[R] A} | ||
(h : g₁ ∘ (ι R L) = g₂ ∘ (ι R L)) : g₁ = g₂ := | ||
begin | ||
let f₁ := (lie_algebra.of_associative_algebra_hom g₁).comp (ι R L), | ||
let f₂ := (lie_algebra.of_associative_algebra_hom g₂).comp (ι R L), | ||
have h' : f₁ = f₂, { ext, exact congr h rfl, }, | ||
have h₁ : g₁ = lift R L f₁, { rw ← lift_unique, refl, }, | ||
have h₂ : g₂ = lift R L f₂, { rw ← lift_unique, refl, }, | ||
rw [h₁, h₂, h'], | ||
end | ||
|
||
end universal_enveloping_algebra |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters