Pullbacks in functor categories #
We prove the isomorphism (pullback f g).obj d ≅ pullback (f.app d) (g.app d).
def CategoryTheory.Limits.PullbackCone.combine {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] {F G H : Functor D C} (f : F ⟶ H) (g : G ⟶ H) (c : (X : D) → PullbackCone (f.app X) (g.app X)) (hc : (X : D) → IsLimit (c X)) :
PullbackCone f g
Given functors F G H and natural transformations f : F ⟶ H and g : g : G ⟶ H, together
with a collection of limiting pullback cones for each cospan F X ⟶ H X, G X ⟶ H X, we can stitch
them together to give a pullback cone for the cospan formed by f and g.
combinePullbackConesIsLimit shows that this pullback cone is limiting.
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[simp]
theorem CategoryTheory.Limits.PullbackCone.combine_π_app {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] {F G H : Functor D C} (f : F ⟶ H) (g : G ⟶ H) (c : (X : D) → PullbackCone (f.app X) (g.app X)) (hc : (X : D) → IsLimit (c X)) (j : WalkingCospan) :
(combine f g c hc).π.app j = Option.rec (CategoryStruct.comp { app := fun (X : D) => (c X).fst, naturality := ⋯ } f)
(fun (val : WalkingPair) =>
WalkingPair.rec { app := fun (X : D) => (c X).fst, naturality := ⋯ }
{ app := fun (X : D) => (c X).snd, naturality := ⋯ } val)
j
@[simp]
theorem CategoryTheory.Limits.PullbackCone.combine_pt_map {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] {F G H : Functor D C} (f : F ⟶ H) (g : G ⟶ H) (c : (X : D) → PullbackCone (f.app X) (g.app X)) (hc : (X : D) → IsLimit (c X)) {X Y : D} (h : X ⟶ Y) :
@[simp]
theorem CategoryTheory.Limits.PullbackCone.combine_pt_obj {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] {F G H : Functor D C} (f : F ⟶ H) (g : G ⟶ H) (c : (X : D) → PullbackCone (f.app X) (g.app X)) (hc : (X : D) → IsLimit (c X)) (X : D) :
def CategoryTheory.Limits.PullbackCone.combineIsLimit {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] {F G H : Functor D C} (f : F ⟶ H) (g : G ⟶ H) (c : (X : D) → PullbackCone (f.app X) (g.app X)) (hc : (X : D) → IsLimit (c X)) :
The pullback cone combinePullbackCones is limiting.
Equations
- One or more equations did not get rendered due to their size.
Instances For
noncomputable def CategoryTheory.Limits.pullbackObjIso {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] {F G H : Functor D C} [HasPullbacks C] (f : F ⟶ H) (g : G ⟶ H) (d : D) :
Evaluating a pullback amounts to taking the pullback of the evaluations.
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[simp]
theorem CategoryTheory.Limits.pullbackObjIso_hom_comp_fst {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] {F G H : Functor D C} [HasPullbacks C] (f : F ⟶ H) (g : G ⟶ H) (d : D) :
CategoryStruct.comp (pullbackObjIso f g d).hom (pullback.fst (f.app d) (g.app d)) = (pullback.fst f g).app d
@[simp]
theorem CategoryTheory.Limits.pullbackObjIso_hom_comp_fst_assoc {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] {F G H : Functor D C} [HasPullbacks C] (f : F ⟶ H) (g : G ⟶ H) (d : D) {Z : C} (h : F.obj d ⟶ Z) :
CategoryStruct.comp (pullbackObjIso f g d).hom (CategoryStruct.comp (pullback.fst (f.app d) (g.app d)) h) = CategoryStruct.comp ((pullback.fst f g).app d) h
@[simp]
theorem CategoryTheory.Limits.pullbackObjIso_hom_comp_snd {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] {F G H : Functor D C} [HasPullbacks C] (f : F ⟶ H) (g : G ⟶ H) (d : D) :
CategoryStruct.comp (pullbackObjIso f g d).hom (pullback.snd (f.app d) (g.app d)) = (pullback.snd f g).app d
@[simp]
theorem CategoryTheory.Limits.pullbackObjIso_hom_comp_snd_assoc {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] {F G H : Functor D C} [HasPullbacks C] (f : F ⟶ H) (g : G ⟶ H) (d : D) {Z : C} (h : G.obj d ⟶ Z) :
CategoryStruct.comp (pullbackObjIso f g d).hom (CategoryStruct.comp (pullback.snd (f.app d) (g.app d)) h) = CategoryStruct.comp ((pullback.snd f g).app d) h
@[simp]
theorem CategoryTheory.Limits.pullbackObjIso_inv_comp_fst {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] {F G H : Functor D C} [HasPullbacks C] (f : F ⟶ H) (g : G ⟶ H) (d : D) :
CategoryStruct.comp (pullbackObjIso f g d).inv ((pullback.fst f g).app d) = pullback.fst (f.app d) (g.app d)
@[simp]
theorem CategoryTheory.Limits.pullbackObjIso_inv_comp_fst_assoc {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] {F G H : Functor D C} [HasPullbacks C] (f : F ⟶ H) (g : G ⟶ H) (d : D) {Z : C} (h : F.obj d ⟶ Z) :
CategoryStruct.comp (pullbackObjIso f g d).inv (CategoryStruct.comp ((pullback.fst f g).app d) h) = CategoryStruct.comp (pullback.fst (f.app d) (g.app d)) h
@[simp]
theorem CategoryTheory.Limits.pullbackObjIso_inv_comp_snd {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] {F G H : Functor D C} [HasPullbacks C] (f : F ⟶ H) (g : G ⟶ H) (d : D) :
CategoryStruct.comp (pullbackObjIso f g d).inv ((pullback.snd f g).app d) = pullback.snd (f.app d) (g.app d)
@[simp]
theorem CategoryTheory.Limits.pullbackObjIso_inv_comp_snd_assoc {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] {F G H : Functor D C} [HasPullbacks C] (f : F ⟶ H) (g : G ⟶ H) (d : D) {Z : C} (h : G.obj d ⟶ Z) :
CategoryStruct.comp (pullbackObjIso f g d).inv (CategoryStruct.comp ((pullback.snd f g).app d) h) = CategoryStruct.comp (pullback.snd (f.app d) (g.app d)) h
noncomputable def CategoryTheory.Limits.pushoutObjIso {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] {F G H : Functor D C} [HasPushouts C] (f : F ⟶ G) (g : F ⟶ H) (d : D) :
Evaluating a pushout amounts to taking the pushout of the evaluations.
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[simp]
theorem CategoryTheory.Limits.inl_comp_pushoutObjIso_hom {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] {F G H : Functor D C} [HasPushouts C] (f : F ⟶ G) (g : F ⟶ H) (d : D) :
CategoryStruct.comp ((pushout.inl f g).app d) (pushoutObjIso f g d).hom = pushout.inl (f.app d) (g.app d)
@[simp]
theorem CategoryTheory.Limits.inl_comp_pushoutObjIso_hom_assoc {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] {F G H : Functor D C} [HasPushouts C] (f : F ⟶ G) (g : F ⟶ H) (d : D) {Z : C} (h : pushout (f.app d) (g.app d) ⟶ Z) :
CategoryStruct.comp ((pushout.inl f g).app d) (CategoryStruct.comp (pushoutObjIso f g d).hom h) = CategoryStruct.comp (pushout.inl (f.app d) (g.app d)) h
@[simp]
theorem CategoryTheory.Limits.inr_comp_pushoutObjIso_hom {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] {F G H : Functor D C} [HasPushouts C] (f : F ⟶ G) (g : F ⟶ H) (d : D) :
CategoryStruct.comp ((pushout.inr f g).app d) (pushoutObjIso f g d).hom = pushout.inr (f.app d) (g.app d)
@[simp]
theorem CategoryTheory.Limits.inr_comp_pushoutObjIso_hom_assoc {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] {F G H : Functor D C} [HasPushouts C] (f : F ⟶ G) (g : F ⟶ H) (d : D) {Z : C} (h : pushout (f.app d) (g.app d) ⟶ Z) :
CategoryStruct.comp ((pushout.inr f g).app d) (CategoryStruct.comp (pushoutObjIso f g d).hom h) = CategoryStruct.comp (pushout.inr (f.app d) (g.app d)) h
@[simp]
theorem CategoryTheory.Limits.inl_comp_pushoutObjIso_inv {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] {F G H : Functor D C} [HasPushouts C] (f : F ⟶ G) (g : F ⟶ H) (d : D) :
CategoryStruct.comp (pushout.inl (f.app d) (g.app d)) (pushoutObjIso f g d).inv = (pushout.inl f g).app d
@[simp]
theorem CategoryTheory.Limits.inl_comp_pushoutObjIso_inv_assoc {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] {F G H : Functor D C} [HasPushouts C] (f : F ⟶ G) (g : F ⟶ H) (d : D) {Z : C} (h : (pushout f g).obj d ⟶ Z) :
CategoryStruct.comp (pushout.inl (f.app d) (g.app d)) (CategoryStruct.comp (pushoutObjIso f g d).inv h) = CategoryStruct.comp ((pushout.inl f g).app d) h
@[simp]
theorem CategoryTheory.Limits.inr_comp_pushoutObjIso_inv {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] {F G H : Functor D C} [HasPushouts C] (f : F ⟶ G) (g : F ⟶ H) (d : D) :
CategoryStruct.comp (pushout.inr (f.app d) (g.app d)) (pushoutObjIso f g d).inv = (pushout.inr f g).app d
@[simp]
theorem CategoryTheory.Limits.inr_comp_pushoutObjIso_inv_assoc {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] {F G H : Functor D C} [HasPushouts C] (f : F ⟶ G) (g : F ⟶ H) (d : D) {Z : C} (h : (pushout f g).obj d ⟶ Z) :
CategoryStruct.comp (pushout.inr (f.app d) (g.app d)) (CategoryStruct.comp (pushoutObjIso f g d).inv h) = CategoryStruct.comp ((pushout.inr f g).app d) h