Documentation

Mathlib.Algebra.Category.MonCat.Limits

The category of (commutative) (additive) monoids 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.

abbrev AddMonCatMax :
Type ((max u1 u2) + 1)

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

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

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

    Equations
    Instances For
      Equations
      Equations
      theorem AddMonCat.sectionsAddSubmonoid.proof_2 {J : Type u_1} [CategoryTheory.SmallCategory J] (F : CategoryTheory.Functor J AddMonCatMax) {j : J} {j' : J} (f : j j') :
      (F.toPrefunctor.map f) 0 = 0

      The flat sections of a functor into AddMonCat form an additive submonoid of all sections.

      Equations
      • One or more equations did not get rendered due to their size.
      Instances For
        def MonCat.sectionsSubmonoid {J : Type v} [CategoryTheory.SmallCategory J] (F : CategoryTheory.Functor J MonCatMax) :
        Submonoid ((j : J) → (F.toPrefunctor.obj j))

        The flat sections of a functor into MonCat form a submonoid of all sections.

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

          limit.π (F ⋙ forget AddMonCat) j as an AddMonoidHom.

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

            limit.π (F ⋙ forget MonCat) j as a MonoidHom.

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

              (Internal use only; use the limits API.)

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

                Construction of a limit cone in MonCat. (Internal use only; use the limits API.)

                Equations
                • One or more equations did not get rendered due to their size.
                Instances For
                  theorem AddMonCat.HasLimits.limitConeIsLimit.proof_2 {J : Type u_2} [CategoryTheory.SmallCategory J] (F : CategoryTheory.Functor J AddMonCatMax) (s : CategoryTheory.Limits.Cone F) :
                  { val := fun (j : J) => ((CategoryTheory.forget AddMonCatMax).mapCone s).app j 0, property := (_ : ∀ {j j' : J} (f : j j'), CategoryTheory.CategoryStruct.comp (((CategoryTheory.forget AddMonCatMax).mapCone s).app j) ((CategoryTheory.Functor.comp F (CategoryTheory.forget AddMonCatMax)).toPrefunctor.map f) 0 = ((CategoryTheory.forget AddMonCatMax).mapCone s).app j' 0) } = 0
                  theorem AddMonCat.HasLimits.limitConeIsLimit.proof_4 {J : Type u_1} [CategoryTheory.SmallCategory J] (F : CategoryTheory.Functor J AddMonCatMax) (s : CategoryTheory.Limits.Cone F) :
                  (CategoryTheory.forget AddMonCatMax).toPrefunctor.map ((fun (s : CategoryTheory.Limits.Cone F) => { toZeroHom := { toFun := fun (v : ((CategoryTheory.forget AddMonCatMax).mapCone s).pt) => { val := fun (j : J) => ((CategoryTheory.forget AddMonCatMax).mapCone s).app j v, property := (_ : ∀ {j j' : J} (f : j j'), CategoryTheory.CategoryStruct.comp (((CategoryTheory.forget AddMonCatMax).mapCone s).app j) ((CategoryTheory.Functor.comp F (CategoryTheory.forget AddMonCatMax)).toPrefunctor.map f) v = ((CategoryTheory.forget AddMonCatMax).mapCone s).app j' v) }, map_zero' := (_ : { val := fun (j : J) => ((CategoryTheory.forget AddMonCatMax).mapCone s).app j 0, property := (_ : ∀ {j j' : J} (f : j j'), CategoryTheory.CategoryStruct.comp (((CategoryTheory.forget AddMonCatMax).mapCone s).app j) ((CategoryTheory.Functor.comp F (CategoryTheory.forget AddMonCatMax)).toPrefunctor.map f) 0 = ((CategoryTheory.forget AddMonCatMax).mapCone s).app j' 0) } = 0) }, map_add' := (_ : ∀ (x y : s.pt), { toFun := fun (v : ((CategoryTheory.forget AddMonCatMax).mapCone s).pt) => { val := fun (j : J) => ((CategoryTheory.forget AddMonCatMax).mapCone s).app j v, property := (_ : ∀ {j j' : J} (f : j j'), CategoryTheory.CategoryStruct.comp (((CategoryTheory.forget AddMonCatMax).mapCone s).app j) ((CategoryTheory.Functor.comp F (CategoryTheory.forget AddMonCatMax)).toPrefunctor.map f) v = ((CategoryTheory.forget AddMonCatMax).mapCone s).app j' v) }, map_zero' := (_ : { val := fun (j : J) => ((CategoryTheory.forget AddMonCatMax).mapCone s).app j 0, property := (_ : ∀ {j j' : J} (f : j j'), CategoryTheory.CategoryStruct.comp (((CategoryTheory.forget AddMonCatMax).mapCone s).app j) ((CategoryTheory.Functor.comp F (CategoryTheory.forget AddMonCatMax)).toPrefunctor.map f) 0 = ((CategoryTheory.forget AddMonCatMax).mapCone s).app j' 0) } = 0) }.toFun (x + y) = { toFun := fun (v : ((CategoryTheory.forget AddMonCatMax).mapCone s).pt) => { val := fun (j : J) => ((CategoryTheory.forget AddMonCatMax).mapCone s).app j v, property := (_ : ∀ {j j' : J} (f : j j'), CategoryTheory.CategoryStruct.comp (((CategoryTheory.forget AddMonCatMax).mapCone s).app j) ((CategoryTheory.Functor.comp F (CategoryTheory.forget AddMonCatMax)).toPrefunctor.map f) v = ((CategoryTheory.forget AddMonCatMax).mapCone s).app j' v) }, map_zero' := (_ : { val := fun (j : J) => ((CategoryTheory.forget AddMonCatMax).mapCone s).app j 0, property := (_ : ∀ {j j' : J} (f : j j'), CategoryTheory.CategoryStruct.comp (((CategoryTheory.forget AddMonCatMax).mapCone s).app j) ((CategoryTheory.Functor.comp F (CategoryTheory.forget AddMonCatMax)).toPrefunctor.map f) 0 = ((CategoryTheory.forget AddMonCatMax).mapCone s).app j' 0) } = 0) }.toFun x + { toFun := fun (v : ((CategoryTheory.forget AddMonCatMax).mapCone s).pt) => { val := fun (j : J) => ((CategoryTheory.forget AddMonCatMax).mapCone s).app j v, property := (_ : ∀ {j j' : J} (f : j j'), CategoryTheory.CategoryStruct.comp (((CategoryTheory.forget AddMonCatMax).mapCone s).app j) ((CategoryTheory.Functor.comp F (CategoryTheory.forget AddMonCatMax)).toPrefunctor.map f) v = ((CategoryTheory.forget AddMonCatMax).mapCone s).app j' v) }, map_zero' := (_ : { val := fun (j : J) => ((CategoryTheory.forget AddMonCatMax).mapCone s).app j 0, property := (_ : ∀ {j j' : J} (f : j j'), CategoryTheory.CategoryStruct.comp (((CategoryTheory.forget AddMonCatMax).mapCone s).app j) ((CategoryTheory.Functor.comp F (CategoryTheory.forget AddMonCatMax)).toPrefunctor.map f) 0 = ((CategoryTheory.forget AddMonCatMax).mapCone s).app j' 0) } = 0) }.toFun y) }) s) = (CategoryTheory.forget AddMonCatMax).toPrefunctor.map ((fun (s : CategoryTheory.Limits.Cone F) => { toZeroHom := { toFun := fun (v : ((CategoryTheory.forget AddMonCatMax).mapCone s).pt) => { val := fun (j : J) => ((CategoryTheory.forget AddMonCatMax).mapCone s).app j v, property := (_ : ∀ {j j' : J} (f : j j'), CategoryTheory.CategoryStruct.comp (((CategoryTheory.forget AddMonCatMax).mapCone s).app j) ((CategoryTheory.Functor.comp F (CategoryTheory.forget AddMonCatMax)).toPrefunctor.map f) v = ((CategoryTheory.forget AddMonCatMax).mapCone s).app j' v) }, map_zero' := (_ : { val := fun (j : J) => ((CategoryTheory.forget AddMonCatMax).mapCone s).app j 0, property := (_ : ∀ {j j' : J} (f : j j'), CategoryTheory.CategoryStruct.comp (((CategoryTheory.forget AddMonCatMax).mapCone s).app j) ((CategoryTheory.Functor.comp F (CategoryTheory.forget AddMonCatMax)).toPrefunctor.map f) 0 = ((CategoryTheory.forget AddMonCatMax).mapCone s).app j' 0) } = 0) }, map_add' := (_ : ∀ (x y : s.pt), { toFun := fun (v : ((CategoryTheory.forget AddMonCatMax).mapCone s).pt) => { val := fun (j : J) => ((CategoryTheory.forget AddMonCatMax).mapCone s).app j v, property := (_ : ∀ {j j' : J} (f : j j'), CategoryTheory.CategoryStruct.comp (((CategoryTheory.forget AddMonCatMax).mapCone s).app j) ((CategoryTheory.Functor.comp F (CategoryTheory.forget AddMonCatMax)).toPrefunctor.map f) v = ((CategoryTheory.forget AddMonCatMax).mapCone s).app j' v) }, map_zero' := (_ : { val := fun (j : J) => ((CategoryTheory.forget AddMonCatMax).mapCone s).app j 0, property := (_ : ∀ {j j' : J} (f : j j'), CategoryTheory.CategoryStruct.comp (((CategoryTheory.forget AddMonCatMax).mapCone s).app j) ((CategoryTheory.Functor.comp F (CategoryTheory.forget AddMonCatMax)).toPrefunctor.map f) 0 = ((CategoryTheory.forget AddMonCatMax).mapCone s).app j' 0) } = 0) }.toFun (x + y) = { toFun := fun (v : ((CategoryTheory.forget AddMonCatMax).mapCone s).pt) => { val := fun (j : J) => ((CategoryTheory.forget AddMonCatMax).mapCone s).app j v, property := (_ : ∀ {j j' : J} (f : j j'), CategoryTheory.CategoryStruct.comp (((CategoryTheory.forget AddMonCatMax).mapCone s).app j) ((CategoryTheory.Functor.comp F (CategoryTheory.forget AddMonCatMax)).toPrefunctor.map f) v = ((CategoryTheory.forget AddMonCatMax).mapCone s).app j' v) }, map_zero' := (_ : { val := fun (j : J) => ((CategoryTheory.forget AddMonCatMax).mapCone s).app j 0, property := (_ : ∀ {j j' : J} (f : j j'), CategoryTheory.CategoryStruct.comp (((CategoryTheory.forget AddMonCatMax).mapCone s).app j) ((CategoryTheory.Functor.comp F (CategoryTheory.forget AddMonCatMax)).toPrefunctor.map f) 0 = ((CategoryTheory.forget AddMonCatMax).mapCone s).app j' 0) } = 0) }.toFun x + { toFun := fun (v : ((CategoryTheory.forget AddMonCatMax).mapCone s).pt) => { val := fun (j : J) => ((CategoryTheory.forget AddMonCatMax).mapCone s).app j v, property := (_ : ∀ {j j' : J} (f : j j'), CategoryTheory.CategoryStruct.comp (((CategoryTheory.forget AddMonCatMax).mapCone s).app j) ((CategoryTheory.Functor.comp F (CategoryTheory.forget AddMonCatMax)).toPrefunctor.map f) v = ((CategoryTheory.forget AddMonCatMax).mapCone s).app j' v) }, map_zero' := (_ : { val := fun (j : J) => ((CategoryTheory.forget AddMonCatMax).mapCone s).app j 0, property := (_ : ∀ {j j' : J} (f : j j'), CategoryTheory.CategoryStruct.comp (((CategoryTheory.forget AddMonCatMax).mapCone s).app j) ((CategoryTheory.Functor.comp F (CategoryTheory.forget AddMonCatMax)).toPrefunctor.map f) 0 = ((CategoryTheory.forget AddMonCatMax).mapCone s).app j' 0) } = 0) }.toFun y) }) s)
                  theorem AddMonCat.HasLimits.limitConeIsLimit.proof_3 {J : Type u_2} [CategoryTheory.SmallCategory J] (F : CategoryTheory.Functor J AddMonCatMax) (s : CategoryTheory.Limits.Cone F) (x : s.pt) (y : s.pt) :
                  { toFun := fun (v : ((CategoryTheory.forget AddMonCatMax).mapCone s).pt) => { val := fun (j : J) => ((CategoryTheory.forget AddMonCatMax).mapCone s).app j v, property := (_ : ∀ {j j' : J} (f : j j'), CategoryTheory.CategoryStruct.comp (((CategoryTheory.forget AddMonCatMax).mapCone s).app j) ((CategoryTheory.Functor.comp F (CategoryTheory.forget AddMonCatMax)).toPrefunctor.map f) v = ((CategoryTheory.forget AddMonCatMax).mapCone s).app j' v) }, map_zero' := (_ : { val := fun (j : J) => ((CategoryTheory.forget AddMonCatMax).mapCone s).app j 0, property := (_ : ∀ {j j' : J} (f : j j'), CategoryTheory.CategoryStruct.comp (((CategoryTheory.forget AddMonCatMax).mapCone s).app j) ((CategoryTheory.Functor.comp F (CategoryTheory.forget AddMonCatMax)).toPrefunctor.map f) 0 = ((CategoryTheory.forget AddMonCatMax).mapCone s).app j' 0) } = 0) }.toFun (x + y) = { toFun := fun (v : ((CategoryTheory.forget AddMonCatMax).mapCone s).pt) => { val := fun (j : J) => ((CategoryTheory.forget AddMonCatMax).mapCone s).app j v, property := (_ : ∀ {j j' : J} (f : j j'), CategoryTheory.CategoryStruct.comp (((CategoryTheory.forget AddMonCatMax).mapCone s).app j) ((CategoryTheory.Functor.comp F (CategoryTheory.forget AddMonCatMax)).toPrefunctor.map f) v = ((CategoryTheory.forget AddMonCatMax).mapCone s).app j' v) }, map_zero' := (_ : { val := fun (j : J) => ((CategoryTheory.forget AddMonCatMax).mapCone s).app j 0, property := (_ : ∀ {j j' : J} (f : j j'), CategoryTheory.CategoryStruct.comp (((CategoryTheory.forget AddMonCatMax).mapCone s).app j) ((CategoryTheory.Functor.comp F (CategoryTheory.forget AddMonCatMax)).toPrefunctor.map f) 0 = ((CategoryTheory.forget AddMonCatMax).mapCone s).app j' 0) } = 0) }.toFun x + { toFun := fun (v : ((CategoryTheory.forget AddMonCatMax).mapCone s).pt) => { val := fun (j : J) => ((CategoryTheory.forget AddMonCatMax).mapCone s).app j v, property := (_ : ∀ {j j' : J} (f : j j'), CategoryTheory.CategoryStruct.comp (((CategoryTheory.forget AddMonCatMax).mapCone s).app j) ((CategoryTheory.Functor.comp F (CategoryTheory.forget AddMonCatMax)).toPrefunctor.map f) v = ((CategoryTheory.forget AddMonCatMax).mapCone s).app j' v) }, map_zero' := (_ : { val := fun (j : J) => ((CategoryTheory.forget AddMonCatMax).mapCone s).app j 0, property := (_ : ∀ {j j' : J} (f : j j'), CategoryTheory.CategoryStruct.comp (((CategoryTheory.forget AddMonCatMax).mapCone s).app j) ((CategoryTheory.Functor.comp F (CategoryTheory.forget AddMonCatMax)).toPrefunctor.map f) 0 = ((CategoryTheory.forget AddMonCatMax).mapCone s).app j' 0) } = 0) }.toFun y

                  (Internal use only; use the limits API.)

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

                    Witness that the limit cone in MonCat is a limit cone. (Internal use only; use the limits API.)

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

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

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

                      Equations

                      The forgetful functor from monoids to types preserves all limits.

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

                      Equations
                      abbrev AddCommMonCatMax :
                      Type ((max u1 u2) + 1)

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

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

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

                        Equations
                        Instances For

                          We show that the forgetful functor AddCommMonCatAddMonCat creates limits.

                          All we need to do is notice that the limit point has an AddCommMonoid instance available,

                          and then reuse the existing limit.

                          Equations
                          • One or more equations did not get rendered due to their size.
                          theorem AddCommMonCat.forget₂CreatesLimit.proof_5 {J : Type u_2} [CategoryTheory.SmallCategory J] (F : CategoryTheory.Functor J AddCommMonCatMax) (s : CategoryTheory.Limits.Cone F) (x : ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s).pt) (y : ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s).pt) :
                          { toFun := fun (v : ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s)).pt) => { val := fun (j : J) => ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s)).app j v, property := (_ : ∀ {j j' : J} (f : j j'), CategoryTheory.CategoryStruct.comp (((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s)).app j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddCommMonCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).toPrefunctor.map f) v = ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s)).app j' v) }, map_zero' := (_ : { val := fun (j : J) => ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s)).app j 0, property := (_ : ∀ {j j' : J} (f : j j'), CategoryTheory.CategoryStruct.comp (((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s)).app j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddCommMonCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).toPrefunctor.map f) 0 = ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s)).app j' 0) } = 0) }.toFun (x + y) = { toFun := fun (v : ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s)).pt) => { val := fun (j : J) => ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s)).app j v, property := (_ : ∀ {j j' : J} (f : j j'), CategoryTheory.CategoryStruct.comp (((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s)).app j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddCommMonCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).toPrefunctor.map f) v = ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s)).app j' v) }, map_zero' := (_ : { val := fun (j : J) => ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s)).app j 0, property := (_ : ∀ {j j' : J} (f : j j'), CategoryTheory.CategoryStruct.comp (((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s)).app j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddCommMonCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).toPrefunctor.map f) 0 = ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s)).app j' 0) } = 0) }.toFun x + { toFun := fun (v : ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s)).pt) => { val := fun (j : J) => ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s)).app j v, property := (_ : ∀ {j j' : J} (f : j j'), CategoryTheory.CategoryStruct.comp (((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s)).app j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddCommMonCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).toPrefunctor.map f) v = ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s)).app j' v) }, map_zero' := (_ : { val := fun (j : J) => ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s)).app j 0, property := (_ : ∀ {j j' : J} (f : j j'), CategoryTheory.CategoryStruct.comp (((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s)).app j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddCommMonCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).toPrefunctor.map f) 0 = ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s)).app j' 0) } = 0) }.toFun y
                          theorem AddCommMonCat.forget₂CreatesLimit.proof_6 {J : Type u_1} [CategoryTheory.SmallCategory J] (F : CategoryTheory.Functor J AddCommMonCatMax) (c' : CategoryTheory.Limits.Cone (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddCommMonCat AddMonCatMax))) (t : CategoryTheory.Limits.IsLimit c') (s : CategoryTheory.Limits.Cone F) :
                          (CategoryTheory.forget₂ AddCommMonCat AddMonCat).toPrefunctor.map ((fun (s : CategoryTheory.Limits.Cone F) => { toZeroHom := { toFun := fun (v : ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s)).pt) => { val := fun (j : J) => ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s)).app j v, property := (_ : ∀ {j j' : J} (f : j j'), CategoryTheory.CategoryStruct.comp (((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s)).app j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddCommMonCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).toPrefunctor.map f) v = ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s)).app j' v) }, map_zero' := (_ : { val := fun (j : J) => ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s)).app j 0, property := (_ : ∀ {j j' : J} (f : j j'), CategoryTheory.CategoryStruct.comp (((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s)).app j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddCommMonCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).toPrefunctor.map f) 0 = ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s)).app j' 0) } = 0) }, map_add' := (_ : ∀ (x y : ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s).pt), { toFun := fun (v : ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s)).pt) => { val := fun (j : J) => ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s)).app j v, property := (_ : ∀ {j j' : J} (f : j j'), CategoryTheory.CategoryStruct.comp (((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s)).app j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddCommMonCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).toPrefunctor.map f) v = ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s)).app j' v) }, map_zero' := (_ : { val := fun (j : J) => ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s)).app j 0, property := (_ : ∀ {j j' : J} (f : j j'), CategoryTheory.CategoryStruct.comp (((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s)).app j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddCommMonCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).toPrefunctor.map f) 0 = ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s)).app j' 0) } = 0) }.toFun (x + y) = { toFun := fun (v : ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s)).pt) => { val := fun (j : J) => ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s)).app j v, property := (_ : ∀ {j j' : J} (f : j j'), CategoryTheory.CategoryStruct.comp (((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s)).app j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddCommMonCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).toPrefunctor.map f) v = ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s)).app j' v) }, map_zero' := (_ : { val := fun (j : J) => ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s)).app j 0, property := (_ : ∀ {j j' : J} (f : j j'), CategoryTheory.CategoryStruct.comp (((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s)).app j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddCommMonCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).toPrefunctor.map f) 0 = ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s)).app j' 0) } = 0) }.toFun x + { toFun := fun (v : ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s)).pt) => { val := fun (j : J) => ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s)).app j v, property := (_ : ∀ {j j' : J} (f : j j'), CategoryTheory.CategoryStruct.comp (((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s)).app j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddCommMonCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).toPrefunctor.map f) v = ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s)).app j' v) }, map_zero' := (_ : { val := fun (j : J) => ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s)).app j 0, property := (_ : ∀ {j j' : J} (f : j j'), CategoryTheory.CategoryStruct.comp (((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s)).app j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddCommMonCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).toPrefunctor.map f) 0 = ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s)).app j' 0) } = 0) }.toFun y) }) s) = (CategoryTheory.forget₂ AddCommMonCat AddMonCat).toPrefunctor.map ((fun (s : CategoryTheory.Limits.Cone F) => { toZeroHom := { toFun := fun (v : ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s)).pt) => { val := fun (j : J) => ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s)).app j v, property := (_ : ∀ {j j' : J} (f : j j'), CategoryTheory.CategoryStruct.comp (((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s)).app j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddCommMonCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).toPrefunctor.map f) v = ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s)).app j' v) }, map_zero' := (_ : { val := fun (j : J) => ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s)).app j 0, property := (_ : ∀ {j j' : J} (f : j j'), CategoryTheory.CategoryStruct.comp (((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s)).app j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddCommMonCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).toPrefunctor.map f) 0 = ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s)).app j' 0) } = 0) }, map_add' := (_ : ∀ (x y : ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s).pt), { toFun := fun (v : ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s)).pt) => { val := fun (j : J) => ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s)).app j v, property := (_ : ∀ {j j' : J} (f : j j'), CategoryTheory.CategoryStruct.comp (((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s)).app j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddCommMonCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).toPrefunctor.map f) v = ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s)).app j' v) }, map_zero' := (_ : { val := fun (j : J) => ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s)).app j 0, property := (_ : ∀ {j j' : J} (f : j j'), CategoryTheory.CategoryStruct.comp (((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s)).app j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddCommMonCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).toPrefunctor.map f) 0 = ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s)).app j' 0) } = 0) }.toFun (x + y) = { toFun := fun (v : ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s)).pt) => { val := fun (j : J) => ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s)).app j v, property := (_ : ∀ {j j' : J} (f : j j'), CategoryTheory.CategoryStruct.comp (((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s)).app j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddCommMonCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).toPrefunctor.map f) v = ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s)).app j' v) }, map_zero' := (_ : { val := fun (j : J) => ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s)).app j 0, property := (_ : ∀ {j j' : J} (f : j j'), CategoryTheory.CategoryStruct.comp (((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s)).app j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddCommMonCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).toPrefunctor.map f) 0 = ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s)).app j' 0) } = 0) }.toFun x + { toFun := fun (v : ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s)).pt) => { val := fun (j : J) => ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s)).app j v, property := (_ : ∀ {j j' : J} (f : j j'), CategoryTheory.CategoryStruct.comp (((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s)).app j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddCommMonCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).toPrefunctor.map f) v = ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s)).app j' v) }, map_zero' := (_ : { val := fun (j : J) => ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s)).app j 0, property := (_ : ∀ {j j' : J} (f : j j'), CategoryTheory.CategoryStruct.comp (((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s)).app j) ((CategoryTheory.Functor.comp (CategoryTheory.Functor.comp F (CategoryTheory.forget₂ AddCommMonCat AddMonCat)) (CategoryTheory.forget AddMonCatMax)).toPrefunctor.map f) 0 = ((CategoryTheory.forget AddMonCatMax).mapCone ((CategoryTheory.forget₂ AddCommMonCat AddMonCat).mapCone s)).app j' 0) } = 0) }.toFun y) }) s)

                          We show that the forgetful functor CommMonCatMonCat creates limits.

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

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

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

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

                            The forgetful functor from additive

                            commutative monoids to additive monoids preserves all limits.

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

                            monoids.

                            Equations

                            The forgetful functor from commutative monoids to monoids preserves all limits.

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

                            Equations

                            The forgetful functor from additive commutative monoids to types preserves all

                            limits.

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

                            Equations

                            The forgetful functor from commutative monoids to types preserves all limits.

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

                            Equations