A Fubini theorem for categorical (co)limits #
We prove that $lim_{J × K} G = lim_J (lim_K G(j, -))$ for a functor G : J × K ⥤ C
,
when all the appropriate limits exist.
We begin working with a functor F : J ⥤ K ⥤ C
. We'll write G : J × K ⥤ C
for the associated
"uncurried" functor.
In the first part, given a coherent family D
of limit cones over the functors F.obj j
,
and a cone c
over G
, we construct a cone over the cone points of D
.
We then show that if c
is a limit cone, the constructed cone is also a limit cone.
In the second part, we state the Fubini theorem in the setting where limits are
provided by suitable HasLimit
classes.
We construct
limitUncurryIsoLimitCompLim F : limit (uncurry.obj F) ≅ limit (F ⋙ lim)
and give simp lemmas characterising it.
For convenience, we also provide
limitIsoLimitCurryCompLim G : limit G ≅ limit ((curry.obj G) ⋙ lim)
in terms of the uncurried functor.
All statements have their counterpart for colimits.
A structure carrying a diagram of cones over the functors F.obj j
.
- obj : (j : J) → CategoryTheory.Limits.Cone (F.toPrefunctor.obj j)
For each object, a cone.
- map : {j j' : J} → (f : j ⟶ j') → (CategoryTheory.Limits.Cones.postcompose (F.toPrefunctor.map f)).toPrefunctor.obj (self.obj j) ⟶ self.obj j'
For each map, a map of cones.
- id : ∀ (j : J), (self.map (CategoryTheory.CategoryStruct.id j)).hom = CategoryTheory.CategoryStruct.id ((CategoryTheory.Limits.Cones.postcompose (F.toPrefunctor.map (CategoryTheory.CategoryStruct.id j))).toPrefunctor.obj (self.obj j)).pt
- comp : ∀ {j₁ j₂ j₃ : J} (f : j₁ ⟶ j₂) (g : j₂ ⟶ j₃), (self.map (CategoryTheory.CategoryStruct.comp f g)).hom = CategoryTheory.CategoryStruct.comp (self.map f).hom (self.map g).hom
Instances For
A structure carrying a diagram of cocones over the functors F.obj j
.
- obj : (j : J) → CategoryTheory.Limits.Cocone (F.toPrefunctor.obj j)
For each object, a cocone.
- map : {j j' : J} → (f : j ⟶ j') → self.obj j ⟶ (CategoryTheory.Limits.Cocones.precompose (F.toPrefunctor.map f)).toPrefunctor.obj (self.obj j')
For each map, a map of cocones.
- id : ∀ (j : J), (self.map (CategoryTheory.CategoryStruct.id j)).hom = CategoryTheory.CategoryStruct.id (self.obj j).pt
- comp : ∀ {j₁ j₂ j₃ : J} (f : j₁ ⟶ j₂) (g : j₂ ⟶ j₃), (self.map (CategoryTheory.CategoryStruct.comp f g)).hom = CategoryTheory.CategoryStruct.comp (self.map f).hom (self.map g).hom
Instances For
Extract the functor J ⥤ C
consisting of the cone points and the maps between them,
from a DiagramOfCones
.
Equations
- CategoryTheory.Limits.DiagramOfCones.conePoints D = CategoryTheory.Functor.mk { obj := fun (j : J) => (D.obj j).pt, map := fun {X Y : J} (f : X ⟶ Y) => (D.map f).hom }
Instances For
Extract the functor J ⥤ C
consisting of the cocone points and the maps between them,
from a DiagramOfCocones
.
Equations
- CategoryTheory.Limits.DiagramOfCocones.coconePoints D = CategoryTheory.Functor.mk { obj := fun (j : J) => (D.obj j).pt, map := fun {X Y : J} (f : X ⟶ Y) => (D.map f).hom }
Instances For
Given a diagram D
of limit cones over the F.obj j
, and a cone over uncurry.obj F
,
we can construct a cone over the diagram consisting of the cone points from D
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Given a diagram D
of colimit cocones over the F.obj j
, and a cocone over uncurry.obj F
,
we can construct a cocone over the diagram consisting of the cocone points from D
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
coneOfConeUncurry Q c
is a limit cone when c
is a limit cone.
Equations
- One or more equations did not get rendered due to their size.
Instances For
coconeOfCoconeUncurry Q c
is a colimit cocone when c
is a colimit cocone.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Given a functor F : J ⥤ K ⥤ C
, with all needed limits,
we can construct a diagram consisting of the limit cone over each functor F.obj j
,
and the universal cone morphisms between these.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
The Fubini theorem for a functor F : J ⥤ K ⥤ C
,
showing that the limit of uncurry.obj F
can be computed as
the limit of the limits of the functors F.obj j
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Given a functor F : J ⥤ K ⥤ C
, with all needed colimits,
we can construct a diagram consisting of the colimit cocone over each functor F.obj j
,
and the universal cocone morphisms between these.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
The Fubini theorem for a functor F : J ⥤ K ⥤ C
,
showing that the colimit of uncurry.obj F
can be computed as
the colimit of the colimits of the functors F.obj j
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The limit of F.flip ⋙ lim
is isomorphic to the limit of F ⋙ lim
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The colimit of F.flip ⋙ colim
is isomorphic to the colimit of F ⋙ colim
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The Fubini theorem for a functor G : J × K ⥤ C
,
showing that the limit of G
can be computed as
the limit of the limits of the functors G.obj (j, _)
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The Fubini theorem for a functor G : J × K ⥤ C
,
showing that the colimit of G
can be computed as
the colimit of the colimits of the functors G.obj (j, _)
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A variant of the Fubini theorem for a functor G : J × K ⥤ C
,
showing that $\lim_k \lim_j G(j,k) ≅ \lim_j \lim_k G(j,k)$.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A variant of the Fubini theorem for a functor G : J × K ⥤ C
,
showing that $\colim_k \colim_j G(j,k) ≅ \colim_j \colim_k G(j,k)$.
Equations
- One or more equations did not get rendered due to their size.