The pullback of an isomorphism #
This file provides some basic results about the pullback (and pushout) of an isomorphism.
def
CategoryTheory.Limits.pullbackConeOfLeftIso
{C : Type u}
[CategoryTheory.Category.{v, u} C]
{X Y Z : C}
(f : X ⟶ Z)
(g : Y ⟶ Z)
[CategoryTheory.IsIso f]
:
If f : X ⟶ Z
is iso, then X ×[Z] Y ≅ Y
. This is the explicit limit cone.
Equations
Instances For
@[simp]
theorem
CategoryTheory.Limits.pullbackConeOfLeftIso_x
{C : Type u}
[CategoryTheory.Category.{v, u} C]
{X Y Z : C}
(f : X ⟶ Z)
(g : Y ⟶ Z)
[CategoryTheory.IsIso f]
:
(CategoryTheory.Limits.pullbackConeOfLeftIso f g).pt = Y
@[simp]
theorem
CategoryTheory.Limits.pullbackConeOfLeftIso_fst
{C : Type u}
[CategoryTheory.Category.{v, u} C]
{X Y Z : C}
(f : X ⟶ Z)
(g : Y ⟶ Z)
[CategoryTheory.IsIso f]
:
@[simp]
theorem
CategoryTheory.Limits.pullbackConeOfLeftIso_snd
{C : Type u}
[CategoryTheory.Category.{v, u} C]
{X Y Z : C}
(f : X ⟶ Z)
(g : Y ⟶ Z)
[CategoryTheory.IsIso f]
:
theorem
CategoryTheory.Limits.pullbackConeOfLeftIso_π_app_none
{C : Type u}
[CategoryTheory.Category.{v, u} C]
{X Y Z : C}
(f : X ⟶ Z)
(g : Y ⟶ Z)
[CategoryTheory.IsIso f]
:
(CategoryTheory.Limits.pullbackConeOfLeftIso f g).π.app none = g
@[simp]
theorem
CategoryTheory.Limits.pullbackConeOfLeftIso_π_app_left
{C : Type u}
[CategoryTheory.Category.{v, u} C]
{X Y Z : C}
(f : X ⟶ Z)
(g : Y ⟶ Z)
[CategoryTheory.IsIso f]
:
@[simp]
theorem
CategoryTheory.Limits.pullbackConeOfLeftIso_π_app_right
{C : Type u}
[CategoryTheory.Category.{v, u} C]
{X Y Z : C}
(f : X ⟶ Z)
(g : Y ⟶ Z)
[CategoryTheory.IsIso f]
:
(CategoryTheory.Limits.pullbackConeOfLeftIso f g).π.app CategoryTheory.Limits.WalkingCospan.right = CategoryTheory.CategoryStruct.id
(((CategoryTheory.Functor.const CategoryTheory.Limits.WalkingCospan).obj
(CategoryTheory.Limits.pullbackConeOfLeftIso f g).pt).obj
CategoryTheory.Limits.WalkingCospan.right)
def
CategoryTheory.Limits.pullbackConeOfLeftIsoIsLimit
{C : Type u}
[CategoryTheory.Category.{v, u} C]
{X Y Z : C}
(f : X ⟶ Z)
(g : Y ⟶ Z)
[CategoryTheory.IsIso f]
:
Verify that the constructed limit cone is indeed a limit.
Equations
- CategoryTheory.Limits.pullbackConeOfLeftIsoIsLimit f g = (CategoryTheory.Limits.pullbackConeOfLeftIso f g).isLimitAux' fun (s : CategoryTheory.Limits.PullbackCone f g) => ⟨s.snd, ⋯⟩
Instances For
theorem
CategoryTheory.Limits.hasPullback_of_left_iso
{C : Type u}
[CategoryTheory.Category.{v, u} C]
{X Y Z : C}
(f : X ⟶ Z)
(g : Y ⟶ Z)
[CategoryTheory.IsIso f]
:
instance
CategoryTheory.Limits.pullback_snd_iso_of_left_iso
{C : Type u}
[CategoryTheory.Category.{v, u} C]
{X Y Z : C}
(f : X ⟶ Z)
(g : Y ⟶ Z)
[CategoryTheory.IsIso f]
:
@[simp]
theorem
CategoryTheory.Limits.pullback_inv_snd_fst_of_left_isIso
{C : Type u}
[CategoryTheory.Category.{v, u} C]
{X Y Z : C}
(f : X ⟶ Z)
(g : Y ⟶ Z)
[CategoryTheory.IsIso f]
:
@[simp]
theorem
CategoryTheory.Limits.pullback_inv_snd_fst_of_left_isIso_assoc
{C : Type u}
[CategoryTheory.Category.{v, u} C]
{X Y Z : C}
(f : X ⟶ Z)
(g : Y ⟶ Z)
[CategoryTheory.IsIso f]
{Z✝ : C}
(h : X ⟶ Z✝)
:
def
CategoryTheory.Limits.pullbackConeOfRightIso
{C : Type u}
[CategoryTheory.Category.{v, u} C]
{X Y Z : C}
(f : X ⟶ Z)
(g : Y ⟶ Z)
[CategoryTheory.IsIso g]
:
If g : Y ⟶ Z
is iso, then X ×[Z] Y ≅ X
. This is the explicit limit cone.
Equations
Instances For
@[simp]
theorem
CategoryTheory.Limits.pullbackConeOfRightIso_x
{C : Type u}
[CategoryTheory.Category.{v, u} C]
{X Y Z : C}
(f : X ⟶ Z)
(g : Y ⟶ Z)
[CategoryTheory.IsIso g]
:
(CategoryTheory.Limits.pullbackConeOfRightIso f g).pt = X
@[simp]
theorem
CategoryTheory.Limits.pullbackConeOfRightIso_fst
{C : Type u}
[CategoryTheory.Category.{v, u} C]
{X Y Z : C}
(f : X ⟶ Z)
(g : Y ⟶ Z)
[CategoryTheory.IsIso g]
:
@[simp]
theorem
CategoryTheory.Limits.pullbackConeOfRightIso_snd
{C : Type u}
[CategoryTheory.Category.{v, u} C]
{X Y Z : C}
(f : X ⟶ Z)
(g : Y ⟶ Z)
[CategoryTheory.IsIso g]
:
theorem
CategoryTheory.Limits.pullbackConeOfRightIso_π_app_none
{C : Type u}
[CategoryTheory.Category.{v, u} C]
{X Y Z : C}
(f : X ⟶ Z)
(g : Y ⟶ Z)
[CategoryTheory.IsIso g]
:
(CategoryTheory.Limits.pullbackConeOfRightIso f g).π.app none = f
@[simp]
theorem
CategoryTheory.Limits.pullbackConeOfRightIso_π_app_left
{C : Type u}
[CategoryTheory.Category.{v, u} C]
{X Y Z : C}
(f : X ⟶ Z)
(g : Y ⟶ Z)
[CategoryTheory.IsIso g]
:
(CategoryTheory.Limits.pullbackConeOfRightIso f g).π.app CategoryTheory.Limits.WalkingCospan.left = CategoryTheory.CategoryStruct.id
(((CategoryTheory.Functor.const CategoryTheory.Limits.WalkingCospan).obj
(CategoryTheory.Limits.pullbackConeOfRightIso f g).pt).obj
CategoryTheory.Limits.WalkingCospan.left)
@[simp]
theorem
CategoryTheory.Limits.pullbackConeOfRightIso_π_app_right
{C : Type u}
[CategoryTheory.Category.{v, u} C]
{X Y Z : C}
(f : X ⟶ Z)
(g : Y ⟶ Z)
[CategoryTheory.IsIso g]
:
def
CategoryTheory.Limits.pullbackConeOfRightIsoIsLimit
{C : Type u}
[CategoryTheory.Category.{v, u} C]
{X Y Z : C}
(f : X ⟶ Z)
(g : Y ⟶ Z)
[CategoryTheory.IsIso g]
:
Verify that the constructed limit cone is indeed a limit.
Equations
- CategoryTheory.Limits.pullbackConeOfRightIsoIsLimit f g = (CategoryTheory.Limits.pullbackConeOfRightIso f g).isLimitAux' fun (s : CategoryTheory.Limits.PullbackCone f g) => ⟨s.fst, ⋯⟩
Instances For
theorem
CategoryTheory.Limits.hasPullback_of_right_iso
{C : Type u}
[CategoryTheory.Category.{v, u} C]
{X Y Z : C}
(f : X ⟶ Z)
(g : Y ⟶ Z)
[CategoryTheory.IsIso g]
:
instance
CategoryTheory.Limits.pullback_snd_iso_of_right_iso
{C : Type u}
[CategoryTheory.Category.{v, u} C]
{X Y Z : C}
(f : X ⟶ Z)
(g : Y ⟶ Z)
[CategoryTheory.IsIso g]
:
@[simp]
theorem
CategoryTheory.Limits.pullback_inv_fst_snd_of_right_isIso
{C : Type u}
[CategoryTheory.Category.{v, u} C]
{X Y Z : C}
(f : X ⟶ Z)
(g : Y ⟶ Z)
[CategoryTheory.IsIso g]
:
@[simp]
theorem
CategoryTheory.Limits.pullback_inv_fst_snd_of_right_isIso_assoc
{C : Type u}
[CategoryTheory.Category.{v, u} C]
{X Y Z : C}
(f : X ⟶ Z)
(g : Y ⟶ Z)
[CategoryTheory.IsIso g]
{Z✝ : C}
(h : Y ⟶ Z✝)
:
def
CategoryTheory.Limits.pushoutCoconeOfLeftIso
{C : Type u}
[CategoryTheory.Category.{v, u} C]
{X Y Z : C}
(f : X ⟶ Y)
(g : X ⟶ Z)
[CategoryTheory.IsIso f]
:
If f : X ⟶ Y
is iso, then Y ⨿[X] Z ≅ Z
. This is the explicit colimit cocone.
Equations
Instances For
@[simp]
theorem
CategoryTheory.Limits.pushoutCoconeOfLeftIso_x
{C : Type u}
[CategoryTheory.Category.{v, u} C]
{X Y Z : C}
(f : X ⟶ Y)
(g : X ⟶ Z)
[CategoryTheory.IsIso f]
:
(CategoryTheory.Limits.pushoutCoconeOfLeftIso f g).pt = Z
@[simp]
theorem
CategoryTheory.Limits.pushoutCoconeOfLeftIso_inl
{C : Type u}
[CategoryTheory.Category.{v, u} C]
{X Y Z : C}
(f : X ⟶ Y)
(g : X ⟶ Z)
[CategoryTheory.IsIso f]
:
@[simp]
theorem
CategoryTheory.Limits.pushoutCoconeOfLeftIso_inr
{C : Type u}
[CategoryTheory.Category.{v, u} C]
{X Y Z : C}
(f : X ⟶ Y)
(g : X ⟶ Z)
[CategoryTheory.IsIso f]
:
theorem
CategoryTheory.Limits.pushoutCoconeOfLeftIso_ι_app_none
{C : Type u}
[CategoryTheory.Category.{v, u} C]
{X Y Z : C}
(f : X ⟶ Y)
(g : X ⟶ Z)
[CategoryTheory.IsIso f]
:
(CategoryTheory.Limits.pushoutCoconeOfLeftIso f g).ι.app none = g
@[simp]
theorem
CategoryTheory.Limits.pushoutCoconeOfLeftIso_ι_app_left
{C : Type u}
[CategoryTheory.Category.{v, u} C]
{X Y Z : C}
(f : X ⟶ Y)
(g : X ⟶ Z)
[CategoryTheory.IsIso f]
:
@[simp]
theorem
CategoryTheory.Limits.pushoutCoconeOfLeftIso_ι_app_right
{C : Type u}
[CategoryTheory.Category.{v, u} C]
{X Y Z : C}
(f : X ⟶ Y)
(g : X ⟶ Z)
[CategoryTheory.IsIso f]
:
def
CategoryTheory.Limits.pushoutCoconeOfLeftIsoIsLimit
{C : Type u}
[CategoryTheory.Category.{v, u} C]
{X Y Z : C}
(f : X ⟶ Y)
(g : X ⟶ Z)
[CategoryTheory.IsIso f]
:
Verify that the constructed cocone is indeed a colimit.
Equations
- CategoryTheory.Limits.pushoutCoconeOfLeftIsoIsLimit f g = (CategoryTheory.Limits.pushoutCoconeOfLeftIso f g).isColimitAux' fun (s : CategoryTheory.Limits.PushoutCocone f g) => ⟨s.inr, ⋯⟩
Instances For
theorem
CategoryTheory.Limits.hasPushout_of_left_iso
{C : Type u}
[CategoryTheory.Category.{v, u} C]
{X Y Z : C}
(f : X ⟶ Y)
(g : X ⟶ Z)
[CategoryTheory.IsIso f]
:
instance
CategoryTheory.Limits.pushout_inr_iso_of_left_iso
{C : Type u}
[CategoryTheory.Category.{v, u} C]
{X Y Z : C}
(f : X ⟶ Y)
(g : X ⟶ Z)
[CategoryTheory.IsIso f]
:
@[simp]
theorem
CategoryTheory.Limits.pushout_inl_inv_inr_of_right_isIso
{C : Type u}
[CategoryTheory.Category.{v, u} C]
{X Y Z : C}
(f : X ⟶ Y)
(g : X ⟶ Z)
[CategoryTheory.IsIso f]
:
@[simp]
theorem
CategoryTheory.Limits.pushout_inl_inv_inr_of_right_isIso_assoc
{C : Type u}
[CategoryTheory.Category.{v, u} C]
{X Y Z : C}
(f : X ⟶ Y)
(g : X ⟶ Z)
[CategoryTheory.IsIso f]
{Z✝ : C}
(h : Z ⟶ Z✝)
:
def
CategoryTheory.Limits.pushoutCoconeOfRightIso
{C : Type u}
[CategoryTheory.Category.{v, u} C]
{X Y Z : C}
(f : X ⟶ Y)
(g : X ⟶ Z)
[CategoryTheory.IsIso g]
:
If f : X ⟶ Z
is iso, then Y ⨿[X] Z ≅ Y
. This is the explicit colimit cocone.
Equations
Instances For
@[simp]
theorem
CategoryTheory.Limits.pushoutCoconeOfRightIso_x
{C : Type u}
[CategoryTheory.Category.{v, u} C]
{X Y Z : C}
(f : X ⟶ Y)
(g : X ⟶ Z)
[CategoryTheory.IsIso g]
:
(CategoryTheory.Limits.pushoutCoconeOfRightIso f g).pt = Y
@[simp]
theorem
CategoryTheory.Limits.pushoutCoconeOfRightIso_inl
{C : Type u}
[CategoryTheory.Category.{v, u} C]
{X Y Z : C}
(f : X ⟶ Y)
(g : X ⟶ Z)
[CategoryTheory.IsIso g]
:
@[simp]
theorem
CategoryTheory.Limits.pushoutCoconeOfRightIso_inr
{C : Type u}
[CategoryTheory.Category.{v, u} C]
{X Y Z : C}
(f : X ⟶ Y)
(g : X ⟶ Z)
[CategoryTheory.IsIso g]
:
theorem
CategoryTheory.Limits.pushoutCoconeOfRightIso_ι_app_none
{C : Type u}
[CategoryTheory.Category.{v, u} C]
{X Y Z : C}
(f : X ⟶ Y)
(g : X ⟶ Z)
[CategoryTheory.IsIso g]
:
(CategoryTheory.Limits.pushoutCoconeOfRightIso f g).ι.app none = f
@[simp]
theorem
CategoryTheory.Limits.pushoutCoconeOfRightIso_ι_app_left
{C : Type u}
[CategoryTheory.Category.{v, u} C]
{X Y Z : C}
(f : X ⟶ Y)
(g : X ⟶ Z)
[CategoryTheory.IsIso g]
:
@[simp]
theorem
CategoryTheory.Limits.pushoutCoconeOfRightIso_ι_app_right
{C : Type u}
[CategoryTheory.Category.{v, u} C]
{X Y Z : C}
(f : X ⟶ Y)
(g : X ⟶ Z)
[CategoryTheory.IsIso g]
:
def
CategoryTheory.Limits.pushoutCoconeOfRightIsoIsLimit
{C : Type u}
[CategoryTheory.Category.{v, u} C]
{X Y Z : C}
(f : X ⟶ Y)
(g : X ⟶ Z)
[CategoryTheory.IsIso g]
:
Verify that the constructed cocone is indeed a colimit.
Equations
- CategoryTheory.Limits.pushoutCoconeOfRightIsoIsLimit f g = (CategoryTheory.Limits.pushoutCoconeOfRightIso f g).isColimitAux' fun (s : CategoryTheory.Limits.PushoutCocone f g) => ⟨s.inl, ⋯⟩
Instances For
theorem
CategoryTheory.Limits.hasPushout_of_right_iso
{C : Type u}
[CategoryTheory.Category.{v, u} C]
{X Y Z : C}
(f : X ⟶ Y)
(g : X ⟶ Z)
[CategoryTheory.IsIso g]
:
instance
CategoryTheory.Limits.pushout_inl_iso_of_right_iso
{C : Type u}
[CategoryTheory.Category.{v, u} C]
{X Y Z : C}
(f : X ⟶ Y)
(g : X ⟶ Z)
[CategoryTheory.IsIso g]
:
@[simp]
theorem
CategoryTheory.Limits.pushout_inr_inv_inl_of_right_isIso
{C : Type u}
[CategoryTheory.Category.{v, u} C]
{X Y Z : C}
(f : X ⟶ Y)
(g : X ⟶ Z)
[CategoryTheory.IsIso g]
:
@[simp]
theorem
CategoryTheory.Limits.pushout_inr_inv_inl_of_right_isIso_assoc
{C : Type u}
[CategoryTheory.Category.{v, u} C]
{X Y Z : C}
(f : X ⟶ Y)
(g : X ⟶ Z)
[CategoryTheory.IsIso g]
{Z✝ : C}
(h : Y ⟶ Z✝)
: