Preserving pullbacks #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
Constructions to relate the notions of preserving pullbacks and reflecting pullbacks to concrete pullback cones.
In particular, we show that pullback_comparison G f g
is an isomorphism iff G
preserves
the pullback of f
and g
.
The dual is also given.
TODO #
- Generalise to wide pullbacks
The map of a pullback cone is a limit iff the fork consisting of the mapped morphisms is a
limit. This essentially lets us commute pullback_cone.mk
with functor.map_cone
.
Equations
- category_theory.limits.is_limit_map_cone_pullback_cone_equiv G comm = (category_theory.limits.is_limit.postcompose_hom_equiv (category_theory.limits.diagram_iso_cospan (category_theory.limits.cospan f g ⋙ G)) (G.map_cone (category_theory.limits.pullback_cone.mk h k comm))).symm.trans (category_theory.limits.is_limit.equiv_iso_limit (category_theory.limits.cones.ext (category_theory.iso.refl ((category_theory.limits.cones.postcompose (category_theory.limits.diagram_iso_cospan (category_theory.limits.cospan f g ⋙ G)).hom).obj (G.map_cone (category_theory.limits.pullback_cone.mk h k comm))).X) _))
The property of preserving pullbacks expressed in terms of binary fans.
The property of reflecting pullbacks expressed in terms of binary fans.
If G
preserves pullbacks and C
has them, then the pullback cone constructed of the mapped
morphisms of the pullback cone is a limit.
If F
preserves the pullback of f, g
, it also preserves the pullback of g, f
.
Equations
- category_theory.limits.preserves_pullback_symmetry G f g = {preserves := λ (c : category_theory.limits.cone (category_theory.limits.cospan g f)) (hc : category_theory.limits.is_limit c), (category_theory.limits.is_limit.postcompose_hom_equiv (category_theory.limits.diagram_iso_cospan (category_theory.limits.cospan g f ⋙ G)) (G.map_cone c)).to_fun ((category_theory.limits.pullback_cone.flip_is_limit ((category_theory.limits.is_limit_map_cone_pullback_cone_equiv G _).to_fun (category_theory.limits.preserves_limit.preserves (category_theory.limits.pullback_cone.flip_is_limit (((category_theory.limits.is_limit.postcompose_hom_equiv (category_theory.limits.diagram_iso_cospan (category_theory.limits.cospan g f)) c).inv_fun hc).of_iso_limit (category_theory.limits.pullback_cone.iso_mk c)))))).of_iso_limit (category_theory.limits.pullback_cone.iso_mk (G.map_cone c)).symm)}
If G
preserves the pullback of (f,g)
, then the pullback comparison map for G
at (f,g)
is
an isomorphism.
The map of a pushout cocone is a colimit iff the cofork consisting of the mapped morphisms is a
colimit. This essentially lets us commute pushout_cocone.mk
with functor.map_cocone
.
Equations
- category_theory.limits.is_colimit_map_cocone_pushout_cocone_equiv G comm = (category_theory.limits.is_colimit.precompose_hom_equiv (category_theory.limits.diagram_iso_span (category_theory.limits.span f g ⋙ G)).symm (G.map_cocone (category_theory.limits.pushout_cocone.mk h k comm))).symm.trans (category_theory.limits.is_colimit.equiv_iso_colimit (category_theory.limits.cocones.ext (category_theory.iso.refl ((category_theory.limits.cocones.precompose (category_theory.limits.diagram_iso_span (category_theory.limits.span f g ⋙ G)).symm.hom).obj (G.map_cocone (category_theory.limits.pushout_cocone.mk h k comm))).X) _))
The property of preserving pushouts expressed in terms of binary cofans.
The property of reflecting pushouts expressed in terms of binary cofans.
If G
preserves pushouts and C
has them, then the pushout cocone constructed of the mapped
morphisms of the pushout cocone is a colimit.
If F
preserves the pushout of f, g
, it also preserves the pushout of g, f
.
Equations
- category_theory.limits.preserves_pushout_symmetry G f g = {preserves := λ (c : category_theory.limits.cocone (category_theory.limits.span g f)) (hc : category_theory.limits.is_colimit c), (category_theory.limits.is_colimit.precompose_hom_equiv (category_theory.limits.diagram_iso_span (category_theory.limits.span g f ⋙ G)).symm (G.map_cocone c)).to_fun ((category_theory.limits.pushout_cocone.flip_is_colimit ((category_theory.limits.is_colimit_map_cocone_pushout_cocone_equiv G _).to_fun (category_theory.limits.preserves_colimit.preserves (category_theory.limits.pushout_cocone.flip_is_colimit (((category_theory.limits.is_colimit.precompose_hom_equiv (category_theory.limits.diagram_iso_span (category_theory.limits.span ((category_theory.limits.span g f).map category_theory.limits.walking_span.hom.fst) ((category_theory.limits.span g f).map category_theory.limits.walking_span.hom.snd))) c).inv_fun hc).of_iso_colimit (category_theory.limits.pushout_cocone.iso_mk c)))))).of_iso_colimit (category_theory.limits.pushout_cocone.iso_mk (G.map_cocone c)).symm)}
If G
preserves the pushout of (f,g)
, then the pushout comparison map for G
at (f,g)
is
an isomorphism.
If the pullback comparison map for G
at (f,g)
is an isomorphism, then G
preserves the
pullback of (f,g)
.
Equations
- category_theory.limits.preserves_pullback.of_iso_comparison G = category_theory.limits.preserves_limit_of_preserves_limit_cone (category_theory.limits.pullback_is_pullback f g) (⇑((category_theory.limits.is_limit_map_cone_pullback_cone_equiv G category_theory.limits.pullback.condition).symm) (category_theory.limits.limit.is_limit (category_theory.limits.cospan (G.map f) (G.map g))).of_point_iso)
If the pushout comparison map for G
at (f,g)
is an isomorphism, then G
preserves the
pushout of (f,g)
.
Equations
- category_theory.limits.preserves_pushout.of_iso_comparison G = category_theory.limits.preserves_colimit_of_preserves_colimit_cocone (category_theory.limits.pushout_is_pushout f g) (⇑((category_theory.limits.is_colimit_map_cocone_pushout_cocone_equiv G category_theory.limits.pushout.condition).symm) (category_theory.limits.colimit.is_colimit (category_theory.limits.span (G.map f) (G.map g))).of_point_iso)