# mathlibdocumentation

algebra.category.Group.colimits

# The category of additive commutative groups has all colimits.

This file uses a "pre-automated" approach, just as for Mon/colimits.lean. It is a very uniform approach, that conceivably could be synthesised directly by a tactic that analyses the shape of add_comm_group and monoid_hom.

TODO: In fact, in AddCommGroup there is a much nicer model of colimits as quotients of finitely supported functions, and we really should implement this as well (or instead).

We build the colimit of a diagram in AddCommGroup by constructing the free group on the disjoint union of all the abelian groups in the diagram, then taking the quotient by the abelian group laws within each abelian group, and the identifications given by the morphisms in the diagram.

Type v
• of : Π {J : Type v} [_inst_1 : (F : (j : J),
• zero : Π {J : Type v} [_inst_1 : (F : ,
• neg : Π {J : Type v} [_inst_1 : (F : ,
• add : Π {J : Type v} [_inst_1 : (F : ,

An inductive type representing all group expressions (without relations) on a collection of types indexed by the objects of J.

@[instance]

Equations
• refl : ∀ {J : Type v} [_inst_1 : (F : (x : ,
• symm : ∀ {J : Type v} [_inst_1 : (F : (x y : ,
• trans : ∀ {J : Type v} [_inst_1 : (F : (x y z : ,
• map : ∀ {J : Type v} [_inst_1 : (F : (j j' : J) (f : j j') (x : (F.obj j)),
• zero : ∀ {J : Type v} [_inst_1 : (F : (j : J),
• neg : ∀ {J : Type v} [_inst_1 : (F : (j : J) (x : (F.obj j)),
• add : ∀ {J : Type v} [_inst_1 : (F : (j : J) (x y : (F.obj j)),
• neg_1 : ∀ {J : Type v} [_inst_1 : (F : (x x' : ,
• add_1 : ∀ {J : Type v} [_inst_1 : (F : (x x' y : , (x'.add y)
• add_2 : ∀ {J : Type v} [_inst_1 : (F : (x y y' : , (x.add y')
• zero_add : ∀ {J : Type v} [_inst_1 : (F : (x : ,
• add_zero : ∀ {J : Type v} [_inst_1 : (F : (x : ,
• add_left_neg : ∀ {J : Type v} [_inst_1 : (F : (x : ,
• add_comm : ∀ {J : Type v} [_inst_1 : (F : (x y : , (y.add x)

The relation on prequotient saying when two expressions are equal because of the abelian group laws, or because one element is mapped to another by a morphism in the diagram.

@[instance]

The setoid corresponding to group expressions modulo abelian group relations and identifications.

Equations
Type v

The underlying type of the colimit of a diagram in AddCommGroup.

Equations
@[instance]

@[instance]

Equations
@[simp]

@[simp]
quot.mk setoid.r x.neg = -quot.mk setoid.r x

@[simp]
quot.mk setoid.r (x.add y) = quot.mk setoid.r x + quot.mk setoid.r y

The bundled abelian group giving the colimit of a diagram.

Equations
def AddCommGroup.colimits.cocone_fun {J : Type v} (F : J AddCommGroup) (j : J) (x : (F.obj j)) :

The function from a given abelian group in the diagram to the colimit abelian group.

Equations
def AddCommGroup.colimits.cocone_morphism {J : Type v} (F : J AddCommGroup) (j : J) :

The group homomorphism from a given abelian group in the diagram to the colimit abelian group.

Equations
@[simp]
theorem AddCommGroup.colimits.cocone_naturality {J : Type v} (F : J AddCommGroup) {j j' : J} (f : j j') :

@[simp]
theorem AddCommGroup.colimits.cocone_naturality_components {J : Type v} (F : J AddCommGroup) (j j' : J) (f : j j') (x : (F.obj j)) :
((F.map f) x) =

The cocone over the proposed colimit abelian group.

Equations
@[simp]

The function from the free abelian group on the diagram to the cone point of any other cocone.

Equations

The function from the colimit abelian group to the cone point of any other cocone.

Equations
• = quot.lift _

The group homomorphism from the colimit abelian group to the cone point of any other cocone.

Equations

Evidence that the proposed colimit is the colimit.

Equations

The categorical cokernel of a morphism in AddCommGroup agrees with the usual group-theoretical quotient.

Equations