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 FreeAddGroupBasis ι G is a structure recording the isomorphism between an
additive group G and the additive 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 FreeAddGroup ι to G is an isomorphism.
- ofRepr :: (
- )
Instances For
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 :: (
- )
Instances For
An additive group is free if it admits an additive 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 FreeAddGroupBasis.isFreeAddGroup.
- nonempty_basis : ∃ (ι : Type u), Nonempty (FreeAddGroupBasis ι G)
Instances
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 := ⋯ }
An additive free group basis for G over ι is associated to a map ι → G recording the
images of the generators.
Equations
- FreeAddGroupBasis.instFunLike = { coe := fun (b : FreeAddGroupBasis ι G) (i : ι) => b.repr.symm (FreeAddGroup.of i), coe_injective := ⋯ }
The canonical basis of the free group over X.
Equations
- FreeGroupBasis.ofFreeGroup X = { repr := MulEquiv.refl (FreeGroup X) }
Instances For
The canonical basis of the additive free group over X.
Equations
- FreeAddGroupBasis.ofFreeAddGroup X = { repr := AddEquiv.refl (FreeAddGroup X) }
Instances For
Reindex a free group basis through a bijection of the indexing sets.
Instances For
Reindex an additive free group basis through a bijection of the indexing sets.
Instances For
A group admitting a free group basis is a free group.
An additive group admitting an additive free group basis is an additive 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
Given an additive free group basis of G over ι, there is a canonical bijection between
maps from ι to an additive 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 an additive group satisfies the universal property of an additive free group with respect to
a given type, then it admits an additive free group basis based on this type. Here, the universal
property is expressed as in IsFreeAddGroup.lift and its properties.
Equations
- FreeAddGroupBasis.ofLift X of lift lift_of = { repr := ((FreeAddGroup.lift of).toAddEquiv (lift FreeAddGroup.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
If an additive group satisfies the universal property of an additive free group with respect to
a given type, then it admits an additive free group basis based on this type. Here
the universal property is expressed as in IsFreeAddGroup.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
A set of generators of an additive free group, chosen arbitrarily
Equations
Instances For
Any free group is isomorphic to "the" free group.
Equations
Instances For
Any additive free group is isomorphic to "the" additive free group.
Equations
Instances For
Any additive free group is isomorphic to "the" additive free group.
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
An additive free group basis of an additive free group G, over the set Generators G.
Equations
- IsFreeAddGroup.basis G = { repr := (IsFreeAddGroup.addEquiv G).symm }
Instances For
Any free group is isomorphic to "the" free group.
Equations
Instances For
Any additive free group is isomorphic to "the" additive free group.
Equations
Instances For
The canonical injection of G's generators into G
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 equivalence between functions on the generators and additive group homomorphisms from an additive 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.
The universal property of an additive free group: A function from the generators of G to
another additive group extends in a unique way to a homomorphism from G.
Note that since IsFreeAddGroup.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 an additive group satisfies the universal property of an additive free group with respect to
a given type, then it is free. Here, the universal property is expressed as in IsFreeAddGroup.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.
If an additive group satisfies the universal property of an additive free group with respect to
a given type, then it is free. Here the universal property is expressed as in
IsFreeAddGroup.unique_lift.