Free Lie algebras #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
Given a commutative ring R
and a type X
we construct the free Lie algebra on X
with
coefficients in R
together with its universal property.
Main definitions #
free_lie_algebra
free_lie_algebra.lift
free_lie_algebra.of
free_lie_algebra.universal_enveloping_equiv_free_algebra
Implementation details #
Quotient of free non-unital, non-associative algebra #
We follow N. Bourbaki, Lie Groups and Lie Algebras, Chapters 1--3 and construct
the free Lie algebra as a quotient of the free non-unital, non-associative algebra. Since we do not
currently have definitions of ideals, lattices of ideals, and quotients for
non_unital_non_assoc_semiring
, we construct our quotient using the low-level quot
function on
an inductively-defined relation.
Alternative construction (needs PBW) #
An alternative construction of the free Lie algebra on X
is to start with the free unital
associative algebra on X
, regard it as a Lie algebra via the ring commutator, and take its
smallest Lie subalgebra containing X
. I.e.:
lie_subalgebra.lie_span R (free_algebra R X) (set.range (free_algebra.ι R))
.
However with this definition there does not seem to be an easy proof that the required universal property holds, and I don't know of a proof that avoids invoking the Poincaré–Birkhoff–Witt theorem. A related MathOverflow question is this one.
Tags #
lie algebra, free algebra, non-unital, non-associative, universal property, forgetful functor, adjoint functor
- lie_self : ∀ {R : Type u} {X : Type v} [_inst_1 : comm_ring R] (a : free_non_unital_non_assoc_algebra R X), free_lie_algebra.rel R X (a * a) 0
- leibniz_lie : ∀ {R : Type u} {X : Type v} [_inst_1 : comm_ring R] (a b c : free_non_unital_non_assoc_algebra R X), free_lie_algebra.rel R X (a * (b * c)) (a * b * c + b * (a * c))
- smul : ∀ {R : Type u} {X : Type v} [_inst_1 : comm_ring R] (t : R) {a b : free_non_unital_non_assoc_algebra R X}, free_lie_algebra.rel R X a b → free_lie_algebra.rel R X (t • a) (t • b)
- add_right : ∀ {R : Type u} {X : Type v} [_inst_1 : comm_ring R] {a b : free_non_unital_non_assoc_algebra R X} (c : free_non_unital_non_assoc_algebra R X), free_lie_algebra.rel R X a b → free_lie_algebra.rel R X (a + c) (b + c)
- mul_left : ∀ {R : Type u} {X : Type v} [_inst_1 : comm_ring R] (a : free_non_unital_non_assoc_algebra R X) {b c : free_non_unital_non_assoc_algebra R X}, free_lie_algebra.rel R X b c → free_lie_algebra.rel R X (a * b) (a * c)
- mul_right : ∀ {R : Type u} {X : Type v} [_inst_1 : comm_ring R] {a b : free_non_unital_non_assoc_algebra R X} (c : free_non_unital_non_assoc_algebra R X), free_lie_algebra.rel R X a b → free_lie_algebra.rel R X (a * c) (b * c)
The quotient of lib R X
by the equivalence relation generated by this relation will give us
the free Lie algebra.
The free Lie algebra on the type X
with coefficients in the commutative ring R
.
Equations
- free_lie_algebra R X = quot (free_lie_algebra.rel R X)
Instances for free_lie_algebra
- free_lie_algebra.inhabited
- free_lie_algebra.has_smul
- free_lie_algebra.is_central_scalar
- free_lie_algebra.has_zero
- free_lie_algebra.has_add
- free_lie_algebra.has_neg
- free_lie_algebra.has_sub
- free_lie_algebra.add_group
- free_lie_algebra.add_comm_semigroup
- free_lie_algebra.add_comm_group
- free_lie_algebra.module
- free_lie_algebra.lie_ring
- free_lie_algebra.lie_algebra
Equations
- free_lie_algebra.has_smul R X = {smul := λ (t : S), quot.map (has_smul.smul t) _}
Equations
- free_lie_algebra.has_zero R X = {zero := quot.mk (free_lie_algebra.rel R X) 0}
Equations
- free_lie_algebra.has_add R X = {add := quot.map₂ has_add.add _ _}
Equations
- free_lie_algebra.has_neg R X = {neg := quot.map has_neg.neg _}
Equations
- free_lie_algebra.has_sub R X = {sub := quot.map₂ has_sub.sub _ _}
Equations
- free_lie_algebra.add_group R X = function.surjective.add_group (quot.mk (free_lie_algebra.rel R X)) _ _ _ _ _ _ _
Equations
- free_lie_algebra.add_comm_semigroup R X = function.surjective.add_comm_semigroup (quot.mk (free_lie_algebra.rel R X)) _ _
Equations
- free_lie_algebra.add_comm_group R X = {add := add_group.add (free_lie_algebra.add_group R X), add_assoc := _, zero := add_group.zero (free_lie_algebra.add_group R X), zero_add := _, add_zero := _, nsmul := add_group.nsmul (free_lie_algebra.add_group R X), nsmul_zero' := _, nsmul_succ' := _, neg := add_group.neg (free_lie_algebra.add_group R X), sub := add_group.sub (free_lie_algebra.add_group R X), sub_eq_add_neg := _, zsmul := add_group.zsmul (free_lie_algebra.add_group R X), zsmul_zero' := _, zsmul_succ' := _, zsmul_neg' := _, add_left_neg := _, add_comm := _}
Equations
- free_lie_algebra.module R X = function.surjective.module S {to_fun := quot.mk (free_lie_algebra.rel R X), map_zero' := _, map_add' := _} _ _
Note that here we turn the has_mul
coming from the non_unital_non_assoc_semiring
structure
on lib R X
into a has_bracket
on free_lie_algebra
.
Equations
- free_lie_algebra.lie_ring R X = {to_add_comm_group := free_lie_algebra.add_comm_group R X _inst_1, to_has_bracket := {bracket := quot.map₂ has_mul.mul _ _}, add_lie := _, lie_add := _, lie_self := _, leibniz_lie := _}
Equations
- free_lie_algebra.lie_algebra R X = {to_module := free_lie_algebra.module R X _, lie_smul := _}
The embedding of X
into the free Lie algebra of X
with coefficients in the commutative ring
R
.
Equations
- free_lie_algebra.of R = λ (x : X), quot.mk (free_lie_algebra.rel R X) (free_non_unital_non_assoc_algebra.of R x)
An auxiliary definition used to construct the equivalence lift
below.
Equations
The quotient map as a non_unital_alg_hom
.
Equations
- free_lie_algebra.mk R = {to_fun := quot.mk (free_lie_algebra.rel R X), map_smul' := _, map_zero' := _, map_add' := _, map_mul' := _}
The functor X ↦ free_lie_algebra R X
from the category of types to the category of Lie
algebras over R
is adjoint to the forgetful functor in the other direction.
Equations
- free_lie_algebra.lift R = {to_fun := λ (f : X → L), {to_linear_map := {to_fun := λ (c : free_lie_algebra R X), quot.lift_on c ⇑(free_lie_algebra.lift_aux R f) _, map_add' := _, map_smul' := _}, map_lie' := _}, inv_fun := λ (F : free_lie_algebra R X →ₗ⁅R⁆ L), ⇑F ∘ free_lie_algebra.of R, left_inv := _, right_inv := _}
The universal enveloping algebra of the free Lie algebra is just the free unital associative algebra.