Lie algebras #
This file defines Lie rings and Lie algebras over a commutative ring together with their modules, morphisms and equivalences, as well as various lemmas to make these definitions usable.
Main definitions #
Notation #
Working over a fixed commutative ring R
, we introduce the notations:
L →ₗ⁅R⁆ L'
for a morphism of Lie algebras,L ≃ₗ⁅R⁆ L'
for an equivalence of Lie algebras,M →ₗ⁅R,L⁆ N
for a morphism of Lie algebra modulesM
,N
over a Lie algebraL
,M ≃ₗ⁅R,L⁆ N
for an equivalence of Lie algebra modulesM
,N
over a Lie algebraL
.
Implementation notes #
Lie algebras are defined as modules with a compatible Lie ring structure and thus, like modules, are partially unbundled.
References #
Tags #
lie bracket, jacobi identity, lie ring, lie algebra, lie module
A Lie ring is an additive group with compatible product, known as the bracket, satisfying the Jacobi identity.
- add : L → L → L
- zero : L
- nsmul : ℕ → L → L
- nsmul_zero : ∀ (x : L), AddMonoid.nsmul 0 x = 0
- nsmul_succ : ∀ (n : ℕ) (x : L), AddMonoid.nsmul (n + 1) x = AddMonoid.nsmul n x + x
- neg : L → L
- sub : L → L → L
- zsmul : ℤ → L → L
- zsmul_zero' : ∀ (a : L), SubNegMonoid.zsmul 0 a = 0
- zsmul_succ' : ∀ (n : ℕ) (a : L), SubNegMonoid.zsmul (↑n.succ) a = SubNegMonoid.zsmul (↑n) a + a
- zsmul_neg' : ∀ (n : ℕ) (a : L), SubNegMonoid.zsmul (Int.negSucc n) a = -SubNegMonoid.zsmul (↑n.succ) a
- bracket : L → L → L
A Lie ring bracket is additive in its first component.
A Lie ring bracket is additive in its second component.
A Lie ring bracket vanishes on the diagonal in L × L.
A Lie ring bracket satisfies a Leibniz / Jacobi identity.
Instances
A Lie algebra is a module with compatible product, known as the bracket, satisfying the Jacobi identity. Forgetting the scalar multiplication, every Lie algebra is a Lie ring.
- smul : R → L → L
A Lie algebra bracket is compatible with scalar multiplication in its second argument.
The compatibility in the first argument is not a class property, but follows since every Lie algebra has a natural Lie module action on itself, see
LieModule
.
Instances
A Lie algebra bracket is compatible with scalar multiplication in its second argument.
The compatibility in the first argument is not a class property, but follows since every
Lie algebra has a natural Lie module action on itself, see LieModule
.
A Lie ring module is an additive group, together with an additive action of a
Lie ring on this group, such that the Lie bracket acts as the commutator of endomorphisms.
(For representations of Lie algebras see LieModule
.)
- bracket : L → M → M
A Lie ring module bracket is additive in its first component.
A Lie ring module bracket is additive in its second component.
A Lie ring module bracket satisfies a Leibniz / Jacobi identity.
Instances
A Lie module is a module over a commutative ring, together with a linear action of a Lie algebra on this module, such that the Lie bracket acts as the commutator of endomorphisms.
A Lie module bracket is compatible with scalar multiplication in its first argument.
A Lie module bracket is compatible with scalar multiplication in its second argument.
Instances
A Lie module bracket is compatible with scalar multiplication in its first argument.
A Lie module bracket is compatible with scalar multiplication in its second argument.
Equations
- lieRingSelfModule = LieRingModule.mk ⋯ ⋯ ⋯
Every Lie algebra is a module over itself.
Equations
- ⋯ = ⋯
Equations
- LieRing.instLieAlgebra = LieAlgebra.mk ⋯
Equations
- LinearMap.instLieRingModule = LieRingModule.mk ⋯ ⋯ ⋯
Equations
- ⋯ = ⋯
We could avoid defining this by instead defining a LieRingModule L R
instance with a zero
bracket and relying on LinearMap.instLieRingModule
. We do not do this because in the case that
L = R
we would have a non-defeq diamond via Ring.instBracket
.
Equations
- Module.Dual.instLieRingModule = LieRingModule.mk ⋯ ⋯ ⋯
Equations
- ⋯ = ⋯
A morphism of Lie algebras is a linear map respecting the bracket operations.
- toFun : L → L'
- map_smul' : ∀ (m : R) (x : L), (↑self).toFun (m • x) = (RingHom.id R) m • (↑self).toFun x
A morphism of Lie algebras is compatible with brackets.
Instances For
A morphism of Lie algebras is a linear map respecting the bracket operations.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The constant 0 map is a Lie algebra morphism.
Equations
- LieHom.instZero = { zero := let __src := 0; { toLinearMap := __src, map_lie' := ⋯ } }
Equations
- LieHom.instInhabited = { default := 0 }
The composition of morphisms is a morphism.
Equations
- f.comp g = { toLinearMap := ↑f ∘ₗ ↑g, map_lie' := ⋯ }
Instances For
The inverse of a bijective morphism is a morphism.
Equations
- f.inverse g h₁ h₂ = { toLinearMap := (↑f).inverse g h₁ h₂, map_lie' := ⋯ }
Instances For
A Lie ring module may be pulled back along a morphism of Lie algebras.
See note [reducible non-instances].
Equations
- LieRingModule.compLieHom M f = LieRingModule.mk ⋯ ⋯ ⋯
Instances For
A Lie module may be pulled back along a morphism of Lie algebras.
An equivalence of Lie algebras is a morphism which is also a linear equivalence. We could
instead define an equivalence to be a morphism which is also a (plain) equivalence. However it is
more convenient to define via linear equivalence to get .toLinearEquiv
for free.
- toFun : L → L'
- map_smul' : ∀ (m : R) (x : L), (↑self.toLieHom).toFun (m • x) = (RingHom.id R) m • (↑self.toLieHom).toFun x
- invFun : L' → L
The inverse function of an equivalence of Lie algebras
- left_inv : Function.LeftInverse self.invFun (↑self.toLieHom).toFun
The inverse function of an equivalence of Lie algebras is a left inverse of the underlying function.
- right_inv : Function.RightInverse self.invFun (↑self.toLieHom).toFun
The inverse function of an equivalence of Lie algebras is a right inverse of the underlying function.
Instances For
The inverse function of an equivalence of Lie algebras is a left inverse of the underlying function.
The inverse function of an equivalence of Lie algebras is a right inverse of the underlying function.
An equivalence of Lie algebras is a morphism which is also a linear equivalence. We could
instead define an equivalence to be a morphism which is also a (plain) equivalence. However it is
more convenient to define via linear equivalence to get .toLinearEquiv
for free.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Consider an equivalence of Lie algebras as a linear equivalence.
Equations
- f.toLinearEquiv = { toLinearMap := ↑f.toLieHom, invFun := f.invFun, left_inv := ⋯, right_inv := ⋯ }
Instances For
Lie algebra equivalences are reflexive.
Equations
- LieEquiv.refl = 1
Instances For
Lie algebra equivalences are symmetric.
Equations
- e.symm = { toLieHom := e.inverse e.invFun ⋯ ⋯, invFun := e.toLinearEquiv.symm.invFun, left_inv := ⋯, right_inv := ⋯ }
Instances For
Lie algebra equivalences are transitive.
Equations
- e₁.trans e₂ = { toLieHom := e₂.comp e₁.toLieHom, invFun := (e₁.toLinearEquiv.trans e₂.toLinearEquiv).invFun, left_inv := ⋯, right_inv := ⋯ }
Instances For
A bijective morphism of Lie algebras yields an equivalence of Lie algebras.
Equations
- LieEquiv.ofBijective f h = { toFun := ⇑f, map_add' := ⋯, map_smul' := ⋯, map_lie' := ⋯, invFun := (LinearEquiv.ofBijective (↑f) h).invFun, left_inv := ⋯, right_inv := ⋯ }
Instances For
A morphism of Lie algebra modules is a linear map which commutes with the action of the Lie algebra.
- toFun : M → N
- map_smul' : ∀ (m : R) (x : M), (↑self).toFun (m • x) = (RingHom.id R) m • (↑self).toFun x
A module of Lie algebra modules is compatible with the action of the Lie algebra on the modules.
Instances For
A module of Lie algebra modules is compatible with the action of the Lie algebra on the modules.
A morphism of Lie algebra modules is a linear map which commutes with the action of the Lie algebra.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- LieModuleHom.instCoeOutLinearMapId = { coe := LieModuleHom.toLinearMap }
The identity map is a morphism of Lie modules.
Equations
- LieModuleHom.id = { toLinearMap := LinearMap.id, map_lie' := ⋯ }
Instances For
The constant 0 map is a Lie module morphism.
Equations
- LieModuleHom.instZero = { zero := let __src := 0; { toLinearMap := __src, map_lie' := ⋯ } }
The identity map is a Lie module morphism.
Equations
- LieModuleHom.instOne = { one := LieModuleHom.id }
Equations
- LieModuleHom.instInhabited = { default := 0 }
The composition of Lie module morphisms is a morphism.
Equations
- f.comp g = { toLinearMap := ↑f ∘ₗ ↑g, map_lie' := ⋯ }
Instances For
The inverse of a bijective morphism of Lie modules is a morphism of Lie modules.
Equations
- f.inverse g h₁ h₂ = { toLinearMap := (↑f).inverse g h₁ h₂, map_lie' := ⋯ }
Instances For
Equations
- LieModuleHom.instAddCommGroup = Function.Injective.addCommGroup DFunLike.coe ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
Equations
- LieModuleHom.instModule = Function.Injective.module R { toFun := fun (f : M →ₗ⁅R,L⁆ N) => (↑f).toFun, map_zero' := ⋯, map_add' := ⋯ } ⋯ ⋯
An equivalence of Lie algebra modules is a linear equivalence which is also a morphism of Lie algebra modules.
- toFun : M → N
- map_smul' : ∀ (m : R) (x : M), (↑self.toLieModuleHom).toFun (m • x) = (RingHom.id R) m • (↑self.toLieModuleHom).toFun x
- invFun : N → M
The inverse function of an equivalence of Lie modules
- left_inv : Function.LeftInverse self.invFun (↑self.toLieModuleHom).toFun
The inverse function of an equivalence of Lie modules is a left inverse of the underlying function.
- right_inv : Function.RightInverse self.invFun (↑self.toLieModuleHom).toFun
The inverse function of an equivalence of Lie modules is a right inverse of the underlying function.
Instances For
The inverse function of an equivalence of Lie modules is a left inverse of the underlying function.
The inverse function of an equivalence of Lie modules is a right inverse of the underlying function.
An equivalence of Lie algebra modules is a linear equivalence which is also a morphism of Lie algebra modules.
Equations
- One or more equations did not get rendered due to their size.
Instances For
View an equivalence of Lie modules as a linear equivalence.
Equations
- e.toLinearEquiv = { toLinearMap := ↑e.toLieModuleHom, invFun := e.invFun, left_inv := ⋯, right_inv := ⋯ }
Instances For
View an equivalence of Lie modules as a type level equivalence.
Equations
- e.toEquiv = { toFun := (↑e.toLieModuleHom).toFun, invFun := e.invFun, left_inv := ⋯, right_inv := ⋯ }
Instances For
Equations
- LieModuleEquiv.hasCoeToEquiv = { coe := LieModuleEquiv.toEquiv }
Equations
- LieModuleEquiv.hasCoeToLieModuleHom = { coe := LieModuleEquiv.toLieModuleHom }
Equations
- LieModuleEquiv.hasCoeToLinearEquiv = { coe := LieModuleEquiv.toLinearEquiv }
Equations
- LieModuleEquiv.instOne = { one := let __src := 1; { toLinearMap := ↑__src, map_lie' := ⋯, invFun := __src.invFun, left_inv := ⋯, right_inv := ⋯ } }
Equations
- LieModuleEquiv.instInhabited = { default := 1 }
Lie module equivalences are reflexive.
Equations
- LieModuleEquiv.refl = 1
Instances For
Lie module equivalences are symmetric.
Equations
- e.symm = { toLieModuleHom := e.inverse e.invFun ⋯ ⋯, invFun := e.toLinearEquiv.symm.invFun, left_inv := ⋯, right_inv := ⋯ }
Instances For
Lie module equivalences are transitive.
Equations
- e₁.trans e₂ = { toLieModuleHom := e₂.comp e₁.toLieModuleHom, invFun := (e₁.toLinearEquiv.trans e₂.toLinearEquiv).invFun, left_inv := ⋯, right_inv := ⋯ }