Documentation

Mathlib.Algebra.Category.GroupCat.Limits

The category of (commutative) (additive) groups has all limits #

Further, these limits are preserved by the forgetful functor --- that is, the underlying types are just the limits in the category of types.

The flat sections of a functor into AddGroupCat form an additive subgroup of all sections.

Instances For
    theorem AddGroupCat.sectionsAddSubgroup.proof_2 {J : Type u_1} [CategoryTheory.SmallCategory J] (F : CategoryTheory.Functor J AddGroupCat) :
    ∀ {j j' : J} (f : j j'), J.map CategoryTheory.CategoryStruct.toQuiver (Type (max u_2 u_1)) CategoryTheory.CategoryStruct.toQuiver (CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCat)).toPrefunctor j j' f (OfNat.ofNat ((j : J) → ↑((CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)).obj j)) 0 Zero.toOfNat0 j) = OfNat.ofNat ((j : J) → ↑((CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)).obj j)) 0 Zero.toOfNat0 j'

    The flat sections of a functor into GroupCat form a subgroup of all sections.

    Instances For
      theorem AddGroupCat.Forget₂.createsLimit.proof_3 {J : Type u_2} [CategoryTheory.SmallCategory J] (F : CategoryTheory.Functor J GroupCatMaxAux) (s : CategoryTheory.Limits.Cone F) :
      { val := fun j => J.app inst✝ TypeMax CategoryTheory.types ((CategoryTheory.Functor.const J).obj ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).pt) (CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)) ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).π j 0, property := (_ : ∀ {j j' : J} (f : j j'), CategoryTheory.CategoryStruct.comp TypeMax CategoryTheory.Category.toCategoryStruct (((CategoryTheory.Functor.const J).obj ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).pt).obj j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).obj j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).obj j') (((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).π.app j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).map f) 0 = J.app inst✝ TypeMax CategoryTheory.types ((CategoryTheory.Functor.const J).obj ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).pt) (CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)) ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).π j' 0) } = 0

      We show that the forgetful functor AddGroupCatAddMonCat creates limits.

      All we need to do is notice that the limit point has an AddGroup instance available, and then reuse the existing limit.

      theorem AddGroupCat.Forget₂.createsLimit.proof_2 {J : Type u_1} [CategoryTheory.SmallCategory J] (F : CategoryTheory.Functor J GroupCatMaxAux) (s : CategoryTheory.Limits.Cone F) (v : ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).pt) :
      theorem AddGroupCat.Forget₂.createsLimit.proof_4 {J : Type u_2} [CategoryTheory.SmallCategory J] (F : CategoryTheory.Functor J GroupCatMaxAux) (s : CategoryTheory.Limits.Cone F) (x : ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s).pt) (y : ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s).pt) :
      ZeroHom.toFun { toFun := fun v => { val := fun j => J.app inst✝ TypeMax CategoryTheory.types ((CategoryTheory.Functor.const J).obj ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).pt) (CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)) ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).π j v, property := (_ : ∀ {j j' : J} (f : j j'), CategoryTheory.CategoryStruct.comp TypeMax CategoryTheory.Category.toCategoryStruct (((CategoryTheory.Functor.const J).obj ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).pt).obj j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).obj j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).obj j') (((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).π.app j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).map f) v = J.app inst✝ TypeMax CategoryTheory.types ((CategoryTheory.Functor.const J).obj ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).pt) (CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)) ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).π j' v) }, map_zero' := (_ : { val := fun j => J.app inst✝ TypeMax CategoryTheory.types ((CategoryTheory.Functor.const J).obj ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).pt) (CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)) ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).π j 0, property := (_ : ∀ {j j' : J} (f : j j'), CategoryTheory.CategoryStruct.comp TypeMax CategoryTheory.Category.toCategoryStruct (((CategoryTheory.Functor.const J).obj ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).pt).obj j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).obj j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).obj j') (((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).π.app j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).map f) 0 = J.app inst✝ TypeMax CategoryTheory.types ((CategoryTheory.Functor.const J).obj ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).pt) (CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)) ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).π j' 0) } = 0) } (x + y) = ZeroHom.toFun { toFun := fun v => { val := fun j => J.app inst✝ TypeMax CategoryTheory.types ((CategoryTheory.Functor.const J).obj ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).pt) (CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)) ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).π j v, property := (_ : ∀ {j j' : J} (f : j j'), CategoryTheory.CategoryStruct.comp TypeMax CategoryTheory.Category.toCategoryStruct (((CategoryTheory.Functor.const J).obj ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).pt).obj j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).obj j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).obj j') (((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).π.app j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).map f) v = J.app inst✝ TypeMax CategoryTheory.types ((CategoryTheory.Functor.const J).obj ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).pt) (CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)) ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).π j' v) }, map_zero' := (_ : { val := fun j => J.app inst✝ TypeMax CategoryTheory.types ((CategoryTheory.Functor.const J).obj ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).pt) (CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)) ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).π j 0, property := (_ : ∀ {j j' : J} (f : j j'), CategoryTheory.CategoryStruct.comp TypeMax CategoryTheory.Category.toCategoryStruct (((CategoryTheory.Functor.const J).obj ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).pt).obj j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).obj j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).obj j') (((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).π.app j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).map f) 0 = J.app inst✝ TypeMax CategoryTheory.types ((CategoryTheory.Functor.const J).obj ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).pt) (CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)) ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).π j' 0) } = 0) } x + ZeroHom.toFun { toFun := fun v => { val := fun j => J.app inst✝ TypeMax CategoryTheory.types ((CategoryTheory.Functor.const J).obj ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).pt) (CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)) ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).π j v, property := (_ : ∀ {j j' : J} (f : j j'), CategoryTheory.CategoryStruct.comp TypeMax CategoryTheory.Category.toCategoryStruct (((CategoryTheory.Functor.const J).obj ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).pt).obj j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).obj j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).obj j') (((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).π.app j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).map f) v = J.app inst✝ TypeMax CategoryTheory.types ((CategoryTheory.Functor.const J).obj ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).pt) (CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)) ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).π j' v) }, map_zero' := (_ : { val := fun j => J.app inst✝ TypeMax CategoryTheory.types ((CategoryTheory.Functor.const J).obj ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).pt) (CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)) ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).π j 0, property := (_ : ∀ {j j' : J} (f : j j'), CategoryTheory.CategoryStruct.comp TypeMax CategoryTheory.Category.toCategoryStruct (((CategoryTheory.Functor.const J).obj ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).pt).obj j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).obj j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).obj j') (((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).π.app j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).map f) 0 = J.app inst✝ TypeMax CategoryTheory.types ((CategoryTheory.Functor.const J).obj ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).pt) (CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)) ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).π j' 0) } = 0) } y
      theorem AddGroupCat.Forget₂.createsLimit.proof_5 {J : Type u_1} [CategoryTheory.SmallCategory J] (F : CategoryTheory.Functor J GroupCatMaxAux) (c' : CategoryTheory.Limits.Cone (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat))) (t : CategoryTheory.Limits.IsLimit c') (s : CategoryTheory.Limits.Cone F) :
      (CategoryTheory.forget₂ AddGroupCat AddMonCat).map ((fun s => { toZeroHom := { toFun := fun v => { val := fun j => J.app inst✝ TypeMax CategoryTheory.types ((CategoryTheory.Functor.const J).obj ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).pt) (CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)) ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).π j v, property := (_ : ∀ {j j' : J} (f : j j'), CategoryTheory.CategoryStruct.comp TypeMax CategoryTheory.Category.toCategoryStruct (((CategoryTheory.Functor.const J).obj ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).pt).obj j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).obj j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).obj j') (((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).π.app j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).map f) v = J.app inst✝ TypeMax CategoryTheory.types ((CategoryTheory.Functor.const J).obj ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).pt) (CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)) ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).π j' v) }, map_zero' := (_ : { val := fun j => J.app inst✝ TypeMax CategoryTheory.types ((CategoryTheory.Functor.const J).obj ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).pt) (CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)) ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).π j 0, property := (_ : ∀ {j j' : J} (f : j j'), CategoryTheory.CategoryStruct.comp TypeMax CategoryTheory.Category.toCategoryStruct (((CategoryTheory.Functor.const J).obj ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).pt).obj j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).obj j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).obj j') (((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).π.app j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).map f) 0 = J.app inst✝ TypeMax CategoryTheory.types ((CategoryTheory.Functor.const J).obj ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).pt) (CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)) ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).π j' 0) } = 0) }, map_add' := (_ : ∀ (x y : ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s).pt), ZeroHom.toFun { toFun := fun v => { val := fun j => J.app inst✝ TypeMax CategoryTheory.types ((CategoryTheory.Functor.const J).obj ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).pt) (CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)) ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).π j v, property := (_ : ∀ {j j' : J} (f : j j'), CategoryTheory.CategoryStruct.comp TypeMax CategoryTheory.Category.toCategoryStruct (((CategoryTheory.Functor.const J).obj ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).pt).obj j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).obj j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).obj j') (((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).π.app j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).map f) v = J.app inst✝ TypeMax CategoryTheory.types ((CategoryTheory.Functor.const J).obj ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).pt) (CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)) ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).π j' v) }, map_zero' := (_ : { val := fun j => J.app inst✝ TypeMax CategoryTheory.types ((CategoryTheory.Functor.const J).obj ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).pt) (CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)) ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).π j 0, property := (_ : ∀ {j j' : J} (f : j j'), CategoryTheory.CategoryStruct.comp TypeMax CategoryTheory.Category.toCategoryStruct (((CategoryTheory.Functor.const J).obj ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).pt).obj j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).obj j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).obj j') (((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).π.app j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).map f) 0 = J.app inst✝ TypeMax CategoryTheory.types ((CategoryTheory.Functor.const J).obj ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).pt) (CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)) ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).π j' 0) } = 0) } (x + y) = ZeroHom.toFun { toFun := fun v => { val := fun j => J.app inst✝ TypeMax CategoryTheory.types ((CategoryTheory.Functor.const J).obj ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).pt) (CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)) ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).π j v, property := (_ : ∀ {j j' : J} (f : j j'), CategoryTheory.CategoryStruct.comp TypeMax CategoryTheory.Category.toCategoryStruct (((CategoryTheory.Functor.const J).obj ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).pt).obj j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).obj j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).obj j') (((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).π.app j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).map f) v = J.app inst✝ TypeMax CategoryTheory.types ((CategoryTheory.Functor.const J).obj ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).pt) (CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)) ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).π j' v) }, map_zero' := (_ : { val := fun j => J.app inst✝ TypeMax CategoryTheory.types ((CategoryTheory.Functor.const J).obj ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).pt) (CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)) ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).π j 0, property := (_ : ∀ {j j' : J} (f : j j'), CategoryTheory.CategoryStruct.comp TypeMax CategoryTheory.Category.toCategoryStruct (((CategoryTheory.Functor.const J).obj ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).pt).obj j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).obj j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).obj j') (((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).π.app j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).map f) 0 = J.app inst✝ TypeMax CategoryTheory.types ((CategoryTheory.Functor.const J).obj ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).pt) (CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)) ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).π j' 0) } = 0) } x + ZeroHom.toFun { toFun := fun v => { val := fun j => J.app inst✝ TypeMax CategoryTheory.types ((CategoryTheory.Functor.const J).obj ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).pt) (CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)) ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).π j v, property := (_ : ∀ {j j' : J} (f : j j'), CategoryTheory.CategoryStruct.comp TypeMax CategoryTheory.Category.toCategoryStruct (((CategoryTheory.Functor.const J).obj ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).pt).obj j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).obj j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).obj j') (((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).π.app j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).map f) v = J.app inst✝ TypeMax CategoryTheory.types ((CategoryTheory.Functor.const J).obj ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).pt) (CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)) ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).π j' v) }, map_zero' := (_ : { val := fun j => J.app inst✝ TypeMax CategoryTheory.types ((CategoryTheory.Functor.const J).obj ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).pt) (CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)) ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).π j 0, property := (_ : ∀ {j j' : J} (f : j j'), CategoryTheory.CategoryStruct.comp TypeMax CategoryTheory.Category.toCategoryStruct (((CategoryTheory.Functor.const J).obj ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).pt).obj j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).obj j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).obj j') (((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).π.app j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).map f) 0 = J.app inst✝ TypeMax CategoryTheory.types ((CategoryTheory.Functor.const J).obj ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).pt) (CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)) ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).π j' 0) } = 0) } y) }) s) = (CategoryTheory.forget₂ AddGroupCat AddMonCat).map ((fun s => { toZeroHom := { toFun := fun v => { val := fun j => J.app inst✝ TypeMax CategoryTheory.types ((CategoryTheory.Functor.const J).obj ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).pt) (CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)) ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).π j v, property := (_ : ∀ {j j' : J} (f : j j'), CategoryTheory.CategoryStruct.comp TypeMax CategoryTheory.Category.toCategoryStruct (((CategoryTheory.Functor.const J).obj ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).pt).obj j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).obj j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).obj j') (((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).π.app j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).map f) v = J.app inst✝ TypeMax CategoryTheory.types ((CategoryTheory.Functor.const J).obj ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).pt) (CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)) ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).π j' v) }, map_zero' := (_ : { val := fun j => J.app inst✝ TypeMax CategoryTheory.types ((CategoryTheory.Functor.const J).obj ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).pt) (CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)) ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).π j 0, property := (_ : ∀ {j j' : J} (f : j j'), CategoryTheory.CategoryStruct.comp TypeMax CategoryTheory.Category.toCategoryStruct (((CategoryTheory.Functor.const J).obj ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).pt).obj j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).obj j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).obj j') (((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).π.app j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).map f) 0 = J.app inst✝ TypeMax CategoryTheory.types ((CategoryTheory.Functor.const J).obj ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).pt) (CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)) ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).π j' 0) } = 0) }, map_add' := (_ : ∀ (x y : ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s).pt), ZeroHom.toFun { toFun := fun v => { val := fun j => J.app inst✝ TypeMax CategoryTheory.types ((CategoryTheory.Functor.const J).obj ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).pt) (CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)) ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).π j v, property := (_ : ∀ {j j' : J} (f : j j'), CategoryTheory.CategoryStruct.comp TypeMax CategoryTheory.Category.toCategoryStruct (((CategoryTheory.Functor.const J).obj ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).pt).obj j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).obj j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).obj j') (((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).π.app j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).map f) v = J.app inst✝ TypeMax CategoryTheory.types ((CategoryTheory.Functor.const J).obj ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).pt) (CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)) ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).π j' v) }, map_zero' := (_ : { val := fun j => J.app inst✝ TypeMax CategoryTheory.types ((CategoryTheory.Functor.const J).obj ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).pt) (CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)) ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).π j 0, property := (_ : ∀ {j j' : J} (f : j j'), CategoryTheory.CategoryStruct.comp TypeMax CategoryTheory.Category.toCategoryStruct (((CategoryTheory.Functor.const J).obj ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).pt).obj j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).obj j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).obj j') (((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).π.app j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).map f) 0 = J.app inst✝ TypeMax CategoryTheory.types ((CategoryTheory.Functor.const J).obj ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).pt) (CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)) ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).π j' 0) } = 0) } (x + y) = ZeroHom.toFun { toFun := fun v => { val := fun j => J.app inst✝ TypeMax CategoryTheory.types ((CategoryTheory.Functor.const J).obj ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).pt) (CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)) ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).π j v, property := (_ : ∀ {j j' : J} (f : j j'), CategoryTheory.CategoryStruct.comp TypeMax CategoryTheory.Category.toCategoryStruct (((CategoryTheory.Functor.const J).obj ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).pt).obj j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).obj j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).obj j') (((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).π.app j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).map f) v = J.app inst✝ TypeMax CategoryTheory.types ((CategoryTheory.Functor.const J).obj ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).pt) (CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)) ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).π j' v) }, map_zero' := (_ : { val := fun j => J.app inst✝ TypeMax CategoryTheory.types ((CategoryTheory.Functor.const J).obj ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).pt) (CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)) ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).π j 0, property := (_ : ∀ {j j' : J} (f : j j'), CategoryTheory.CategoryStruct.comp TypeMax CategoryTheory.Category.toCategoryStruct (((CategoryTheory.Functor.const J).obj ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).pt).obj j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).obj j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).obj j') (((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).π.app j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).map f) 0 = J.app inst✝ TypeMax CategoryTheory.types ((CategoryTheory.Functor.const J).obj ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).pt) (CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)) ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).π j' 0) } = 0) } x + ZeroHom.toFun { toFun := fun v => { val := fun j => J.app inst✝ TypeMax CategoryTheory.types ((CategoryTheory.Functor.const J).obj ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).pt) (CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)) ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).π j v, property := (_ : ∀ {j j' : J} (f : j j'), CategoryTheory.CategoryStruct.comp TypeMax CategoryTheory.Category.toCategoryStruct (((CategoryTheory.Functor.const J).obj ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).pt).obj j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).obj j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).obj j') (((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).π.app j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).map f) v = J.app inst✝ TypeMax CategoryTheory.types ((CategoryTheory.Functor.const J).obj ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).pt) (CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)) ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).π j' v) }, map_zero' := (_ : { val := fun j => J.app inst✝ TypeMax CategoryTheory.types ((CategoryTheory.Functor.const J).obj ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).pt) (CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)) ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).π j 0, property := (_ : ∀ {j j' : J} (f : j j'), CategoryTheory.CategoryStruct.comp TypeMax CategoryTheory.Category.toCategoryStruct (((CategoryTheory.Functor.const J).obj ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).pt).obj j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).obj j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).obj j') (((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).π.app j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).map f) 0 = J.app inst✝ TypeMax CategoryTheory.types ((CategoryTheory.Functor.const J).obj ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).pt) (CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddGroupCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)) ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddGroupCat AddMonCat).mapCone s)).π j' 0) } = 0) } y) }) s)

      We show that the forgetful functor GroupCatMonCat creates limits.

      All we need to do is notice that the limit point has a Group instance available, and then reuse the existing limit.

      A choice of limit cone for a functor into GroupCat. (Generally, you'll just want to use limit F.)

      Instances For

        A choice of limit cone for a functor into GroupCat. (Generally, you'll just want to use limit F.)

        Instances For

          The chosen cone is a limit cone. (Generally, you'll just want to use limit.cone F.)

          Instances For

            The chosen cone is a limit cone. (Generally, you'll just want to use limit.cone F.)

            Instances For

              The forgetful functor from additive groups to additive monoids preserves all limits.

              This means the underlying additive monoid of a limit can be computed as a limit in the category of additive monoids.

              The forgetful functor from groups to monoids preserves all limits.

              This means the underlying monoid of a limit can be computed as a limit in the category of monoids.

              The forgetful functor from additive groups to types preserves all limits.

              This means the underlying type of a limit can be computed as a limit in the category of types.

              The forgetful functor from groups to types preserves all limits.

              This means the underlying type of a limit can be computed as a limit in the category of types.

              We show that the forgetful functor AddCommGroupCatAddGroupCat creates limits.

              All we need to do is notice that the limit point has an AddCommGroup instance available, and then reuse the existing limit.

              We show that the forgetful functor CommGroupCatGroupCat creates limits.

              All we need to do is notice that the limit point has a CommGroup instance available, and then reuse the existing limit.

              A choice of limit cone for a functor into AddCommGroupCat. (Generally, you'll just want to use limit F.)

              Instances For

                A choice of limit cone for a functor into CommGroupCat. (Generally, you'll just want to use limit F.)

                Instances For

                  The chosen cone is a limit cone. (Generally, you'll just want to use limit.cone F.)

                  Instances For

                    The chosen cone is a limit cone. (Generally, you'll just want to use limit.cone F.)

                    Instances For

                      The forgetful functor from additive commutative groups to groups preserves all limits. (That is, the underlying group could have been computed instead as limits in the category of additive groups.)

                      The forgetful functor from commutative groups to groups preserves all limits. (That is, the underlying group could have been computed instead as limits in the category of groups.)

                      The forgetful functor from additive commutative groups to additive commutative monoids preserves all limits. (That is, the underlying additive commutative monoids could have been computed instead as limits in the category of additive commutative monoids.)

                      The forgetful functor from commutative groups to commutative monoids preserves all limits. (That is, the underlying commutative monoids could have been computed instead as limits in the category of commutative monoids.)

                      The forgetful functor from additive commutative groups to types preserves all limits. (That is, the underlying types could have been computed instead as limits in the category of types.)

                      The forgetful functor from commutative groups to types preserves all limits. (That is, the underlying types could have been computed instead as limits in the category of types.)

                      The categorical kernel of a morphism in AddCommGroupCat agrees with the usual group-theoretical kernel.

                      Instances For

                        The categorical kernel inclusion for f : G ⟶ H, as an object over G, agrees with the subtype map.

                        Instances For