The category of additive commutative groups has all colimits. #
This file uses a "pre-automated" approach, just as for Algebra.Category.MonCat.Colimits
.
It is a very uniform approach, that conceivably could be synthesised directly
by a tactic that analyses the shape of AddCommGroup
and MonoidHom
.
TODO:
In fact, in AddCommGrp
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 AddCommGrp
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.
An inductive type representing all group expressions (without relations)
on a collection of types indexed by the objects of J
.
- of: {J : Type u} → [inst : CategoryTheory.Category.{v, u} J] → {F : CategoryTheory.Functor J AddCommGrp} → (j : J) → ↑(F.obj j) → AddCommGrp.Colimits.Prequotient F
- zero: {J : Type u} → [inst : CategoryTheory.Category.{v, u} J] → {F : CategoryTheory.Functor J AddCommGrp} → AddCommGrp.Colimits.Prequotient F
- neg: {J : Type u} → [inst : CategoryTheory.Category.{v, u} J] → {F : CategoryTheory.Functor J AddCommGrp} → AddCommGrp.Colimits.Prequotient F → AddCommGrp.Colimits.Prequotient F
- add: {J : Type u} → [inst : CategoryTheory.Category.{v, u} J] → {F : CategoryTheory.Functor J AddCommGrp} → AddCommGrp.Colimits.Prequotient F → AddCommGrp.Colimits.Prequotient F → AddCommGrp.Colimits.Prequotient F
Instances For
Equations
- AddCommGrp.Colimits.instInhabitedPrequotient F = { default := AddCommGrp.Colimits.Prequotient.zero }
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.
- refl: ∀ {J : Type u} [inst : CategoryTheory.Category.{v, u} J] {F : CategoryTheory.Functor J AddCommGrp} (x : AddCommGrp.Colimits.Prequotient F), AddCommGrp.Colimits.Relation F x x
- symm: ∀ {J : Type u} [inst : CategoryTheory.Category.{v, u} J] {F : CategoryTheory.Functor J AddCommGrp} (x y : AddCommGrp.Colimits.Prequotient F), AddCommGrp.Colimits.Relation F x y → AddCommGrp.Colimits.Relation F y x
- trans: ∀ {J : Type u} [inst : CategoryTheory.Category.{v, u} J] {F : CategoryTheory.Functor J AddCommGrp} (x y z : AddCommGrp.Colimits.Prequotient F), AddCommGrp.Colimits.Relation F x y → AddCommGrp.Colimits.Relation F y z → AddCommGrp.Colimits.Relation F x z
- map: ∀ {J : Type u} [inst : CategoryTheory.Category.{v, u} J] {F : CategoryTheory.Functor J AddCommGrp} (j j' : J) (f : j ⟶ j') (x : ↑(F.obj j)), AddCommGrp.Colimits.Relation F (AddCommGrp.Colimits.Prequotient.of j' ((F.map f) x)) (AddCommGrp.Colimits.Prequotient.of j x)
- zero: ∀ {J : Type u} [inst : CategoryTheory.Category.{v, u} J] {F : CategoryTheory.Functor J AddCommGrp} (j : J), AddCommGrp.Colimits.Relation F (AddCommGrp.Colimits.Prequotient.of j 0) AddCommGrp.Colimits.Prequotient.zero
- neg: ∀ {J : Type u} [inst : CategoryTheory.Category.{v, u} J] {F : CategoryTheory.Functor J AddCommGrp} (j : J) (x : ↑(F.obj j)), AddCommGrp.Colimits.Relation F (AddCommGrp.Colimits.Prequotient.of j (-x)) (AddCommGrp.Colimits.Prequotient.of j x).neg
- add: ∀ {J : Type u} [inst : CategoryTheory.Category.{v, u} J] {F : CategoryTheory.Functor J AddCommGrp} (j : J) (x y : ↑(F.obj j)), AddCommGrp.Colimits.Relation F (AddCommGrp.Colimits.Prequotient.of j (x + y)) ((AddCommGrp.Colimits.Prequotient.of j x).add (AddCommGrp.Colimits.Prequotient.of j y))
- neg_1: ∀ {J : Type u} [inst : CategoryTheory.Category.{v, u} J] {F : CategoryTheory.Functor J AddCommGrp} (x x' : AddCommGrp.Colimits.Prequotient F), AddCommGrp.Colimits.Relation F x x' → AddCommGrp.Colimits.Relation F x.neg x'.neg
- add_1: ∀ {J : Type u} [inst : CategoryTheory.Category.{v, u} J] {F : CategoryTheory.Functor J AddCommGrp} (x x' y : AddCommGrp.Colimits.Prequotient F), AddCommGrp.Colimits.Relation F x x' → AddCommGrp.Colimits.Relation F (x.add y) (x'.add y)
- add_2: ∀ {J : Type u} [inst : CategoryTheory.Category.{v, u} J] {F : CategoryTheory.Functor J AddCommGrp} (x y y' : AddCommGrp.Colimits.Prequotient F), AddCommGrp.Colimits.Relation F y y' → AddCommGrp.Colimits.Relation F (x.add y) (x.add y')
- zero_add: ∀ {J : Type u} [inst : CategoryTheory.Category.{v, u} J] {F : CategoryTheory.Functor J AddCommGrp} (x : AddCommGrp.Colimits.Prequotient F), AddCommGrp.Colimits.Relation F (AddCommGrp.Colimits.Prequotient.zero.add x) x
- add_zero: ∀ {J : Type u} [inst : CategoryTheory.Category.{v, u} J] {F : CategoryTheory.Functor J AddCommGrp} (x : AddCommGrp.Colimits.Prequotient F), AddCommGrp.Colimits.Relation F (x.add AddCommGrp.Colimits.Prequotient.zero) x
- neg_add_cancel: ∀ {J : Type u} [inst : CategoryTheory.Category.{v, u} J] {F : CategoryTheory.Functor J AddCommGrp} (x : AddCommGrp.Colimits.Prequotient F), AddCommGrp.Colimits.Relation F (x.neg.add x) AddCommGrp.Colimits.Prequotient.zero
- add_comm: ∀ {J : Type u} [inst : CategoryTheory.Category.{v, u} J] {F : CategoryTheory.Functor J AddCommGrp} (x y : AddCommGrp.Colimits.Prequotient F), AddCommGrp.Colimits.Relation F (x.add y) (y.add x)
- add_assoc: ∀ {J : Type u} [inst : CategoryTheory.Category.{v, u} J] {F : CategoryTheory.Functor J AddCommGrp} (x y z : AddCommGrp.Colimits.Prequotient F), AddCommGrp.Colimits.Relation F ((x.add y).add z) (x.add (y.add z))
Instances For
The setoid corresponding to group expressions modulo abelian group relations and identifications.
Equations
- AddCommGrp.Colimits.colimitSetoid F = { r := AddCommGrp.Colimits.Relation F, iseqv := ⋯ }
The underlying type of the colimit of a diagram in AddCommGrp
.
Instances For
Equations
- AddCommGrp.Colimits.instZeroColimitType F = { zero := ⟦AddCommGrp.Colimits.Prequotient.zero⟧ }
Equations
- AddCommGrp.Colimits.instNegColimitType F = { neg := Quotient.map AddCommGrp.Colimits.Prequotient.neg ⋯ }
Equations
- AddCommGrp.Colimits.instAddColimitType F = { add := Quotient.map₂ AddCommGrp.Colimits.Prequotient.add ⋯ }
Equations
- AddCommGrp.Colimits.ColimitTypeInhabited F = { default := 0 }
The bundled abelian group giving the colimit of a diagram.
Equations
Instances For
The function from a given abelian group in the diagram to the colimit abelian group.
Equations
Instances For
The group homomorphism from a given abelian group in the diagram to the colimit abelian group.
Equations
- AddCommGrp.Colimits.coconeMorphism F j = { toFun := AddCommGrp.Colimits.coconeFun F j, map_zero' := ⋯, map_add' := ⋯ }
Instances For
The cocone over the proposed colimit abelian group.
Equations
- AddCommGrp.Colimits.colimitCocone F = { pt := AddCommGrp.Colimits.colimit F, ι := { app := AddCommGrp.Colimits.coconeMorphism F, naturality := ⋯ } }
Instances For
The function from the free abelian group on the diagram to the cone point of any other cocone.
Equations
- AddCommGrp.Colimits.descFunLift F s (AddCommGrp.Colimits.Prequotient.of j x_1) = (s.ι.app j) x_1
- AddCommGrp.Colimits.descFunLift F s AddCommGrp.Colimits.Prequotient.zero = 0
- AddCommGrp.Colimits.descFunLift F s x_1.neg = -AddCommGrp.Colimits.descFunLift F s x_1
- AddCommGrp.Colimits.descFunLift F s (x_1.add y) = AddCommGrp.Colimits.descFunLift F s x_1 + AddCommGrp.Colimits.descFunLift F s y
Instances For
The function from the colimit abelian group to the cone point of any other cocone.
Equations
Instances For
The group homomorphism from the colimit abelian group to the cone point of any other cocone.
Equations
- AddCommGrp.Colimits.descMorphism F s = { toFun := AddCommGrp.Colimits.descFun F s, map_zero' := ⋯, map_add' := ⋯ }
Instances For
Evidence that the proposed colimit is the colimit.
Equations
- AddCommGrp.Colimits.colimitCoconeIsColimit F = { desc := fun (s : CategoryTheory.Limits.Cocone F) => AddCommGrp.Colimits.descMorphism F s, fac := ⋯, uniq := ⋯ }
Instances For
The categorical cokernel of a morphism in AddCommGrp
agrees with the usual group-theoretical quotient.
Equations
- One or more equations did not get rendered due to their size.