Documentation

Mathlib.Algebra.Category.Grp.Basic

Category instances for Group, AddGroup, CommGroup, and AddCommGroup. #

We introduce the bundled categories:

def AddGrp :
Type (u + 1)

The category of additive groups and group morphisms

Equations
def Grp :
Type (u + 1)

The category of groups and group morphisms.

Equations
Equations
  • One or more equations did not get rendered due to their size.
Equations
Equations
instance AddGrp.instGroupα (X : AddGrp) :
Equations
  • X.instGroupα = X.str
instance Grp.instGroupα (X : Grp) :
Group X
Equations
  • X.instGroupα = X.str
instance AddGrp.instCoeFunHomForallαAddGroup {X : AddGrp} {Y : AddGrp} :
CoeFun (X Y) fun (x : X Y) => XY
Equations
  • AddGrp.instCoeFunHomForallαAddGroup = { coe := fun (f : X →+ Y) => f }
instance Grp.instCoeFunHomForallαGroup {X : Grp} {Y : Grp} :
CoeFun (X Y) fun (x : X Y) => XY
Equations
  • Grp.instCoeFunHomForallαGroup = { coe := fun (f : X →* Y) => f }
instance AddGrp.instFunLike (X : AddGrp) (Y : AddGrp) :
FunLike (X Y) X Y
Equations
  • X.instFunLike Y = inferInstance
instance Grp.instFunLike (X : Grp) (Y : Grp) :
FunLike (X Y) X Y
Equations
  • X.instFunLike Y = inferInstance
@[simp]
@[simp]
theorem AddGrp.coe_comp {X : AddGrp} {Y : AddGrp} {Z : AddGrp} {f : X Y} {g : Y Z} :
@[simp]
theorem Grp.coe_comp {X : Grp} {Y : Grp} {Z : Grp} {f : X Y} {g : Y Z} :
theorem Grp.comp_def {X : Grp} {Y : Grp} {Z : Grp} {f : X Y} {g : Y Z} :
@[simp]
theorem Grp.forget_map {X : Grp} {Y : Grp} (f : X Y) :
theorem AddGrp.ext {X : AddGrp} {Y : AddGrp} {f : X Y} {g : X Y} (w : ∀ (x : X), f x = g x) :
f = g
theorem Grp.ext_iff {X : Grp} {Y : Grp} {f : X Y} {g : X Y} :
f = g ∀ (x : X), f x = g x
theorem AddGrp.ext_iff {X : AddGrp} {Y : AddGrp} {f : X Y} {g : X Y} :
f = g ∀ (x : X), f x = g x
theorem Grp.ext {X : Grp} {Y : Grp} {f : X Y} {g : X Y} (w : ∀ (x : X), f x = g x) :
f = g
def AddGrp.of (X : Type u) [AddGroup X] :

Construct a bundled AddGroup from the underlying type and typeclass.

Equations
def Grp.of (X : Type u) [Group X] :

Construct a bundled Group from the underlying type and typeclass.

Equations
@[simp]
theorem AddGrp.coe_of (R : Type u) [AddGroup R] :
(AddGrp.of R) = R
@[simp]
theorem Grp.coe_of (R : Type u) [Group R] :
(Grp.of R) = R
@[simp]
theorem AddGrp.coe_comp' {G : Type u_1} {H : Type u_1} {K : Type u_1} [AddGroup G] [AddGroup H] [AddGroup K] (f : G →+ H) (g : H →+ K) :
@[simp]
theorem Grp.coe_comp' {G : Type u_1} {H : Type u_1} {K : Type u_1} [Group G] [Group H] [Group K] (f : G →* H) (g : H →* K) :
@[simp]
theorem Grp.coe_id' {G : Type u_1} [Group G] :
instance AddGrp.instZeroHom (G : AddGrp) (H : AddGrp) :
Zero (G H)
Equations
  • G.instZeroHom H = inferInstance
instance Grp.instOneHom (G : Grp) (H : Grp) :
One (G H)
Equations
  • G.instOneHom H = inferInstance
@[simp]
theorem AddGrp.zero_apply (G : AddGrp) (H : AddGrp) (g : G) :
0 g = 0
@[simp]
theorem Grp.one_apply (G : Grp) (H : Grp) (g : G) :
1 g = 1
def AddGrp.ofHom {X : Type u} {Y : Type u} [AddGroup X] [AddGroup Y] (f : X →+ Y) :

