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).
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.
The type underlying the multiequalizer diagram.
- left {J : MulticospanShape} : J.L → WalkingMulticospan J
- right {J : MulticospanShape} : J.R → WalkingMulticospan J
The type underlying the multiecoqualizer diagram.
- left {J : MultispanShape} : J.L → WalkingMultispan J
- right {J : MultispanShape} : J.R → WalkingMultispan J
Morphisms for WalkingMulticospan
.
- id {J : MulticospanShape} (A : WalkingMulticospan J) : A.Hom A
- fst {J : MulticospanShape} (b : J.R) : (left (J.fst b)).Hom (right b)
- snd {J : MulticospanShape} (b : J.R) : (left (J.snd b)).Hom (right b)
Composition of morphisms for WalkingMulticospan
.
Equations
- One or more equations did not get rendered due to their size.
- (CategoryTheory.Limits.WalkingMulticospan.Hom.id x✝²).comp x✝ = x✝
Equations
- One or more equations did not get rendered due to their size.
Morphisms for WalkingMultispan
.
- id {J : MultispanShape} (A : WalkingMultispan J) : A.Hom A
- fst {J : MultispanShape} (a : J.L) : (left a).Hom (right (J.fst a))
- snd {J : MultispanShape} (a : J.L) : (left a).Hom (right (J.snd a))
Equations
Composition of morphisms for WalkingMultispan
.
Equations
- One or more equations did not get rendered due to their size.
- (CategoryTheory.Limits.WalkingMultispan.Hom.id x✝²).comp x✝ = x✝
Equations
- One or more equations did not get rendered due to their size.
This is a structure encapsulating the data necessary to define a Multicospan
.
This is a structure encapsulating the data necessary to define a Multispan
.
The multicospan associated to I : MulticospanIndex
.
Equations
- One or more equations did not get rendered due to their size.
The induced map ∏ᶜ I.left ⟶ ∏ᶜ I.right
via I.fst
.
Equations
- I.fstPiMap = CategoryTheory.Limits.Pi.lift fun (b : J.R) => CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.Pi.π I.left (J.fst b)) (I.fst b)
The induced map ∏ᶜ I.left ⟶ ∏ᶜ I.right
via I.snd
.
Equations
- I.sndPiMap = CategoryTheory.Limits.Pi.lift fun (b : J.R) => CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.Pi.π I.left (J.snd b)) (I.snd b)
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
The multispan associated to I : MultispanIndex
.
Equations
- One or more equations did not get rendered due to their size.
The induced map ∐ I.left ⟶ ∐ I.right
via I.fst
.
Equations
- I.fstSigmaMap = CategoryTheory.Limits.Sigma.desc fun (b : J.L) => CategoryTheory.CategoryStruct.comp (I.fst b) (CategoryTheory.Limits.Sigma.ι I.right (J.fst b))
The induced map ∐ I.left ⟶ ∐ I.right
via I.snd
.
Equations
- I.sndSigmaMap = CategoryTheory.Limits.Sigma.desc fun (b : J.L) => CategoryTheory.CategoryStruct.comp (I.snd b) (CategoryTheory.Limits.Sigma.ι I.right (J.snd b))
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
A multifork is a cone over a multicospan.
A multicofork is a cocone over a multispan.
The maps from the cone point of a multifork to the objects on the left.
Equations
- K.ι a = K.π.app (CategoryTheory.Limits.WalkingMulticospan.left a)
Construct a multifork using a collection ι
of morphisms.
Equations
- One or more equations did not get rendered due to their size.
This definition provides a convenient way to show that a multifork is a limit.
Equations
- CategoryTheory.Limits.Multifork.IsLimit.mk K lift fac uniq = { lift := lift, fac := ⋯, uniq := ⋯ }
Constructor for morphisms to the point of a limit multifork.
Equations
- CategoryTheory.Limits.Multifork.IsLimit.lift hK k hk = hK.lift (CategoryTheory.Limits.Multifork.ofι I T k hk)
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.
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.
Multifork.toPiFork
as a functor.
Equations
- One or more equations did not get rendered due to their size.
Multifork.ofPiFork
as a functor.
Equations
- One or more equations did not get rendered due to their size.
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.
The maps to the cocone point of a multicofork from the objects on the right.
Equations
- K.π b = K.ι.app (CategoryTheory.Limits.WalkingMultispan.right b)
Construct a multicofork using a collection π
of morphisms.
Equations
- One or more equations did not get rendered due to their size.
This definition provides a convenient way to show that a multicofork is a colimit.
Equations
- CategoryTheory.Limits.Multicofork.IsColimit.mk K desc fac uniq = { desc := desc, fac := ⋯, uniq := ⋯ }
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.
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.
Constructor for isomorphisms between multicoforks.
Equations
Multicofork.toSigmaCofork
as a functor.
Equations
- One or more equations did not get rendered due to their size.
Multicofork.ofSigmaCofork
as a functor.
Equations
- One or more equations did not get rendered due to their size.
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.
For I : MulticospanIndex J C
, we say that it has a multiequalizer if the associated
multicospan has a limit.
The multiequalizer of I : MulticospanIndex J C
.
For I : MultispanIndex J C
, we say that it has a multicoequalizer if
the associated multicospan has a limit.
The multiecoqualizer of I : MultispanIndex J C
.
The canonical map from the multiequalizer to the objects on the left.
The multifork associated to the multiequalizer.
Construct a morphism to the multiequalizer from its universal property.
Equations
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.
The canonical injection multiequalizer I ⟶ ∏ᶜ I.left
.
Equations
- One or more equations did not get rendered due to their size.
The canonical map from the multiequalizer to the objects on the left.
The multicofork associated to the multicoequalizer.
Construct a morphism from the multicoequalizer from its universal property.
Equations
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.
The canonical projection ∐ I.right ⟶ multicoequalizer I
.
Equations
- One or more equations did not get rendered due to their size.
The inclusion functor WalkingMultispan (.ofLinearOrder ι) ⥤ WalkingMultispan (.prod ι)
.
Equations
- One or more equations did not get rendered due to their size.
Structure expressing a symmetry of I : MultispanIndex (.prod ι) C
which
allows to compare the corresponding multicoequalizer to the multicoequalizer
of I.toLinearOrder
.
the symmetry isomorphism
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.
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.
The multicofork for I.toLinearOrder
deduced from a multicofork
for I : MultispanIndex (.prod ι) C
when ι
is linearly ordered.
Equations
The multicofork for I : MultispanIndex (.prod ι) C
deduced from
a multicofork for I.toLinearOrder
when ι
is linearly ordered
and I
is symmetric.
Equations
- c.ofLinearOrder h = CategoryTheory.Limits.Multicofork.ofπ I c.pt c.π ⋯
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
- c.isColimitToLinearOrder hc h = CategoryTheory.Limits.Multicofork.IsColimit.mk c.toLinearOrder (fun (s : CategoryTheory.Limits.Multicofork I.toLinearOrder) => hc.desc (s.ofLinearOrder h)) ⋯ ⋯