mathlib documentation


Free algebras #

Given a semiring R and a type X, we construct the free non-unital, non-associative algebra on X with coefficients in R, together with its universal property. The construction is valuable because it can be used to build free algebras with more structure, e.g., free Lie algebras.

Note that elsewhere we have a construction of the free unital, associative algebra. This is called free_algebra.

Main definitions #

Implementation details #

We construct the free algebra as the magma algebra, with coefficients in R, of the free magma on X. However we regard this as an implementation detail and thus deliberately omit the lemmas of_apply and lift_apply, and we mark free_non_unital_non_assoc_algebra and lift as irreducible once we have established the universal property.

Tags #

free algebra, non-unital, non-associative, free magma, magma algebra, universal property, forgetful functor, adjoint functor

def free_non_unital_non_assoc_algebra (R : Type u) (X : Type v) [semiring R] :
Type (max u v)

The free non-unital, non-associative algebra on the type X with coefficients in R.

noncomputable def free_non_unital_non_assoc_algebra.of (R : Type u) {X : Type v} [semiring R] :

The embedding of X into the free algebra with coefficients in R.

noncomputable def free_non_unital_non_assoc_algebra.lift (R : Type u) {X : Type v} [semiring R] {A : Type w} [non_unital_non_assoc_semiring A] [module R A] [is_scalar_tower R A A] [smul_comm_class R A A] :

The functor X ↦ free_non_unital_non_assoc_algebra R X from the category of types to the category of non-unital, non-associative algebras over R is adjoint to the forgetful functor in the other direction.

theorem free_non_unital_non_assoc_algebra.hom_ext (R : Type u) {X : Type v} [semiring R] {A : Type w} [non_unital_non_assoc_semiring A] [module R A] [is_scalar_tower R A A] [smul_comm_class R A A] {F₁ F₂ : non_unital_alg_hom R (free_non_unital_non_assoc_algebra R X) A} (h : ∀ (x : X), F₁ (free_non_unital_non_assoc_algebra.of R x) = F₂ (free_non_unital_non_assoc_algebra.of R x)) :
F₁ = F₂