Typecheck an AddMonoidHom as a morphism in AddGroup.

Equations
def Grp.ofHom {X : Type u} {Y : Type u} [Group X] [Group Y] (f : X →* Y) :

Typecheck a MonoidHom as a morphism in Grp.

Equations
theorem AddGrp.ofHom_apply {X : Type u_1} {Y : Type u_1} [AddGroup X] [AddGroup Y] (f : X →+ Y) (x : X) :
(AddGrp.ofHom f) x = f x
theorem Grp.ofHom_apply {X : Type u_1} {Y : Type u_1} [Group X] [Group Y] (f : X →* Y) (x : X) :
(Grp.ofHom f) x = f x
instance AddGrp.ofUnique (G : Type u_1) [AddGroup G] [i : Unique G] :
Equations
instance Grp.ofUnique (G : Type u_1) [Group G] [i : Unique G] :
Unique (Grp.of G)
Equations

Universe lift functor for additive groups.

Equations
  • One or more equations did not get rendered due to their size.
@[simp]
theorem Grp.uliftFunctor_map :
∀ {x x_1 : Grp} (f : x x_1), Grp.uliftFunctor.map f = Grp.ofHom (MulEquiv.ulift.symm.toMonoidHom.comp (MonoidHom.comp f MulEquiv.ulift.toMonoidHom))
@[simp]
theorem AddGrp.uliftFunctor_map :
∀ {x x_1 : AddGrp} (f : x x_1), AddGrp.uliftFunctor.map f = AddGrp.ofHom (AddEquiv.ulift.symm.toAddMonoidHom.comp (AddMonoidHom.comp f AddEquiv.ulift.toAddMonoidHom))

Universe lift functor for groups.

Equations
  • One or more equations did not get rendered due to their size.
def AddCommGrp :
Type (u + 1)

The category of additive commutative groups and group morphisms.

Equations
def CommGrp :
Type (u + 1)

The category of commutative groups and group morphisms.

Equations
@[reducible, inline]
abbrev Ab :
Type (u_1 + 1)

Ab is an abbreviation for AddCommGroup, for the sake of mathematicians' sanity.

Equations
Equations
  • One or more equations did not get rendered due to their size.
Equations
Equations
  • X.addCommGroupInstance = X.str
Equations
  • X.commGroupInstance = X.str
instance AddCommGrp.instCoeFunHomForallαAddCommGroup {X : AddCommGrp} {Y : AddCommGrp} :
CoeFun (X Y) fun (x : X Y) => XY
Equations
  • AddCommGrp.instCoeFunHomForallαAddCommGroup = { coe := fun (f : X →+ Y) => f }
instance CommGrp.instCoeFunHomForallαCommGroup {X : CommGrp} {Y : CommGrp} :
CoeFun (X Y) fun (x : X Y) => XY
Equations
  • CommGrp.instCoeFunHomForallαCommGroup = { coe := fun (f : X →* Y) => f }
instance AddCommGrp.instFunLike (X : AddCommGrp) (Y : AddCommGrp) :
FunLike (X Y) X Y
Equations
  • X.instFunLike Y = inferInstance
instance CommGrp.instFunLike (X : CommGrp) (Y : CommGrp) :
FunLike (X Y) X Y
Equations
  • X.instFunLike Y = inferInstance
@[simp]
theorem AddCommGrp.coe_comp {X : AddCommGrp} {Y : AddCommGrp} {Z : AddCommGrp} {f : X Y} {g : Y Z} :
@[simp]
theorem CommGrp.coe_comp {X : CommGrp} {Y : CommGrp} {Z : CommGrp} {f : X Y} {g : Y Z} :
@[simp]
@[simp]
theorem CommGrp.forget_map {X : CommGrp} {Y : CommGrp} (f : X Y) :
theorem AddCommGrp.ext {X : AddCommGrp} {Y : AddCommGrp} {f : X Y} {g : X Y} (w : ∀ (x : X), f x = g x) :
f = g
theorem CommGrp.ext_iff {X : CommGrp} {Y : CommGrp} {f : X Y} {g : X Y} :
f = g ∀ (x : X), f x = g x
theorem AddCommGrp.ext_iff {X : AddCommGrp} {Y : AddCommGrp} {f : X Y} {g : X Y} :
f = g ∀ (x : X), f x = g x
theorem CommGrp.ext {X : CommGrp} {Y : CommGrp} {f : X Y} {g : X Y} (w : ∀ (x : X), f x = g x) :
f = g

