Leibniz Constructions #
Let F : C₁ ⥤ C₂ ⥤ C₃. Given morphisms f₁ : X₁ ⟶ Y₁ in C₁
and f₂ : X₂ ⟶ Y₂ in C₂, we introduce a structure
F.PushoutObjObj f₁ f₂ which contains the data of a
pushout of (F.obj Y₁).obj X₂ and (F.obj X₁).obj Y₂
along (F.obj X₁).obj X₂. If sq₁₂ : F.PushoutObjObj f₁ f₂,
we have a canonical "inclusion" sq₁₂.ι : sq₁₂.pt ⟶ (F.obj Y₁).obj Y₂.
If C₃ has pushouts, then we define the Leibniz pushout (often called pushout-product) as the
canonical inclusion (PushoutObjObj.ofHasPushout F f₁ f₂).ι. This defines a bifunctor
F.leibnizPushout : Arrow C₁ ⥤ Arrow C₂ ⥤ Arrow C₃.
Similarly, if we have a bifunctor G : C₁ᵒᵖ ⥤ C₃ ⥤ C₂, and
morphisms f₁ : X₁ ⟶ Y₁ in C₁ and f₃ : X₃ ⟶ Y₃ in C₃,
we introduce a structure F.PullbackObjObj f₁ f₃ which
contains the data of a pullback of (G.obj (op X₁)).obj X₃
and (G.obj (op Y₁)).obj Y₃ over (G.obj (op X₁)).obj Y₃.
If sq₁₃ : F.PullbackObjObj f₁ f₃, we have a canonical
projection sq₁₃.π : (G.obj Y₁).obj X₃ ⟶ sq₁₃.pt.
If C₂ has pullbacks, then we define the Leibniz pullback (often called pullback-hom) as the
canonical projection (PullbackObjObj.ofHasPullback G f₁ f₃).π. This defines a bifunctor
G.leibnizPullback : (Arrow C₁)ᵒᵖ ⥤ Arrow C₃ ⥤ Arrow C₂.
References #
- [Emily Riehl, Dominic Verity, Elements of ∞-Category Theory, Definition C.2.8][RV22]
- https://ncatlab.org/nlab/show/pushout-product
- https://ncatlab.org/nlab/show/pullback-power
Tags #
pushout-product, pullback-hom, pullback-power, Leibniz
Given a bifunctor F : C₁ ⥤ C₂ ⥤ C₃, and morphisms f₁ : X₁ ⟶ Y₁ in C₁
and f₂ : X₂ ⟶ Y₂ in C₂, this structure contains the data of
a pushout of (F.obj Y₁).obj X₂ and (F.obj X₁).obj Y₂
along (F.obj X₁).obj X₂.
- pt : C₃
the pushout
the first inclusion
the second inclusion
Instances For
The PushoutObjObj structure given by the pushout of the colimits API.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The "inclusion" sq.pt ⟶ (F.obj Y₁).obj Y₂ when
sq : F.PushoutObjObj f₁ f₂.
Instances For
Given sq : F.PushoutObjObj f₁ f₂, flipping the pushout square gives
sq.flip : F.flip.PushoutObjObj f₂ f₁.
Instances For
Given a PushoutObjObj of f₁ : Arrow C₁ and f₂ : Arrow C₂, a PushoutObjObj of f₁' and
f₂ : Arrow C₂, and a morphism f₁ ⟶ f₁', this defines a morphism between the induced
pushout maps.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Given a PushoutObjObj of f₁ : Arrow C₁ and f₂ : Arrow C₂, a PushoutObjObj of f₁' and
f₂ : Arrow C₂, and an isomorphism f₁ ≅ f₁', this defines an isomorphism of the induced
pushout maps.
Equations
- sq₁₂.ι_iso_of_iso_left sq₁₂' iso = { hom := sq₁₂.mapArrowLeft sq₁₂' iso.hom, inv := sq₁₂'.mapArrowLeft sq₁₂ iso.inv, hom_inv_id := ⋯, inv_hom_id := ⋯ }
Instances For
Given a PushoutObjObj of f₁ : Arrow C₁ and f₂ : Arrow C₂, a PushoutObjObj of f₁ and
f₂' : Arrow C₂, and a morphism f₂ ⟶ f₂', this defines a morphism between the induced
pushout maps.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Given a PushoutObjObj of f₁ : Arrow C₁ and f₂ : Arrow C₂, a PushoutObjObj of f₁ and
f₂' : Arrow C₂, and an isomorphism f₂ ≅ f₂', this defines an isomorphism of the induced
pushout maps.
Equations
- sq₁₂.ι_iso_of_iso_right sq₁₂' iso = { hom := sq₁₂.mapArrowRight sq₁₂' iso.hom, inv := sq₁₂'.mapArrowRight sq₁₂ iso.inv, hom_inv_id := ⋯, inv_hom_id := ⋯ }
Instances For
Given a bifunctor F : C₁ ⥤ C₂ ⥤ C₃ to a category C₃ which has pushouts, the Leibniz pushout
(pushout-product) of f₁ : X₁ ⟶ Y₁ in C₁ and f₂ : X₂ ⟶ Y₂ in C₂ is the map
pushout ((F.map f₁).app X₂) ((F.obj X₁).map f₂) ⟶ (F.obj Y₁).obj Y₂ induced by the diagram
`(F.obj X₁).obj X₂` ----> `(F.obj Y₁).obj X₂`
| |
| |
v v
`(F.obj X₁).obj Y₂` ----> `(F.obj Y₁).obj Y₂`
Equations
- One or more equations did not get rendered due to their size.
Instances For
Given a bifunctor G : C₁ᵒᵖ ⥤ C₃ ⥤ C₂, and morphisms f₁ : X₁ ⟶ Y₁ in C₁
and f₃ : X₃ ⟶ Y₃ in C₃, this structure contains the data of
a pullback of (G.obj (op X₁)).obj X₃
and (G.obj (op Y₁)).obj Y₃ over (G.obj (op X₁)).obj Y₃.
- pt : C₂
the pullback
the first projection
the second projection
- isPullback : IsPullback self.fst self.snd ((G.obj (Opposite.op X₁)).map f₃) ((G.map f₁.op).app Y₃)
Instances For
The PullbackObjObj structure given by the pullback of the limits API.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The projection (G.obj (op Y₁)).obj X₃ ⟶ sq.pt when
sq : G.PullbackObjObj f₁ f₃.
Instances For
Given a PullbackObjObj of f₁ : Arrow C₁ and f₃ : Arrow C₃, a PullbackObjObj of f₁' and
f₃ : Arrow C₃, and a morphism f₁' ⟶ f₁, this defines a morphism between the induced
pullback maps.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Given a PullbackObjObj of f₁ : Arrow C₁ and f₃ : Arrow C₃, a PullbackObjObj of f₁' and
f₃ : Arrow C₃, and an isomorphism f₁ ≅ f₁', this defines an isomorphism of the induced
pullback maps.
Equations
- sq₁₃.π_iso_of_iso_left sq₁₃' iso = { hom := sq₁₃.mapArrowLeft sq₁₃' iso.inv, inv := sq₁₃'.mapArrowLeft sq₁₃ iso.hom, hom_inv_id := ⋯, inv_hom_id := ⋯ }
Instances For
Given a PullbackObjObj of f₁ : Arrow C₁ and f₃ : Arrow C₃, a PullbackObjObj of f₁ and
f₃' : Arrow C₃, and a morphism f₃ ⟶ f₃', this defines a morphism between the induced
pullback maps.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Given a PullbackObjObj of f₁ : Arrow C₁ and f₃ : Arrow C₃, a PullbackObjObj of f₁ and
f₃' : Arrow C₃, and an isomorphism f₃ ≅ f₃', this defines an isomorphism of the induced
pullback maps.
Equations
- sq₁₃.π_iso_of_iso_right sq₁₃' iso = { hom := sq₁₃.mapArrowRight sq₁₃' iso.hom, inv := sq₁₃'.mapArrowRight sq₁₃ iso.inv, hom_inv_id := ⋯, inv_hom_id := ⋯ }
Instances For
Given a bifunctor G : C₁ᵒᵖ ⥤ C₃ ⥤ C₂ to a category C₂ which has pullbacks, the Leibniz
pullback (pullback-power) of f₁ : X₁ ⟶ Y₁ in C₁ and f₃ : X₃ ⟶ Y₃ in C₃ is the map
(G.obj (op Y₁)).obj X₃ ⟶ pullback ((G.obj (op X₁)).map f₃) ((G.map f₁.op).app Y₃) induced by
the diagram
`(G.obj (op Y₁)).obj X₃` ----> `(G.obj (op X₁)).obj X₃`
| |
| |
v v
`(G.obj (op Y₁)).obj Y₃` ----> `(G.obj (op X₁)).obj Y₃`
Equations
- One or more equations did not get rendered due to their size.