Free groups structures on arbitrary types #
This file defines the notion of free basis of a group, which induces an isomorphism between the group and the free group generated by the basis.
It also introduced a type class for groups which are free groups, i.e., for which some free basis exists.
For the explicit construction of free groups, see GroupTheory/FreeGroup.
Main definitions #
FreeGroupBasis ι G: a function fromιtoGsuch thatGis free over its image. Equivalently, an isomorphism betweenGandFreeGroup ι.IsFreeGroup G: a typeclass to indicate thatGis free over some generatorsGenerators G: given a group satisfyingIsFreeGroup G, some indexing type over whichGis free.IsFreeGroup.of: the canonical injection ofG's generators intoGIsFreeGroup.lift: the universal property of the free group
Main results #
FreeGroupBasis.isFreeGroup: a group admitting a free group basis is free.IsFreeGroup.toFreeGroup: any free group with generatorsAis equivalent toFreeGroup A.IsFreeGroup.unique_lift: the universal property of a free group.FreeGroupBasis.ofUniqueLift: a group satisfying the universal property of a free group admits a free group basis.
A free group basis FreeGroupBasis ι G is a structure recording the isomorphism between a
group G and the free group over ι. One may think of such a basis as a function from ι to G
(which is registered through a FunLike instance) together with the fact that the morphism induced
by this function from FreeGroup ι to G is an isomorphism.
- ofRepr :: (
repris the isomorphism between the groupGand the free group generated byι.- )
Instances For
A group is free if it admits a free group basis. In the definition, we require the basis to
be in the same universe as G, although this property follows from the existence of a basis in
any universe, see FreeGroupBasis.isFreeGroup.
- nonempty_basis : ∃ (ι : Type u), Nonempty (FreeGroupBasis ι G)
Instances
A free group basis for G over ι is associated to a map ι → G recording the images of
the generators.
Equations
- FreeGroupBasis.instFunLike = { coe := fun (b : FreeGroupBasis ι G) (i : ι) => b.repr.symm (FreeGroup.of i), coe_injective' := ⋯ }
The canonical basis of the free group over X.
Equations
- FreeGroupBasis.ofFreeGroup X = { repr := MulEquiv.refl (FreeGroup X) }
Instances For
Reindex a free group basis through a bijection of the indexing sets.
Instances For
A group admitting a free group basis is a free group.
Given a free group basis of G over ι, there is a canonical bijection between maps from ι
to a group H and morphisms from G to H.
Equations
- One or more equations did not get rendered due to their size.
Instances For
If a group satisfies the universal property of a free group with respect to a given type, then
it admits a free group basis based on this type. Here, the universal property is expressed as
in IsFreeGroup.lift and its properties.
Equations
- FreeGroupBasis.ofLift X of lift lift_of = { repr := ((FreeGroup.lift of).toMulEquiv (lift FreeGroup.of) ⋯ ⋯).symm }
Instances For
If a group satisfies the universal property of a free group with respect to a given type, then
it admits a free group basis based on this type. Here
the universal property is expressed as in IsFreeGroup.unique_lift.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A set of generators of a free group, chosen arbitrarily
Equations
Instances For
Any free group is isomorphic to "the" free group.
Equations
Instances For
A free group basis of a free group G, over the set Generators G.
Equations
- IsFreeGroup.basis G = { repr := (IsFreeGroup.mulEquiv G).symm }
Instances For
Any free group is isomorphic to "the" free group.
Equations
Instances For
The canonical injection of G's generators into G
Equations
Instances For
The equivalence between functions on the generators and group homomorphisms from a free group given by those generators.
Equations
Instances For
The universal property of a free group: A function from the generators of G to another
group extends in a unique way to a homomorphism from G.
Note that since IsFreeGroup.lift is expressed as a bijection, it already
expresses the universal property.
If a group satisfies the universal property of a free group with respect to a given type, then
it is free. Here, the universal property is expressed as in IsFreeGroup.lift and its
properties.
If a group satisfies the universal property of a free group with respect to a given type, then
it is free. Here the universal property is expressed as in IsFreeGroup.unique_lift.