Construct a bundled AddCommGroup from the underlying type and typeclass.

Equations
def CommGrp.of (G : Type u) [CommGroup G] :

Construct a bundled CommGroup from the underlying type and typeclass.

Equations
@[simp]
theorem AddCommGrp.coe_of (R : Type u) [AddCommGroup R] :
(AddCommGrp.of R) = R
@[simp]
theorem CommGrp.coe_of (R : Type u) [CommGroup R] :
(CommGrp.of R) = R
@[simp]
theorem AddCommGrp.coe_comp' {G : Type u_1} {H : Type u_1} {K : Type u_1} [AddCommGroup G] [AddCommGroup H] [AddCommGroup K] (f : G →+ H) (g : H →+ K) :
@[simp]
theorem CommGrp.coe_comp' {G : Type u_1} {H : Type u_1} {K : Type u_1} [CommGroup G] [CommGroup H] [CommGroup K] (f : G →* H) (g : H →* K) :
instance AddCommGrp.ofUnique (G : Type u_1) [AddCommGroup G] [i : Unique G] :
Equations
instance CommGrp.ofUnique (G : Type u_1) [CommGroup G] [i : Unique G] :
Equations
Equations
  • One or more equations did not get rendered due to their size.
Equations
  • One or more equations did not get rendered due to their size.
Equations
  • G.instZeroHom H = inferInstance
instance CommGrp.instOneHom (G : CommGrp) (H : CommGrp) :
One (G H)
Equations
  • G.instOneHom H = inferInstance
@[simp]
theorem AddCommGrp.zero_apply (G : AddCommGrp) (H : AddCommGrp) (g : G) :
0 g = 0
@[simp]
theorem CommGrp.one_apply (G : CommGrp) (H : CommGrp) (g : G) :
1 g = 1

Typecheck an AddMonoidHom as a morphism in AddCommGroup.

Equations
def CommGrp.ofHom {X : Type u} {Y : Type u} [CommGroup X] [CommGroup Y] (f : X →* Y) :

Typecheck a MonoidHom as a morphism in CommGroup.

Equations
@[simp]
theorem AddCommGrp.ofHom_apply {X : Type u_1} {Y : Type u_1} [AddCommGroup X] [AddCommGroup Y] (f : X →+ Y) (x : X) :
@[simp]
theorem CommGrp.ofHom_apply {X : Type u_1} {Y : Type u_1} [CommGroup X] [CommGroup Y] (f : X →* Y) (x : X) :
(CommGrp.ofHom f) x = f x

Universe lift functor for additive commutative groups.

Equations
  • One or more equations did not get rendered due to their size.
@[simp]
theorem CommGrp.uliftFunctor_map :
∀ {x x_1 : CommGrp} (f : x x_1), CommGrp.uliftFunctor.map f = CommGrp.ofHom (MulEquiv.ulift.symm.toMonoidHom.comp (MonoidHom.comp f MulEquiv.ulift.toMonoidHom))
@[simp]
theorem AddCommGrp.uliftFunctor_map :
∀ {x x_1 : AddCommGrp} (f : x x_1), AddCommGrp.uliftFunctor.map f = AddCommGrp.ofHom (AddEquiv.ulift.symm.toAddMonoidHom.comp (AddMonoidHom.comp f AddEquiv.ulift.toAddMonoidHom))

Universe lift functor for commutative groups.

Equations
  • One or more equations did not get rendered due to their size.

Any element of an abelian group gives a unique morphism from sending 1 to that element.

Equations
@[simp]
theorem AddCommGrp.asHom_apply {G : AddCommGrp} (g : G) (i : ) :
theorem AddCommGrp.int_hom_ext {G : AddCommGrp} (f : AddCommGrp.of G) (g : AddCommGrp.of G) (w : f 1 = g 1) :
f = g
def AddEquiv.toAddGrpIso {X : AddGrp} {Y : AddGrp} (e : X ≃+ Y) :
X Y

