HepLean 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).

inductive CategoryTheory.Limits.WalkingMulticospan {L : Type w} {R : Type w'} (fst : RL) (snd : RL) :
Type (max w w')

The type underlying the multiequalizer diagram.

Instances For
    inductive CategoryTheory.Limits.WalkingMultispan {L : Type w} {R : Type w'} (fst : LR) (snd : LR) :
    Type (max w w')

    The type underlying the multiecoqualizer diagram.

    Instances For
      Equations
      inductive CategoryTheory.Limits.WalkingMulticospan.Hom {L : Type w} {R : Type w'} {fst : RL} {snd : RL} :

      Morphisms for WalkingMulticospan.

      Instances For
        instance CategoryTheory.Limits.WalkingMulticospan.instInhabitedHom {L : Type w} {R : Type w'} {fst : RL} {snd : RL} {a : CategoryTheory.Limits.WalkingMulticospan fst snd} :
        Inhabited (a.Hom a)
        Equations
        def CategoryTheory.Limits.WalkingMulticospan.Hom.comp {L : Type w} {R : Type w'} {fst : RL} {snd : RL} {A : CategoryTheory.Limits.WalkingMulticospan fst snd} {B : CategoryTheory.Limits.WalkingMulticospan fst snd} {C : CategoryTheory.Limits.WalkingMulticospan fst snd} :
        A.Hom BB.Hom CA.Hom C

        Composition of morphisms for WalkingMulticospan.

        Equations
        Instances For
          Equations
          instance CategoryTheory.Limits.WalkingMultispan.instInhabited {L : Type w} {R : Type w'} {fst : LR} {snd : LR} [Inhabited L] :
          Equations
          inductive CategoryTheory.Limits.WalkingMultispan.Hom {L : Type w} {R : Type w'} {fst : LR} {snd : LR} :

          Morphisms for WalkingMultispan.

          Instances For
            instance CategoryTheory.Limits.WalkingMultispan.instInhabitedHom {L : Type w} {R : Type w'} {fst : LR} {snd : LR} {a : CategoryTheory.Limits.WalkingMultispan fst snd} :
            Inhabited (a.Hom a)
            Equations
            def CategoryTheory.Limits.WalkingMultispan.Hom.comp {L : Type w} {R : Type w'} {fst : LR} {snd : LR} {A : CategoryTheory.Limits.WalkingMultispan fst snd} {B : CategoryTheory.Limits.WalkingMultispan fst snd} {C : CategoryTheory.Limits.WalkingMultispan fst snd} :
            A.Hom BB.Hom CA.Hom C

            Composition of morphisms for WalkingMultispan.

            Equations
            Instances For
              Equations
              structure CategoryTheory.Limits.MulticospanIndex (C : Type u) [CategoryTheory.Category.{v, u} C] :
              Type (max (max (max u v) (w + 1)) (w' + 1))

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

              • L : Type w
              • R : Type w'
              • fstTo : self.Rself.L
              • sndTo : self.Rself.L
              • left : self.LC
              • right : self.RC
              • fst : (b : self.R) → self.left (self.fstTo b) self.right b
              • snd : (b : self.R) → self.left (self.sndTo b) self.right b
              Instances For
                structure CategoryTheory.Limits.MultispanIndex (C : Type u) [CategoryTheory.Category.{v, u} C] :
                Type (max (max (max u v) (w + 1)) (w' + 1))

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

                • L : Type w
                • R : Type w'
                • fstFrom : self.Lself.R
                • sndFrom : self.Lself.R
                • left : self.LC
                • right : self.RC
                • fst : (a : self.L) → self.left a self.right (self.fstFrom a)
                • snd : (a : self.L) → self.left a self.right (self.sndFrom a)
                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.

                    Equations
                    Instances For

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

                      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.

                            Equations
                            Instances For

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

                              Equations
                              Instances For
                                @[reducible, inline]

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

                                Equations
                                Instances For
                                  @[reducible, inline]

                                  A multifork is a cone over a multicospan.

                                  Equations
                                  Instances For
                                    @[reducible, inline]

                                    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]
                                        @[simp]
                                        theorem CategoryTheory.Limits.Multifork.ofι_pt {C : Type u} [CategoryTheory.Category.{v, u} C] (I : CategoryTheory.Limits.MulticospanIndex C) (P : C) (ι : (a : I.L) → P I.left a) (w : ∀ (b : I.R), CategoryTheory.CategoryStruct.comp (ι (I.fstTo b)) (I.fst b) = CategoryTheory.CategoryStruct.comp (ι (I.sndTo b)) (I.snd b)) :
                                        def CategoryTheory.Limits.Multifork.ofι {C : Type u} [CategoryTheory.Category.{v, u} C] (I : CategoryTheory.Limits.MulticospanIndex C) (P : C) (ι : (a : I.L) → P I.left a) (w : ∀ (b : I.R), CategoryTheory.CategoryStruct.comp (ι (I.fstTo b)) (I.fst b) = CategoryTheory.CategoryStruct.comp (ι (I.sndTo 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.IsLimit.mk_lift {C : Type u} [CategoryTheory.Category.{v, u} C] {I : CategoryTheory.Limits.MulticospanIndex C} (K : CategoryTheory.Limits.Multifork I) (lift : (E : CategoryTheory.Limits.Multifork I) → E.pt K.pt) (fac : ∀ (E : CategoryTheory.Limits.Multifork I) (i : I.L), CategoryTheory.CategoryStruct.comp (lift E) (K i) = E i) (uniq : ∀ (E : CategoryTheory.Limits.Multifork I) (m : E.pt K.pt), (∀ (i : I.L), CategoryTheory.CategoryStruct.comp m (K i) = E i)m = lift E) (E : CategoryTheory.Limits.Multifork I) :
                                          (CategoryTheory.Limits.Multifork.IsLimit.mk K lift fac uniq).lift E = lift E

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

                                          Equations
                                          Instances For
                                            def CategoryTheory.Limits.Multifork.IsLimit.lift {C : Type u} [CategoryTheory.Category.{v, u} C] {I : CategoryTheory.Limits.MulticospanIndex C} {K : CategoryTheory.Limits.Multifork I} (hK : CategoryTheory.Limits.IsLimit K) {T : C} (k : (a : I.L) → T I.left a) (hk : ∀ (b : I.R), CategoryTheory.CategoryStruct.comp (k (I.fstTo b)) (I.fst b) = CategoryTheory.CategoryStruct.comp (k (I.sndTo b)) (I.snd b)) :
                                            T K.pt

                                            Constructor for morphisms to the point of a limit multifork.

                                            Equations
                                            Instances For

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

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

                                                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]
                                                  theorem CategoryTheory.Limits.MulticospanIndex.ofPiForkFunctor_map_hom {C : Type u} [CategoryTheory.Category.{v, u} C] (I : CategoryTheory.Limits.MulticospanIndex C) [CategoryTheory.Limits.HasProduct I.left] [CategoryTheory.Limits.HasProduct I.right] {K₁ : CategoryTheory.Limits.Fork I.fstPiMap I.sndPiMap} {K₂ : CategoryTheory.Limits.Fork I.fstPiMap I.sndPiMap} (f : K₁ K₂) :
                                                  (I.ofPiForkFunctor.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 maps to the cocone point of a multicofork from the objects on the right.

                                                    Equations
                                                    Instances For
                                                      @[simp]
                                                      theorem CategoryTheory.Limits.Multicofork.ofπ_ι_app {C : Type u} [CategoryTheory.Category.{v, u} C] (I : CategoryTheory.Limits.MultispanIndex C) (P : C) (π : (b : I.R) → I.right b P) (w : ∀ (a : I.L), CategoryTheory.CategoryStruct.comp (I.fst a) (π (I.fstFrom a)) = CategoryTheory.CategoryStruct.comp (I.snd a) (π (I.sndFrom a))) (x : CategoryTheory.Limits.WalkingMultispan I.fstFrom I.sndFrom) :
                                                      @[simp]
                                                      theorem CategoryTheory.Limits.Multicofork.ofπ_pt {C : Type u} [CategoryTheory.Category.{v, u} C] (I : CategoryTheory.Limits.MultispanIndex C) (P : C) (π : (b : I.R) → I.right b P) (w : ∀ (a : I.L), CategoryTheory.CategoryStruct.comp (I.fst a) (π (I.fstFrom a)) = CategoryTheory.CategoryStruct.comp (I.snd a) (π (I.sndFrom a))) :
                                                      def CategoryTheory.Limits.Multicofork.ofπ {C : Type u} [CategoryTheory.Category.{v, u} C] (I : CategoryTheory.Limits.MultispanIndex C) (P : C) (π : (b : I.R) → I.right b P) (w : ∀ (a : I.L), CategoryTheory.CategoryStruct.comp (I.fst a) (π (I.fstFrom a)) = CategoryTheory.CategoryStruct.comp (I.snd a) (π (I.sndFrom a))) :

                                                      Construct a multicofork using a collection π of morphisms.

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

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

                                                        Equations
                                                        Instances For

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

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

                                                            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
                                                              @[simp]
                                                              theorem CategoryTheory.Limits.MultispanIndex.ofSigmaCoforkFunctor_map_hom {C : Type u} [CategoryTheory.Category.{v, u} C] (I : CategoryTheory.Limits.MultispanIndex C) [CategoryTheory.Limits.HasCoproduct I.left] [CategoryTheory.Limits.HasCoproduct I.right] {K₁ : CategoryTheory.Limits.Cofork I.fstSigmaMap I.sndSigmaMap} {K₂ : CategoryTheory.Limits.Cofork I.fstSigmaMap I.sndSigmaMap} (f : K₁ K₂) :
                                                              (I.ofSigmaCoforkFunctor.map f).hom = f.hom

                                                              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 C, we say that it has a multiequalizer if the associated multicospan has a limit.

                                                                Equations
                                                                Instances For
                                                                  @[reducible, inline]

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

                                                                  Equations
                                                                  Instances For
                                                                    @[reducible, inline]

                                                                    Construct a morphism to the multiequalizer from its universal property.

                                                                    Equations
                                                                    Instances For

                                                                      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]

                                                                          Construct a morphism from the multicoequalizer from its universal property.

                                                                          Equations
                                                                          Instances For

                                                                            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