# mathlibdocumentation

algebra.category.CommRing.colimits

# The category of commutative rings 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 comm_ring and ring_hom.

We build the colimit of a diagram in CommRing by constructing the free commutative ring on the disjoint union of all the commutative rings in the diagram, then taking the quotient by the commutative ring laws within each commutative ring, and the identifications given by the morphisms in the diagram.

inductive CommRing.colimits.prequotient {J : Type v} (F : J CommRing) :
Type v
• of : Π {J : Type v} [_inst_1 : (F : (j : J), (F.obj j)
• zero : Π {J : Type v} [_inst_1 : (F : ,
• one : Π {J : Type v} [_inst_1 : (F : ,
• neg : Π {J : Type v} [_inst_1 : (F : ,
• add : Π {J : Type v} [_inst_1 : (F : ,
• mul : Π {J : Type v} [_inst_1 : (F : ,

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

@[protected, instance]
Equations
inductive CommRing.colimits.relation {J : Type v} (F : J CommRing) :
• 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)), ((F.map f) x))
• zero : ∀ {J : Type v} [_inst_1 : (F : (j : J),
• one : ∀ {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)),
• mul : ∀ {J : Type v} [_inst_1 : (F : (j : J) (x y : (F.obj j)),
• neg_1 : ∀ {J : Type v} [_inst_1 : (F : (x x' : , x'.neg
• add_1 : ∀ {J : Type v} [_inst_1 : (F : (x x' y : , (x.add y) (x'.add y)
• add_2 : ∀ {J : Type v} [_inst_1 : (F : (x y y' : , (x.add y) (x.add y')
• mul_1 : ∀ {J : Type v} [_inst_1 : (F : (x x' y : , (x.mul y) (x'.mul y)
• mul_2 : ∀ {J : Type v} [_inst_1 : (F : (x y y' : , (x.mul y) (x.mul y')
• zero_add : ∀ {J : Type v} [_inst_1 : (F : (x : ,
• add_zero : ∀ {J : Type v} [_inst_1 : (F : (x : ,
• one_mul : ∀ {J : Type v} [_inst_1 : (F : (x : ,
• mul_one : ∀ {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 : , (x.add y) (y.add x)
• mul_comm : ∀ {J : Type v} [_inst_1 : (F : (x y : , (x.mul y) (y.mul x)
• mul_assoc : ∀ {J : Type v} [_inst_1 : (F : (x y z : , ((x.mul y).mul z) (x.mul (y.mul z))
• left_distrib : ∀ {J : Type v} [_inst_1 : (F : (x y z : , (x.mul (y.add z)) ((x.mul y).add (x.mul z))
• right_distrib : ∀ {J : Type v} [_inst_1 : (F : (x y z : , ((x.add y).mul z) ((x.mul z).add (y.mul z))

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

@[instance]
def CommRing.colimits.colimit_setoid {J : Type v} (F : J CommRing) :

The setoid corresponding to commutative expressions modulo monoid relations and identifications.

Equations
@[protected, instance]
def CommRing.colimits.colimit_type {J : Type v} (F : J CommRing) :
Type v

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

Equations
@[protected, instance]
Equations
@[simp]
theorem CommRing.colimits.quot_zero {J : Type v} (F : J CommRing) :
@[simp]
theorem CommRing.colimits.quot_one {J : Type v} (F : J CommRing) :
@[simp]
theorem CommRing.colimits.quot_neg {J : Type v} (F : J CommRing)  :
quot.mk setoid.r x.neg = -quot.mk setoid.r x
@[simp]
theorem CommRing.colimits.quot_add {J : Type v} (F : J CommRing) (x y : CommRing.colimits.prequotient F) :
quot.mk setoid.r (x.add y) = quot.mk setoid.r x + quot.mk setoid.r y
@[simp]
theorem CommRing.colimits.quot_mul {J : Type v} (F : J CommRing) (x y : CommRing.colimits.prequotient F) :
quot.mk setoid.r (x.mul y) = (quot.mk setoid.r x) * quot.mk setoid.r y
def CommRing.colimits.colimit {J : Type v} (F : J CommRing) :

The bundled commutative ring giving the colimit of a diagram.

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

The function from a given commutative ring in the diagram to the colimit commutative ring.

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

The ring homomorphism from a given commutative ring in the diagram to the colimit commutative ring.

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

The cocone over the proposed colimit commutative ring.

Equations
@[simp]
def CommRing.colimits.desc_fun_lift {J : Type v} (F : J CommRing)  :

The function from the free commutative ring on the diagram to the cone point of any other cocone.

Equations
def CommRing.colimits.desc_fun {J : Type v} (F : J CommRing)  :

The function from the colimit commutative ring to the cone point of any other cocone.

Equations
• = quot.lift _
def CommRing.colimits.desc_morphism {J : Type v} (F : J CommRing)  :

The ring homomorphism from the colimit commutative ring to the cone point of any other cocone.

Equations

Evidence that the proposed colimit is the colimit.

Equations
@[protected, instance]