Build an isomorphism in the category AddGroup from an AddEquiv between AddGroups.

Equations
  • e.toAddGrpIso = { hom := e.toAddMonoidHom, inv := e.symm.toAddMonoidHom, hom_inv_id := , inv_hom_id := }
@[simp]
theorem MulEquiv.toGrpIso_hom {X : Grp} {Y : Grp} (e : X ≃* Y) :
e.toGrpIso.hom = e.toMonoidHom
@[simp]
theorem AddEquiv.toAddGrpIso_inv {X : AddGrp} {Y : AddGrp} (e : X ≃+ Y) :
e.toAddGrpIso.inv = e.symm.toAddMonoidHom
@[simp]
theorem AddEquiv.toAddGrpIso_hom {X : AddGrp} {Y : AddGrp} (e : X ≃+ Y) :
e.toAddGrpIso.hom = e.toAddMonoidHom
@[simp]
theorem MulEquiv.toGrpIso_inv {X : Grp} {Y : Grp} (e : X ≃* Y) :
e.toGrpIso.inv = e.symm.toMonoidHom
def MulEquiv.toGrpIso {X : Grp} {Y : Grp} (e : X ≃* Y) :
X Y

Build an isomorphism in the category Grp from a MulEquiv between Groups.

Equations
  • e.toGrpIso = { hom := e.toMonoidHom, inv := e.symm.toMonoidHom, hom_inv_id := , inv_hom_id := }
def AddEquiv.toAddCommGrpIso {X : AddCommGrp} {Y : AddCommGrp} (e : X ≃+ Y) :
X Y

Build an isomorphism in the category AddCommGrp from an AddEquiv between AddCommGroups.

Equations
  • e.toAddCommGrpIso = { hom := e.toAddMonoidHom, inv := e.symm.toAddMonoidHom, hom_inv_id := , inv_hom_id := }
@[simp]
theorem MulEquiv.toCommGrpIso_inv {X : CommGrp} {Y : CommGrp} (e : X ≃* Y) :
e.toCommGrpIso.inv = e.symm.toMonoidHom
@[simp]
theorem AddEquiv.toAddCommGrpIso_hom {X : AddCommGrp} {Y : AddCommGrp} (e : X ≃+ Y) :
e.toAddCommGrpIso.hom = e.toAddMonoidHom
@[simp]
theorem AddEquiv.toAddCommGrpIso_inv {X : AddCommGrp} {Y : AddCommGrp} (e : X ≃+ Y) :
e.toAddCommGrpIso.inv = e.symm.toAddMonoidHom
@[simp]
theorem MulEquiv.toCommGrpIso_hom {X : CommGrp} {Y : CommGrp} (e : X ≃* Y) :
e.toCommGrpIso.hom = e.toMonoidHom
def MulEquiv.toCommGrpIso {X : CommGrp} {Y : CommGrp} (e : X ≃* Y) :
X Y

Build an isomorphism in the category CommGrp from a MulEquiv between CommGroups.

Equations
  • e.toCommGrpIso = { hom := e.toMonoidHom, inv := e.symm.toMonoidHom, hom_inv_id := , inv_hom_id := }
def CategoryTheory.Iso.addGroupIsoToAddEquiv {X : AddGrp} {Y : AddGrp} (i : X Y) :
X ≃+ Y

Build an addEquiv from an isomorphism in the category AddGroup

Equations
def CategoryTheory.Iso.groupIsoToMulEquiv {X : Grp} {Y : Grp} (i : X Y) :
X ≃* Y

Build a MulEquiv from an isomorphism in the category Grp.

Equations

Build an AddEquiv from an isomorphism in the category AddCommGroup.

Equations
@[simp]
theorem CategoryTheory.Iso.commGroupIsoToMulEquiv_apply {X : CommGrp} {Y : CommGrp} (i : X Y) (a : X) :
i.commGroupIsoToMulEquiv a = i.hom a
@[simp]
theorem CategoryTheory.Iso.addCommGroupIsoToAddEquiv_symm_apply {X : AddCommGrp} {Y : AddCommGrp} (i : X Y) (a : Y) :
i.addCommGroupIsoToAddEquiv.symm a = i.inv a
@[simp]
theorem CategoryTheory.Iso.addCommGroupIsoToAddEquiv_apply {X : AddCommGrp} {Y : AddCommGrp} (i : X Y) (a : X) :
i.addCommGroupIsoToAddEquiv a = i.hom a
@[simp]
theorem CategoryTheory.Iso.commGroupIsoToMulEquiv_symm_apply {X : CommGrp} {Y : CommGrp} (i : X Y) (a : Y) :
i.commGroupIsoToMulEquiv.symm a = i.inv a

