Documentation

Mathlib.CategoryTheory.Limits.Shapes.Multiequalizer

Multi-(co)equalizers #

A multiequalizer is an equalizer of two morphisms between two products. Since both products and equalizers are limits, such an object is again a limit. This file provides the diagram whose limit is indeed such an object. In fact, it is well-known that any limit can be obtained as a multiequalizer. The dual construction (multicoequalizers) is also provided.

Projects #

Prove that a multiequalizer can be identified with an equalizer between products (and analogously for multicoequalizers).

Prove that the limit of any diagram is a multiequalizer (and similarly for colimits).

structure CategoryTheory.Limits.MulticospanShape :
Type (max (w + 1) (w' + 1))

The shape of a multiequalizer diagram. It involves two types L and R, and two maps RL.

  • L : Type w

    the left type

  • R : Type w'

    the right type

  • fst : self.Rself.L

    the first map RL

  • snd : self.Rself.L

    the second map RL

Instances For

    Given a type ι, this is the shape of multiequalizer diagrams corresponding to situations where we want to equalize two families of maps U i ⟶ V ⟨i, j⟩ and U j ⟶ V ⟨i, j⟩ with i : ι and j : ι.

    Equations
    Instances For
      @[simp]
      @[simp]
      theorem CategoryTheory.Limits.MulticospanShape.prod_fst (ι : Type w) (self : ι × ι) :
      (prod ι).fst self = self.1
      @[simp]
      theorem CategoryTheory.Limits.MulticospanShape.prod_snd (ι : Type w) (self : ι × ι) :
      (prod ι).snd self = self.2
      structure CategoryTheory.Limits.MultispanShape :
      Type (max (w + 1) (w' + 1))

      The shape of a multicoequalizer diagram. It involves two types L and R, and two maps LR.

      • L : Type w

        the left type

      • R : Type w'

        the right type

      • fst : self.Lself.R

        the first map LR

      • snd : self.Lself.R

        the second map LR

      Instances For

        Given a type ι, this is the shape of multicoequalizer diagrams corresponding to situations where we want to coequalize two families of maps V ⟨i, j⟩ ⟶ U i and V ⟨i, j⟩ ⟶ U j with i : ι and j : ι.

        Equations
        Instances For
          @[simp]
          theorem CategoryTheory.Limits.MultispanShape.prod_snd (ι : Type w) (self : ι × ι) :
          (prod ι).snd self = self.2
          @[simp]
          @[simp]
          theorem CategoryTheory.Limits.MultispanShape.prod_fst (ι : Type w) (self : ι × ι) :
          (prod ι).fst self = self.1

          Given a linearly ordered type ι, this is the shape of multicoequalizer diagrams corresponding to situations where we want to coequalize two families of maps V ⟨i, j⟩ ⟶ U i and V ⟨i, j⟩ ⟶ U j with i < j.

          Equations
          • One or more equations did not get rendered due to their size.
          Instances For
            @[simp]
            @[simp]
            theorem CategoryTheory.Limits.MultispanShape.ofLinearOrder_fst (ι : Type w) [LinearOrder ι] (x : {x : ι × ι | x.1 < x.2}) :
            (ofLinearOrder ι).fst x = (↑x).1
            @[simp]
            theorem CategoryTheory.Limits.MultispanShape.ofLinearOrder_snd (ι : Type w) [LinearOrder ι] (x : {x : ι × ι | x.1 < x.2}) :
            (ofLinearOrder ι).snd x = (↑x).2
            Equations
            • One or more equations did not get rendered due to their size.

            The type underlying the multiequalizer diagram.

            Instances For

              The type underlying the multicoequalizer diagram.

              Instances For

                Morphisms for WalkingMulticospan.

                Instances For

                  Composition of morphisms for WalkingMulticospan.

                  Equations
                  Instances For
                    Equations
                    • One or more equations did not get rendered due to their size.
                    def CategoryTheory.Limits.WalkingMulticospan.functorExt {J : MulticospanShape} {C : Type u_1} [Category.{v_1, u_1} C] {F G : Functor (WalkingMulticospan J) C} (left : (i : J.L) → F.obj (left i) G.obj (left i)) (right : (i : J.R) → F.obj (right i) G.obj (right i)) (wl : ∀ (i : J.R), CategoryStruct.comp (F.map (Hom.fst i)) (right i).hom = CategoryStruct.comp (left (J.fst i)).hom (G.map (Hom.fst i)) := by cat_disch) (wr : ∀ (i : J.R), CategoryStruct.comp (F.map (Hom.snd i)) (right i).hom = CategoryStruct.comp (left (J.snd i)).hom (G.map (Hom.snd i)) := by cat_disch) :
                    F G

                    Construct a natural isomorphism between functors out of a walking multicospan from its components.

                    Equations
                    • One or more equations did not get rendered due to their size.
                    Instances For
                      @[simp]
                      theorem CategoryTheory.Limits.WalkingMulticospan.functorExt_inv_app {J : MulticospanShape} {C : Type u_1} [Category.{v_1, u_1} C] {F G : Functor (WalkingMulticospan J) C} (left : (i : J.L) → F.obj (left i) G.obj (left i)) (right : (i : J.R) → F.obj (right i) G.obj (right i)) (wl : ∀ (i : J.R), CategoryStruct.comp (F.map (Hom.fst i)) (right i).hom = CategoryStruct.comp (left (J.fst i)).hom (G.map (Hom.fst i)) := by cat_disch) (wr : ∀ (i : J.R), CategoryStruct.comp (F.map (Hom.snd i)) (right i).hom = CategoryStruct.comp (left (J.snd i)).hom (G.map (Hom.snd i)) := by cat_disch) (X : WalkingMulticospan J) :
                      (functorExt left right wl wr).inv.app X = (match X with | WalkingMulticospan.left i => left i | WalkingMulticospan.right i => right i).inv
                      @[simp]
                      theorem CategoryTheory.Limits.WalkingMulticospan.functorExt_hom_app {J : MulticospanShape} {C : Type u_1} [Category.{v_1, u_1} C] {F G : Functor (WalkingMulticospan J) C} (left : (i : J.L) → F.obj (left i) G.obj (left i)) (right : (i : J.R) → F.obj (right i) G.obj (right i)) (wl : ∀ (i : J.R), CategoryStruct.comp (F.map (Hom.fst i)) (right i).hom = CategoryStruct.comp (left (J.fst i)).hom (G.map (Hom.fst i)) := by cat_disch) (wr : ∀ (i : J.R), CategoryStruct.comp (F.map (Hom.snd i)) (right i).hom = CategoryStruct.comp (left (J.snd i)).hom (G.map (Hom.snd i)) := by cat_disch) (X : WalkingMulticospan J) :
                      (functorExt left right wl wr).hom.app X = (match X with | WalkingMulticospan.left i => left i | WalkingMulticospan.right i => right i).hom

                      Morphisms for WalkingMultispan.

                      Instances For

                        Composition of morphisms for WalkingMultispan.

                        Equations
                        Instances For
                          Equations
                          • One or more equations did not get rendered due to their size.
                          def CategoryTheory.Limits.WalkingMultispan.functorExt {J : MultispanShape} {C : Type u_1} [Category.{v_1, u_1} C] {F G : Functor (WalkingMultispan J) C} (left : (i : J.L) → F.obj (left i) G.obj (left i)) (right : (i : J.R) → F.obj (right i) G.obj (right i)) (wl : ∀ (i : J.L), CategoryStruct.comp (F.map (Hom.fst i)) (right (J.fst i)).hom = CategoryStruct.comp (left i).hom (G.map (Hom.fst i)) := by cat_disch) (wr : ∀ (i : J.L), CategoryStruct.comp (F.map (Hom.snd i)) (right (J.snd i)).hom = CategoryStruct.comp (left i).hom (G.map (Hom.snd i)) := by cat_disch) :
                          F G

                          Construct a natural isomorphism between functors out of a walking multispan from its components.

                          Equations
                          • One or more equations did not get rendered due to their size.
                          Instances For
                            @[simp]
                            theorem CategoryTheory.Limits.WalkingMultispan.functorExt_hom_app {J : MultispanShape} {C : Type u_1} [Category.{v_1, u_1} C] {F G : Functor (WalkingMultispan J) C} (left : (i : J.L) → F.obj (left i) G.obj (left i)) (right : (i : J.R) → F.obj (right i) G.obj (right i)) (wl : ∀ (i : J.L), CategoryStruct.comp (F.map (Hom.fst i)) (right (J.fst i)).hom = CategoryStruct.comp (left i).hom (G.map (Hom.fst i)) := by cat_disch) (wr : ∀ (i : J.L), CategoryStruct.comp (F.map (Hom.snd i)) (right (J.snd i)).hom = CategoryStruct.comp (left i).hom (G.map (Hom.snd i)) := by cat_disch) (X : WalkingMultispan J) :
                            (functorExt left right wl wr).hom.app X = (match X with | WalkingMultispan.left i => left i | WalkingMultispan.right i => right i).hom
                            @[simp]
                            theorem CategoryTheory.Limits.WalkingMultispan.functorExt_inv_app {J : MultispanShape} {C : Type u_1} [Category.{v_1, u_1} C] {F G : Functor (WalkingMultispan J) C} (left : (i : J.L) → F.obj (left i) G.obj (left i)) (right : (i : J.R) → F.obj (right i) G.obj (right i)) (wl : ∀ (i : J.L), CategoryStruct.comp (F.map (Hom.fst i)) (right (J.fst i)).hom = CategoryStruct.comp (left i).hom (G.map (Hom.fst i)) := by cat_disch) (wr : ∀ (i : J.L), CategoryStruct.comp (F.map (Hom.snd i)) (right (J.snd i)).hom = CategoryStruct.comp (left i).hom (G.map (Hom.snd i)) := by cat_disch) (X : WalkingMultispan J) :
                            (functorExt left right wl wr).inv.app X = (match X with | WalkingMultispan.left i => left i | WalkingMultispan.right i => right i).inv

                            The bijection WalkingMultispan J ≃ J.L ⊕ J.R.

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

                              The bijection Arrow (WalkingMultispan J) ≃ WalkingMultispan J ⊕ J.R ⊕ J.R.

                              Equations
                              • One or more equations did not get rendered due to their size.
                              Instances For
                                structure CategoryTheory.Limits.MulticospanIndex (J : MulticospanShape) (C : Type u) [Category.{v, u} C] :
                                Type (max (max (max u v) w) w')

                                This is a structure encapsulating the data necessary to define a Multicospan.

                                Instances For
                                  structure CategoryTheory.Limits.MultispanIndex (J : MultispanShape) (C : Type u) [Category.{v, u} C] :
                                  Type (max (max (max u v) w) w')

                                  This is a structure encapsulating the data necessary to define a Multispan.

                                  Instances For

                                    The multicospan associated to I : MulticospanIndex.

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

                                      The induced map ∏ᶜ I.left ⟶ ∏ᶜ I.right via I.fst for limiting fans.

                                      Equations
                                      Instances For

                                        The induced map ∏ᶜ I.left ⟶ ∏ᶜ I.right via I.snd for limiting fans.

                                        Equations
                                        Instances For

                                          Taking the multiequalizer over the multicospan index is equivalent to taking the equalizer over the two morphisms ∏ᶜ I.left ⇉ ∏ᶜ I.right. This is the diagram of the latter for limiting fans.

                                          Equations
                                          Instances For

                                            Taking the multiequalizer over the multicospan index is equivalent to taking the equalizer over the two morphisms ∏ᶜ I.left ⇉ ∏ᶜ I.right. This is the diagram of the latter.

                                            Equations
                                            Instances For

                                              The multispan associated to I : MultispanIndex.

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

                                                The induced map ∐ I.left ⟶ ∐ I.right via I.fst for colimiting cofans.

                                                Equations
                                                Instances For

                                                  The induced map ∐ I.left ⟶ ∐ I.right via I.snd for colimiting cofans.

                                                  Equations
                                                  Instances For

                                                    Taking the multicoequalizer over the multispan index is equivalent to taking the coequalizer over the two morphisms ∐ I.left ⇉ ∐ I.right. This is the diagram of the latter for colimiting cofans.

                                                    Equations
                                                    Instances For

                                                      The induced map ∐ I.left ⟶ ∐ I.right via I.fst.

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

                                                        The induced map ∐ I.left ⟶ ∐ I.right via I.snd.

                                                        Equations
                                                        • One or more equations did not get rendered due to their size.
                                                        Instances For
                                                          @[reducible, inline]

                                                          Taking the multicoequalizer over the multispan index is equivalent to taking the coequalizer over the two morphisms ∐ I.left ⇉ ∐ I.right. This is the diagram of the latter.

                                                          Equations
                                                          Instances For
                                                            @[reducible, inline]
                                                            abbrev CategoryTheory.Limits.Multifork {C : Type u} [Category.{v, u} C] {J : MulticospanShape} (I : MulticospanIndex J C) :
                                                            Type (max (max (max w w') u) v)

                                                            A multifork is a cone over a multicospan.

                                                            Equations
                                                            Instances For
                                                              @[reducible, inline]
                                                              abbrev CategoryTheory.Limits.Multicofork {C : Type u} [Category.{v, u} C] {J : MultispanShape} (I : MultispanIndex J C) :
                                                              Type (max (max (max w w') u) v)

                                                              A multicofork is a cocone over a multispan.

                                                              Equations
                                                              Instances For

                                                                The maps from the cone point of a multifork to the objects on the left.

                                                                Equations
                                                                Instances For
                                                                  @[simp]
                                                                  theorem CategoryTheory.Limits.Multifork.hom_comp_ι {C : Type u} [Category.{v, u} C] {J : MulticospanShape} {I : MulticospanIndex J C} (K₁ K₂ : Multifork I) (f : K₁ K₂) (j : J.L) :
                                                                  CategoryStruct.comp f.hom (K₂.ι j) = K₁.ι j
                                                                  @[simp]
                                                                  theorem CategoryTheory.Limits.Multifork.hom_comp_ι_assoc {C : Type u} [Category.{v, u} C] {J : MulticospanShape} {I : MulticospanIndex J C} (K₁ K₂ : Multifork I) (f : K₁ K₂) (j : J.L) {Z : C} (h : I.left j Z) :
                                                                  def CategoryTheory.Limits.Multifork.ofι {C : Type u} [Category.{v, u} C] {J : MulticospanShape} (I : MulticospanIndex J C) (P : C) (ι : (a : J.L) → P I.left a) (w : ∀ (b : J.R), CategoryStruct.comp (ι (J.fst b)) (I.fst b) = CategoryStruct.comp (ι (J.snd b)) (I.snd b)) :

                                                                  Construct a multifork using a collection ι of morphisms.

                                                                  Equations
                                                                  • One or more equations did not get rendered due to their size.
                                                                  Instances For
                                                                    @[simp]
                                                                    theorem CategoryTheory.Limits.Multifork.ofι_pt {C : Type u} [Category.{v, u} C] {J : MulticospanShape} (I : MulticospanIndex J C) (P : C) (ι : (a : J.L) → P I.left a) (w : ∀ (b : J.R), CategoryStruct.comp (ι (J.fst b)) (I.fst b) = CategoryStruct.comp (ι (J.snd b)) (I.snd b)) :
                                                                    (ofι I P ι w).pt = P
                                                                    @[simp]
                                                                    theorem CategoryTheory.Limits.Multifork.ofι_π_app {C : Type u} [Category.{v, u} C] {J : MulticospanShape} (I : MulticospanIndex J C) (P : C) (ι : (a : J.L) → P I.left a) (w : ∀ (b : J.R), CategoryStruct.comp (ι (J.fst b)) (I.fst b) = CategoryStruct.comp (ι (J.snd b)) (I.snd b)) (x : WalkingMulticospan J) :
                                                                    (ofι I P ι w).π.app x = match x with | WalkingMulticospan.left a => ι a | WalkingMulticospan.right b => CategoryStruct.comp (ι (J.fst b)) (I.fst b)
                                                                    @[simp]
                                                                    theorem CategoryTheory.Limits.Multifork.ι_ofι {C : Type u} [Category.{v, u} C] {J : MulticospanShape} (I : MulticospanIndex J C) (P : C) (ι : (a : J.L) → P I.left a) (w : ∀ (b : J.R), CategoryStruct.comp (ι (J.fst b)) (I.fst b) = CategoryStruct.comp (ι (J.snd b)) (I.snd b)) (i : J.L) :
                                                                    (ofι I P ι w).ι i = ι i
                                                                    def CategoryTheory.Limits.Multifork.ext {C : Type u} [Category.{v, u} C] {J : MulticospanShape} {I : MulticospanIndex J C} {t s : Multifork I} (e : t.pt s.pt) (h : ∀ (i : J.L), CategoryStruct.comp e.hom (s.ι i) = t.ι i := by cat_disch) :
                                                                    t s

                                                                    Constructor for isomorphisms between multiforks.

                                                                    Equations
                                                                    Instances For
                                                                      @[simp]
                                                                      theorem CategoryTheory.Limits.Multifork.ext_inv_hom {C : Type u} [Category.{v, u} C] {J : MulticospanShape} {I : MulticospanIndex J C} {t s : Multifork I} (e : t.pt s.pt) (h : ∀ (i : J.L), CategoryStruct.comp e.hom (s.ι i) = t.ι i := by cat_disch) :
                                                                      (ext e h).inv.hom = e.inv
                                                                      @[simp]
                                                                      theorem CategoryTheory.Limits.Multifork.ext_hom_hom {C : Type u} [Category.{v, u} C] {J : MulticospanShape} {I : MulticospanIndex J C} {t s : Multifork I} (e : t.pt s.pt) (h : ∀ (i : J.L), CategoryStruct.comp e.hom (s.ι i) = t.ι i := by cat_disch) :
                                                                      (ext e h).hom.hom = e.hom

                                                                      Every multifork is isomorphic to one of the form Multifork.ofι.

                                                                      Equations
                                                                      Instances For
                                                                        def CategoryTheory.Limits.Multifork.IsLimit.mk {C : Type u} [Category.{v, u} C] {J : MulticospanShape} {I : MulticospanIndex J C} (K : Multifork I) (lift : (E : Multifork I) → E.pt K.pt) (fac : ∀ (E : Multifork I) (i : J.L), CategoryStruct.comp (lift E) (K.ι i) = E.ι i) (uniq : ∀ (E : Multifork I) (m : E.pt K.pt), (∀ (i : J.L), CategoryStruct.comp m (K.ι i) = E.ι i)m = lift E) :

                                                                        This definition provides a convenient way to show that a multifork is a limit.

                                                                        Equations
                                                                        Instances For
                                                                          @[simp]
                                                                          theorem CategoryTheory.Limits.Multifork.IsLimit.mk_lift {C : Type u} [Category.{v, u} C] {J : MulticospanShape} {I : MulticospanIndex J C} (K : Multifork I) (lift : (E : Multifork I) → E.pt K.pt) (fac : ∀ (E : Multifork I) (i : J.L), CategoryStruct.comp (lift E) (K.ι i) = E.ι i) (uniq : ∀ (E : Multifork I) (m : E.pt K.pt), (∀ (i : J.L), CategoryStruct.comp m (K.ι i) = E.ι i)m = lift E) (E : Multifork I) :
                                                                          (mk K lift fac uniq).lift E = lift E
                                                                          theorem CategoryTheory.Limits.Multifork.IsLimit.hom_ext {C : Type u} [Category.{v, u} C] {J : MulticospanShape} {I : MulticospanIndex J C} {K : Multifork I} (hK : IsLimit K) {T : C} {f g : T K.pt} (h : ∀ (a : J.L), CategoryStruct.comp f (K.ι a) = CategoryStruct.comp g (K.ι a)) :
                                                                          f = g
                                                                          def CategoryTheory.Limits.Multifork.IsLimit.lift {C : Type u} [Category.{v, u} C] {J : MulticospanShape} {I : MulticospanIndex J C} {K : Multifork I} (hK : IsLimit K) {T : C} (k : (a : J.L) → T I.left a) (hk : ∀ (b : J.R), CategoryStruct.comp (k (J.fst b)) (I.fst b) = CategoryStruct.comp (k (J.snd b)) (I.snd b)) :
                                                                          T K.pt

                                                                          Constructor for morphisms to the point of a limit multifork.

                                                                          Equations
                                                                          Instances For
                                                                            @[simp]
                                                                            theorem CategoryTheory.Limits.Multifork.IsLimit.fac {C : Type u} [Category.{v, u} C] {J : MulticospanShape} {I : MulticospanIndex J C} {K : Multifork I} (hK : IsLimit K) {T : C} (k : (a : J.L) → T I.left a) (hk : ∀ (b : J.R), CategoryStruct.comp (k (J.fst b)) (I.fst b) = CategoryStruct.comp (k (J.snd b)) (I.snd b)) (a : J.L) :
                                                                            CategoryStruct.comp (lift hK k hk) (K.ι a) = k a
                                                                            @[simp]
                                                                            theorem CategoryTheory.Limits.Multifork.IsLimit.fac_assoc {C : Type u} [Category.{v, u} C] {J : MulticospanShape} {I : MulticospanIndex J C} {K : Multifork I} (hK : IsLimit K) {T : C} (k : (a : J.L) → T I.left a) (hk : ∀ (b : J.R), CategoryStruct.comp (k (J.fst b)) (I.fst b) = CategoryStruct.comp (k (J.snd b)) (I.snd b)) (a : J.L) {Z : C} (h : I.left a Z) :
                                                                            def CategoryTheory.Limits.Multifork.isLimitEquivOfIsos {C : Type u} [Category.{v, u} C] {J : MulticospanShape} {I I' : MulticospanIndex J C} (c : Multifork I) (c' : Multifork I') (e : c.pt c'.pt) (el : (i : J.L) → I.left i I'.left i) (er : (i : J.R) → I.right i I'.right i) (hl : ∀ (i : J.R), CategoryStruct.comp (I.fst i) (er i).hom = CategoryStruct.comp (el (J.fst i)).hom (I'.fst i) := by cat_disch) (hr : ∀ (i : J.R), CategoryStruct.comp (I.snd i) (er i).hom = CategoryStruct.comp (el (J.snd i)).hom (I'.snd i) := by cat_disch) (he : ∀ (i : J.L), CategoryStruct.comp e.hom (c'.ι i) = CategoryStruct.comp (c.ι i) (el i).hom := by cat_disch) :

                                                                            Given two multiforks with isomorphic components in such a way that the natural diagrams commute, then one is a limit if and only if the other one is.

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

                                                                              Given a multifork, we may obtain a fork over ∏ᶜ I.left ⇉ ∏ᶜ I.right.

                                                                              Equations
                                                                              Instances For
                                                                                @[simp]
                                                                                theorem CategoryTheory.Limits.Multifork.toPiFork_pt {C : Type u} [Category.{v, u} C] {J : MulticospanShape} {I : MulticospanIndex J C} {c : Fan I.left} (hc : IsLimit c) {d : Fan I.right} (hd : IsLimit d) (K : Multifork I) :
                                                                                (toPiFork hc hd K).pt = K.pt
                                                                                @[simp]

                                                                                Given a fork over ∏ᶜ I.left ⇉ ∏ᶜ I.right, we may obtain a multifork.

                                                                                Equations
                                                                                • One or more equations did not get rendered due to their size.
                                                                                Instances For
                                                                                  @[simp]
                                                                                  @[simp]
                                                                                  @[deprecated CategoryTheory.Limits.Multifork.ofPiFork_ι (since := "2025-12-08")]

                                                                                  Alias of CategoryTheory.Limits.Multifork.ofPiFork_ι.

                                                                                  Multifork.toPiFork as a functor.

                                                                                  Equations
                                                                                  • One or more equations did not get rendered due to their size.
                                                                                  Instances For
                                                                                    @[simp]
                                                                                    theorem CategoryTheory.Limits.MulticospanIndex.toPiForkFunctor_map_hom {C : Type u} [Category.{v, u} C] {J : MulticospanShape} (I : MulticospanIndex J C) {c : Fan I.left} (hc : IsLimit c) {d : Fan I.right} (hd : IsLimit d) {K₁ K₂ : Multifork I} (f : K₁ K₂) :
                                                                                    ((I.toPiForkFunctor hc hd).map f).hom = f.hom

                                                                                    Multifork.ofPiFork as a functor.

                                                                                    Equations
                                                                                    • One or more equations did not get rendered due to their size.
                                                                                    Instances For
                                                                                      @[simp]
                                                                                      theorem CategoryTheory.Limits.MulticospanIndex.ofPiForkFunctor_map_hom {C : Type u} [Category.{v, u} C] {J : MulticospanShape} (I : MulticospanIndex J C) {c : Fan I.left} {d : Fan I.right} (hd : IsLimit d) {K₁ K₂ : Fork (I.fstPiMapOfIsLimit c hd) (I.sndPiMapOfIsLimit c hd)} (f : K₁ K₂) :
                                                                                      ((I.ofPiForkFunctor hd).map f).hom = f.hom

                                                                                      The category of multiforks is equivalent to the category of forks over ∏ᶜ I.left ⇉ ∏ᶜ I.right. It then follows from CategoryTheory.IsLimit.ofPreservesConeTerminal (or reflects) that it preserves and reflects limit cones.

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

                                                                                        The category of multiforks is equivalent to the category of forks over ∏ᶜ I.left ⇉ ∏ᶜ I.right. It then follows from CategoryTheory.IsLimit.ofPreservesConeTerminal (or reflects) that it preserves and reflects limit cones.

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

                                                                                          The constant MulticospanShape for a pair of parallel morphisms.

                                                                                          Equations
                                                                                          Instances For
                                                                                            @[simp]
                                                                                            theorem CategoryTheory.Limits.MulticospanIndex.ofParallelHoms_right {C : Type u} [Category.{v, u} C] (J : MulticospanShape) {X Y : C} (f g : X Y) (x✝ : J.R) :
                                                                                            (ofParallelHoms J f g).right x✝ = Y
                                                                                            @[simp]
                                                                                            theorem CategoryTheory.Limits.MulticospanIndex.ofParallelHoms_snd {C : Type u} [Category.{v, u} C] (J : MulticospanShape) {X Y : C} (f g : X Y) (x✝ : J.R) :
                                                                                            (ofParallelHoms J f g).snd x✝ = g
                                                                                            @[simp]
                                                                                            theorem CategoryTheory.Limits.MulticospanIndex.ofParallelHoms_fst {C : Type u} [Category.{v, u} C] (J : MulticospanShape) {X Y : C} (f g : X Y) (x✝ : J.R) :
                                                                                            (ofParallelHoms J f g).fst x✝ = f
                                                                                            @[simp]
                                                                                            theorem CategoryTheory.Limits.MulticospanIndex.ofParallelHoms_left {C : Type u} [Category.{v, u} C] (J : MulticospanShape) {X Y : C} (f g : X Y) (x✝ : J.L) :
                                                                                            (ofParallelHoms J f g).left x✝ = X

                                                                                            A fork on a pair of morphisms f and g is the same as a multifork on the single point index defined by f and g.

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

                                                                                              The maps to the cocone point of a multicofork from the objects on the right.

                                                                                              Equations
                                                                                              Instances For
                                                                                                @[simp]
                                                                                                theorem CategoryTheory.Limits.Multicofork.π_comp_hom {C : Type u} [Category.{v, u} C] {J : MultispanShape} {I : MultispanIndex J C} (K₁ K₂ : Multicofork I) (f : K₁ K₂) (b : J.R) :
                                                                                                CategoryStruct.comp (K₁.π b) f.hom = K₂.π b
                                                                                                @[simp]
                                                                                                theorem CategoryTheory.Limits.Multicofork.π_comp_hom_assoc {C : Type u} [Category.{v, u} C] {J : MultispanShape} {I : MultispanIndex J C} (K₁ K₂ : Multicofork I) (f : K₁ K₂) (b : J.R) {Z : C} (h : K₂.pt Z) :
                                                                                                def CategoryTheory.Limits.Multicofork.ofπ {C : Type u} [Category.{v, u} C] {J : MultispanShape} (I : MultispanIndex J C) (P : C) (π : (b : J.R) → I.right b P) (w : ∀ (a : J.L), CategoryStruct.comp (I.fst a) (π (J.fst a)) = CategoryStruct.comp (I.snd a) (π (J.snd a))) :

                                                                                                Construct a multicofork using a collection π of morphisms.

                                                                                                Equations
                                                                                                • One or more equations did not get rendered due to their size.
                                                                                                Instances For
                                                                                                  @[simp]
                                                                                                  theorem CategoryTheory.Limits.Multicofork.ofπ_ι_app {C : Type u} [Category.{v, u} C] {J : MultispanShape} (I : MultispanIndex J C) (P : C) (π : (b : J.R) → I.right b P) (w : ∀ (a : J.L), CategoryStruct.comp (I.fst a) (π (J.fst a)) = CategoryStruct.comp (I.snd a) (π (J.snd a))) (x : WalkingMultispan J) :
                                                                                                  (ofπ I P π w).ι.app x = match x with | WalkingMultispan.left a => CategoryStruct.comp (I.fst a) (π (J.fst a)) | WalkingMultispan.right a => π a
                                                                                                  @[simp]
                                                                                                  theorem CategoryTheory.Limits.Multicofork.ofπ_pt {C : Type u} [Category.{v, u} C] {J : MultispanShape} (I : MultispanIndex J C) (P : C) (π : (b : J.R) → I.right b P) (w : ∀ (a : J.L), CategoryStruct.comp (I.fst a) (π (J.fst a)) = CategoryStruct.comp (I.snd a) (π (J.snd a))) :
                                                                                                  (ofπ I P π w).pt = P
                                                                                                  def CategoryTheory.Limits.Multicofork.IsColimit.mk {C : Type u} [Category.{v, u} C] {J : MultispanShape} {I : MultispanIndex J C} (K : Multicofork I) (desc : (E : Multicofork I) → K.pt E.pt) (fac : ∀ (E : Multicofork I) (i : J.R), CategoryStruct.comp (K.π i) (desc E) = E.π i) (uniq : ∀ (E : Multicofork I) (m : K.pt E.pt), (∀ (i : J.R), CategoryStruct.comp (K.π i) m = E.π i)m = desc E) :

                                                                                                  This definition provides a convenient way to show that a multicofork is a colimit.

                                                                                                  Equations
                                                                                                  Instances For
                                                                                                    @[simp]
                                                                                                    theorem CategoryTheory.Limits.Multicofork.IsColimit.mk_desc {C : Type u} [Category.{v, u} C] {J : MultispanShape} {I : MultispanIndex J C} (K : Multicofork I) (desc : (E : Multicofork I) → K.pt E.pt) (fac : ∀ (E : Multicofork I) (i : J.R), CategoryStruct.comp (K.π i) (desc E) = E.π i) (uniq : ∀ (E : Multicofork I) (m : K.pt E.pt), (∀ (i : J.R), CategoryStruct.comp (K.π i) m = E.π i)m = desc E) (E : Multicofork I) :
                                                                                                    (mk K desc fac uniq).desc E = desc E
                                                                                                    theorem CategoryTheory.Limits.Multicofork.IsColimit.hom_ext {C : Type u} [Category.{v, u} C] {J : MultispanShape} {I : MultispanIndex J C} {K : Multicofork I} (hK : IsColimit K) {T : C} {f g : K.pt T} (h : ∀ (a : J.R), CategoryStruct.comp (K.π a) f = CategoryStruct.comp (K.π a) g) :
                                                                                                    f = g
                                                                                                    def CategoryTheory.Limits.Multicofork.IsColimit.desc {C : Type u} [Category.{v, u} C] {J : MultispanShape} {I : MultispanIndex J C} {K : Multicofork I} (hK : IsColimit K) {T : C} (k : (a : J.R) → I.right a T) (hk : ∀ (b : J.L), CategoryStruct.comp (I.fst b) (k (J.fst b)) = CategoryStruct.comp (I.snd b) (k (J.snd b))) :
                                                                                                    K.pt T

                                                                                                    Constructor for morphisms from the point of a colimit multicofork.

                                                                                                    Equations
                                                                                                    Instances For
                                                                                                      @[simp]
                                                                                                      theorem CategoryTheory.Limits.Multicofork.IsColimit.fac {C : Type u} [Category.{v, u} C] {J : MultispanShape} {I : MultispanIndex J C} {K : Multicofork I} (hK : IsColimit K) {T : C} (k : (a : J.R) → I.right a T) (hk : ∀ (b : J.L), CategoryStruct.comp (I.fst b) (k (J.fst b)) = CategoryStruct.comp (I.snd b) (k (J.snd b))) (a : J.R) :
                                                                                                      CategoryStruct.comp (K.π a) (desc hK k hk) = k a
                                                                                                      @[simp]
                                                                                                      theorem CategoryTheory.Limits.Multicofork.IsColimit.fac_assoc {C : Type u} [Category.{v, u} C] {J : MultispanShape} {I : MultispanIndex J C} {K : Multicofork I} (hK : IsColimit K) {T : C} (k : (a : J.R) → I.right a T) (hk : ∀ (b : J.L), CategoryStruct.comp (I.fst b) (k (J.fst b)) = CategoryStruct.comp (I.snd b) (k (J.snd b))) (a : J.R) {Z : C} (h : T Z) :

                                                                                                      Given a multicofork, we may obtain a cofork over ∐ I.left ⇉ ∐ I.right.

                                                                                                      Equations
                                                                                                      Instances For
                                                                                                        @[simp]

                                                                                                        Given a cofork over ∐ I.left ⇉ ∐ I.right, we may obtain a multicofork.

                                                                                                        Equations
                                                                                                        • One or more equations did not get rendered due to their size.
                                                                                                        Instances For
                                                                                                          @[deprecated CategoryTheory.Limits.Multicofork.ofSigmaCofork_π (since := "2025-12-08")]

                                                                                                          Alias of CategoryTheory.Limits.Multicofork.ofSigmaCofork_π.

                                                                                                          @[deprecated CategoryTheory.Limits.Multicofork.ofSigmaCofork_π (since := "2025-12-08")]

                                                                                                          Alias of CategoryTheory.Limits.Multicofork.ofSigmaCofork_π.

                                                                                                          def CategoryTheory.Limits.Multicofork.ext {C : Type u} [Category.{v, u} C] {J : MultispanShape} {I : MultispanIndex J C} {K K' : Multicofork I} (e : K.pt K'.pt) (h : ∀ (i : J.R), CategoryStruct.comp (K.π i) e.hom = K'.π i := by cat_disch) :
                                                                                                          K K'

                                                                                                          Constructor for isomorphisms between multicoforks.

                                                                                                          Equations
                                                                                                          Instances For
                                                                                                            @[simp]
                                                                                                            theorem CategoryTheory.Limits.Multicofork.ext_inv_hom {C : Type u} [Category.{v, u} C] {J : MultispanShape} {I : MultispanIndex J C} {K K' : Multicofork I} (e : K.pt K'.pt) (h : ∀ (i : J.R), CategoryStruct.comp (K.π i) e.hom = K'.π i := by cat_disch) :
                                                                                                            (ext e h).inv.hom = e.inv
                                                                                                            @[simp]
                                                                                                            theorem CategoryTheory.Limits.Multicofork.ext_hom_hom {C : Type u} [Category.{v, u} C] {J : MultispanShape} {I : MultispanIndex J C} {K K' : Multicofork I} (e : K.pt K'.pt) (h : ∀ (i : J.R), CategoryStruct.comp (K.π i) e.hom = K'.π i := by cat_disch) :
                                                                                                            (ext e h).hom.hom = e.hom

                                                                                                            Every multicofork is isomorphic to one of the form Multicofork.ofπ.

                                                                                                            Equations
                                                                                                            Instances For

                                                                                                              Multicofork.toSigmaCofork as a functor.

                                                                                                              Equations
                                                                                                              • One or more equations did not get rendered due to their size.
                                                                                                              Instances For
                                                                                                                @[simp]
                                                                                                                theorem CategoryTheory.Limits.MultispanIndex.toSigmaCoforkFunctor_map_hom {C : Type u} [Category.{v, u} C] {J : MultispanShape} (I : MultispanIndex J C) {c : Cofan I.left} (hc : IsColimit c) {d : Cofan I.right} (hd : IsColimit d) {K₁ K₂ : Multicofork I} (f : K₁ K₂) :
                                                                                                                ((I.toSigmaCoforkFunctor hc hd).map f).hom = f.hom

                                                                                                                Multicofork.ofSigmaCofork as a functor.

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

                                                                                                                  The category of multicoforks is equivalent to the category of coforks over ∐ I.left ⇉ ∐ I.right. It then follows from CategoryTheory.IsColimit.ofPreservesCoconeInitial (or reflects) that it preserves and reflects colimit cocones.

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

                                                                                                                    The category of multicoforks is equivalent to the category of coforks over ∐ I.left ⇉ ∐ I.right. It then follows from CategoryTheory.IsColimit.ofPreservesCoconeInitial (or reflects) that it preserves and reflects colimit cocones.

                                                                                                                    Equations
                                                                                                                    • One or more equations did not get rendered due to their size.
                                                                                                                    Instances For
                                                                                                                      @[reducible, inline]

                                                                                                                      For I : MulticospanIndex J C, we say that it has a multiequalizer if the associated multicospan has a limit.

                                                                                                                      Equations
                                                                                                                      Instances For
                                                                                                                        @[reducible, inline]

                                                                                                                        For I : MultispanIndex J C, we say that it has a multicoequalizer if the associated multicospan has a limit.

                                                                                                                        Equations
                                                                                                                        Instances For
                                                                                                                          @[reducible, inline]

                                                                                                                          The canonical map from the multiequalizer to the objects on the left.

                                                                                                                          Equations
                                                                                                                          Instances For
                                                                                                                            @[reducible, inline]
                                                                                                                            abbrev CategoryTheory.Limits.Multiequalizer.lift {C : Type u} [Category.{v, u} C] {J : MulticospanShape} (I : MulticospanIndex J C) [HasMultiequalizer I] (W : C) (k : (a : J.L) → W I.left a) (h : ∀ (b : J.R), CategoryStruct.comp (k (J.fst b)) (I.fst b) = CategoryStruct.comp (k (J.snd b)) (I.snd b)) :

                                                                                                                            Construct a morphism to the multiequalizer from its universal property.

                                                                                                                            Equations
                                                                                                                            Instances For
                                                                                                                              theorem CategoryTheory.Limits.Multiequalizer.lift_ι {C : Type u} [Category.{v, u} C] {J : MulticospanShape} (I : MulticospanIndex J C) [HasMultiequalizer I] (W : C) (k : (a : J.L) → W I.left a) (h : ∀ (b : J.R), CategoryStruct.comp (k (J.fst b)) (I.fst b) = CategoryStruct.comp (k (J.snd b)) (I.snd b)) (a : J.L) :
                                                                                                                              CategoryStruct.comp (lift I W k h) (ι I a) = k a
                                                                                                                              theorem CategoryTheory.Limits.Multiequalizer.lift_ι_assoc {C : Type u} [Category.{v, u} C] {J : MulticospanShape} (I : MulticospanIndex J C) [HasMultiequalizer I] (W : C) (k : (a : J.L) → W I.left a) (h : ∀ (b : J.R), CategoryStruct.comp (k (J.fst b)) (I.fst b) = CategoryStruct.comp (k (J.snd b)) (I.snd b)) (a : J.L) {Z : C} (h✝ : I.left a Z) :

                                                                                                                              The multiequalizer is isomorphic to the equalizer of ∏ᶜ I.left ⇉ ∏ᶜ I.right.

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

                                                                                                                                The canonical injection multiequalizer I ⟶ ∏ᶜ I.left.

                                                                                                                                Equations
                                                                                                                                • One or more equations did not get rendered due to their size.
                                                                                                                                Instances For
                                                                                                                                  @[reducible, inline]

                                                                                                                                  The canonical map from the multiequalizer to the objects on the left.

                                                                                                                                  Equations
                                                                                                                                  Instances For
                                                                                                                                    @[simp]

                                                                                                                                    @[simp]-normal form of multicofork_ι_app_right.

                                                                                                                                    @[reducible, inline]
                                                                                                                                    abbrev CategoryTheory.Limits.Multicoequalizer.desc {C : Type u} [Category.{v, u} C] {J : MultispanShape} (I : MultispanIndex J C) [HasMulticoequalizer I] (W : C) (k : (b : J.R) → I.right b W) (h : ∀ (a : J.L), CategoryStruct.comp (I.fst a) (k (J.fst a)) = CategoryStruct.comp (I.snd a) (k (J.snd a))) :

                                                                                                                                    Construct a morphism from the multicoequalizer from its universal property.

                                                                                                                                    Equations
                                                                                                                                    Instances For
                                                                                                                                      theorem CategoryTheory.Limits.Multicoequalizer.π_desc {C : Type u} [Category.{v, u} C] {J : MultispanShape} (I : MultispanIndex J C) [HasMulticoequalizer I] (W : C) (k : (b : J.R) → I.right b W) (h : ∀ (a : J.L), CategoryStruct.comp (I.fst a) (k (J.fst a)) = CategoryStruct.comp (I.snd a) (k (J.snd a))) (b : J.R) :
                                                                                                                                      CategoryStruct.comp (π I b) (desc I W k h) = k b
                                                                                                                                      theorem CategoryTheory.Limits.Multicoequalizer.π_desc_assoc {C : Type u} [Category.{v, u} C] {J : MultispanShape} (I : MultispanIndex J C) [HasMulticoequalizer I] (W : C) (k : (b : J.R) → I.right b W) (h : ∀ (a : J.L), CategoryStruct.comp (I.fst a) (k (J.fst a)) = CategoryStruct.comp (I.snd a) (k (J.snd a))) (b : J.R) {Z : C} (h✝ : W Z) :

                                                                                                                                      The multicoequalizer is isomorphic to the coequalizer of ∐ I.left ⇉ ∐ I.right.

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

                                                                                                                                        The canonical projection ∐ I.rightmulticoequalizer I.

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

                                                                                                                                          The inclusion functor WalkingMultispan (.ofLinearOrder ι) ⥤ WalkingMultispan (.prod ι).

                                                                                                                                          Equations
                                                                                                                                          • One or more equations did not get rendered due to their size.
                                                                                                                                          Instances For
                                                                                                                                            @[simp]
                                                                                                                                            theorem CategoryTheory.Limits.WalkingMultispan.inclusionOfLinearOrder_map (ι : Type w) [LinearOrder ι] {x y : WalkingMultispan (MultispanShape.ofLinearOrder ι)} (f : x y) :
                                                                                                                                            (inclusionOfLinearOrder ι).map f = match x, y, f with | x, .(x), Hom.id .(x) => CategoryStruct.id (match x with | left a => left a | right b => right b) | .(left b), .(right ((MultispanShape.ofLinearOrder ι).fst b)), Hom.fst b => Hom.fst b | .(left b), .(right ((MultispanShape.ofLinearOrder ι).snd b)), Hom.snd b => Hom.snd b

                                                                                                                                            Structure expressing a symmetry of I : MultispanIndex (.prod ι) C which allows to compare the corresponding multicoequalizer to the multicoequalizer of I.toLinearOrder.

                                                                                                                                            Instances For

                                                                                                                                              The multispan index for MultispanShape.ofLinearOrder ι deduced from a multispan index for MultispanShape.prod ι when ι is linearly ordered.

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

                                                                                                                                                Given a linearly ordered type ι and I : MultispanIndex (.prod ι) C, this is the isomorphism of functors between WalkingMultispan.inclusionOfLinearOrder ι ⋙ I.multispan and I.toLinearOrder.multispan.

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

                                                                                                                                                  The multicofork for I.toLinearOrder deduced from a multicofork for I : MultispanIndex (.prod ι) C when ι is linearly ordered.

                                                                                                                                                  Equations
                                                                                                                                                  Instances For

                                                                                                                                                    The multicofork for I : MultispanIndex (.prod ι) C deduced from a multicofork for I.toLinearOrder when ι is linearly ordered and I is symmetric.

                                                                                                                                                    Equations
                                                                                                                                                    Instances For

                                                                                                                                                      If ι is a linearly ordered type, I : MultispanIndex (.prod ι) C, and c a colimit multicofork for I, then c.toLinearOrder is a colimit multicofork for I.toLinearOrder.

                                                                                                                                                      Equations
                                                                                                                                                      Instances For