Build a MulEquiv from an isomorphism in the category CommGroup.

Equations
def addEquivIsoAddGroupIso {X : AddGrp} {Y : AddGrp} :
X ≃+ Y X Y

Additive equivalences between AddGroups are the same as (isomorphic to) isomorphisms in AddGrp.

Equations
  • addEquivIsoAddGroupIso = { hom := fun (e : X ≃+ Y) => e.toAddGrpIso, inv := fun (i : X Y) => i.addGroupIsoToAddEquiv, hom_inv_id := , inv_hom_id := }
def mulEquivIsoGroupIso {X : Grp} {Y : Grp} :
X ≃* Y X Y

multiplicative equivalences between Groups are the same as (isomorphic to) isomorphisms in Grp

Equations
  • mulEquivIsoGroupIso = { hom := fun (e : X ≃* Y) => e.toGrpIso, inv := fun (i : X Y) => i.groupIsoToMulEquiv, hom_inv_id := , inv_hom_id := }

Additive equivalences between AddCommGroups are the same as (isomorphic to) isomorphisms in AddCommGrp.

Equations
  • addEquivIsoAddCommGroupIso = { hom := fun (e : X ≃+ Y) => e.toAddCommGrpIso, inv := fun (i : X Y) => i.addCommGroupIsoToAddEquiv, hom_inv_id := , inv_hom_id := }
def mulEquivIsoCommGroupIso {X : CommGrp} {Y : CommGrp} :
X ≃* Y X Y

Multiplicative equivalences between CommGroups are the same as (isomorphic to) isomorphisms in CommGrp.

Equations
  • mulEquivIsoCommGroupIso = { hom := fun (e : X ≃* Y) => e.toCommGrpIso, inv := fun (i : X Y) => i.commGroupIsoToMulEquiv, hom_inv_id := , inv_hom_id := }

The (bundled) group of automorphisms of a type is isomorphic to the (bundled) group of permutations.

Equations
  • One or more equations did not get rendered due to their size.

The (unbundled) group of automorphisms of a type is MulEquiv to the (unbundled) group of permutations.

Equations
  • CategoryTheory.Aut.mulEquivPerm = CategoryTheory.Aut.isoPerm.groupIsoToMulEquiv
@[reducible, inline]
abbrev GrpMaxAux :
Type ((max u1 u2) + 1)

An alias for AddGrp.{max u v}, to deal around unification issues.

Equations
@[reducible, inline]
abbrev GrpMax :
Type ((max u1 u2) + 1)

An alias for Grp.{max u v}, to deal around unification issues.

Equations
@[reducible, inline]
abbrev AddGrpMax :
Type ((max u1 u2) + 1)

An alias for AddGrp.{max u v}, to deal around unification issues.

Equations
@[reducible, inline]
abbrev AddCommGrpMaxAux :
Type ((max u1 u2) + 1)

An alias for AddCommGrp.{max u v}, to deal around unification issues.

Equations
@[reducible, inline]
abbrev CommGrpMax :
Type ((max u1 u2) + 1)

An alias for CommGrp.{max u v}, to deal around unification issues.

Equations
@[reducible, inline]
abbrev AddCommGrpMax :
Type ((max u1 u2) + 1)

An alias for AddCommGrp.{max u v}, to deal around unification issues.

Equations

@[simp] lemmas for MonoidHom.comp and categorical identities.

@[simp]
theorem AddMonoidHom.comp_id_addGrp {G : AddGrp} {H : Type u} [AddGroup H] (f : G →+ H) :
@[simp]
theorem MonoidHom.comp_id_grp {G : Grp} {H : Type u} [Group H] (f : G →* H) :
@[simp]
@[simp]
@[simp]
theorem MonoidHom.comp_id_commGrp {G : CommGrp} {H : Type u} [CommGroup H] (f : G →* H) :