Documentation

Mathlib.CategoryTheory.Limits.Shapes.Pullback.Categorical.Basic

Categorical pullbacks #

This file defines the basic properties of categorical pullbacks.

Given a pair of functors (F : A ⥤ B, G : C ⥤ B), we define the category CategoricalPullback F G as the category of triples (a : A, c : C, e : F.obj a ≅ G.obj b).

The category CategoricalPullback F G sits in a canonical CatCommSq, and we formalize that this square is a "limit" in the following sense: functors X ⥤ CategoricalPullback F G are equivalent to pairs of functors (L : X ⥤ A, R : X ⥤ C) equipped with a natural isomorphism L ⋙ F ≅ R ⋙ G.

We formalize this by introducing a category CatCommSqOver F G X that encodes exactly this data, and we prove that the category of functors X ⥤ CategoricalPullback F G is equivalent to CatCommSqOver F G X.

Main declarations #

References #

TODOs: #

structure CategoryTheory.Limits.CategoricalPullback {A : Type u₁} {B : Type u₂} {C : Type u₃} [Category.{v₁, u₁} A] [Category.{v₂, u₂} B] [Category.{v₃, u₃} C] (F : Functor A B) (G : Functor C B) :
Type (max (max u₁ u₃) v₂)

The CategoricalPullback F G is the category of triples (a : A, c : C, F a ≅ G c). Morphisms (a, c, e) ⟶ (a', c', e') are pairs of morphisms (f₁ : a ⟶ a', f₂ : c ⟶ c') compatible with the specified isomorphisms.

  • fst : A

    the first component element

  • snd : C

    the second component element

  • iso : F.obj self.fst G.obj self.snd

    the structural isomorphism F.obj fst ≅ G.obj snd

Instances For

    A notation for the categorical pullback.

    Equations
    • One or more equations did not get rendered due to their size.
    Instances For
      structure CategoryTheory.Limits.CategoricalPullback.Hom {A : Type u₁} {B : Type u₂} {C : Type u₃} [Category.{v₁, u₁} A] [Category.{v₂, u₂} B] [Category.{v₃, u₃} C] {F : Functor A B} {G : Functor C B} (x y : CategoricalPullback F G) :
      Type (max v₁ v₃)

      The Hom types for the categorical pullback are given by pairs of maps compatible with the structural isomorphisms.

      Instances For
        theorem CategoryTheory.Limits.CategoricalPullback.Hom.ext_iff {A : Type u₁} {B : Type u₂} {C : Type u₃} {inst✝ : Category.{v₁, u₁} A} {inst✝¹ : Category.{v₂, u₂} B} {inst✝² : Category.{v₃, u₃} C} {F : Functor A B} {G : Functor C B} {x y : CategoricalPullback F G} {x✝ y✝ : x.Hom y} :
        x✝ = y✝ x✝.fst = y✝.fst x✝.snd = y✝.snd
        theorem CategoryTheory.Limits.CategoricalPullback.Hom.ext {A : Type u₁} {B : Type u₂} {C : Type u₃} {inst✝ : Category.{v₁, u₁} A} {inst✝¹ : Category.{v₂, u₂} B} {inst✝² : Category.{v₃, u₃} C} {F : Functor A B} {G : Functor C B} {x y : CategoricalPullback F G} {x✝ y✝ : x.Hom y} (fst : x✝.fst = y✝.fst) (snd : x✝.snd = y✝.snd) :
        x✝ = y✝
        Equations
        • One or more equations did not get rendered due to their size.
        @[simp]
        theorem CategoryTheory.Limits.CategoricalPullback.comp_fst {A : Type u₁} {B : Type u₂} {C : Type u₃} [Category.{v₁, u₁} A] [Category.{v₂, u₂} B] [Category.{v₃, u₃} C] {F : Functor A B} {G : Functor C B} {X✝ Y✝ Z✝ : CategoricalPullback F G} (f : X✝.Hom Y✝) (g : Y✝.Hom Z✝) :
        @[simp]
        theorem CategoryTheory.Limits.CategoricalPullback.comp_snd {A : Type u₁} {B : Type u₂} {C : Type u₃} [Category.{v₁, u₁} A] [Category.{v₂, u₂} B] [Category.{v₃, u₃} C] {F : Functor A B} {G : Functor C B} {X✝ Y✝ Z✝ : CategoricalPullback F G} (f : X✝.Hom Y✝) (g : Y✝.Hom Z✝) :
        theorem CategoryTheory.Limits.CategoricalPullback.comp_snd_assoc {A : Type u₁} {B : Type u₂} {C : Type u₃} [Category.{v₁, u₁} A] [Category.{v₂, u₂} B] [Category.{v₃, u₃} C] {F : Functor A B} {G : Functor C B} {X✝ Y✝ Z✝ : CategoricalPullback F G} (f : X✝.Hom Y✝) (g : Y✝.Hom Z✝) {Z : C} (h : Z✝.snd Z) :
        theorem CategoryTheory.Limits.CategoricalPullback.comp_fst_assoc {A : Type u₁} {B : Type u₂} {C : Type u₃} [Category.{v₁, u₁} A] [Category.{v₂, u₂} B] [Category.{v₃, u₃} C] {F : Functor A B} {G : Functor C B} {X✝ Y✝ Z✝ : CategoricalPullback F G} (f : X✝.Hom Y✝) (g : Y✝.Hom Z✝) {Z : A} (h : Z✝.fst Z) :
        @[simp]

        Naturality square for morphisms in the inverse direction.

        theorem CategoryTheory.Limits.CategoricalPullback.hom_ext {A : Type u₁} {B : Type u₂} {C : Type u₃} [Category.{v₁, u₁} A] [Category.{v₂, u₂} B] [Category.{v₃, u₃} C] {F : Functor A B} {G : Functor C B} {x y : CategoricalPullback F G} {f g : x y} (hₗ : f.fst = g.fst) (hᵣ : f.snd = g.snd) :
        f = g

        Extensionnality principle for morphisms in CategoricalPullback F G.

        theorem CategoryTheory.Limits.CategoricalPullback.hom_ext_iff {A : Type u₁} {B : Type u₂} {C : Type u₃} [Category.{v₁, u₁} A] [Category.{v₂, u₂} B] [Category.{v₃, u₃} C] {F : Functor A B} {G : Functor C B} {x y : CategoricalPullback F G} {f g : x y} :
        f = g f.fst = g.fst f.snd = g.snd

        CategoricalPullback.π₁ F G is the first projection CategoricalPullback F G ⥤ A.

        Equations
        • One or more equations did not get rendered due to their size.
        Instances For
          @[simp]
          theorem CategoryTheory.Limits.CategoricalPullback.π₁_map {A : Type u₁} {B : Type u₂} {C : Type u₃} [Category.{v₁, u₁} A] [Category.{v₂, u₂} B] [Category.{v₃, u₃} C] (F : Functor A B) (G : Functor C B) {X✝ Y✝ : CategoricalPullback F G} (f : X✝ Y✝) :
          (π₁ F G).map f = f.fst

          CategoricalPullback.π₂ F G is the second projection CategoricalPullback F G ⥤ C.

          Equations
          • One or more equations did not get rendered due to their size.
          Instances For
            @[simp]
            theorem CategoryTheory.Limits.CategoricalPullback.π₂_map {A : Type u₁} {B : Type u₂} {C : Type u₃} [Category.{v₁, u₁} A] [Category.{v₂, u₂} B] [Category.{v₃, u₃} C] (F : Functor A B) (G : Functor C B) {X✝ Y✝ : CategoricalPullback F G} (f : X✝ Y✝) :
            (π₂ F G).map f = f.snd

            The canonical categorical commutative square in which CategoricalPullback F G sits.

            Equations
            def CategoryTheory.Limits.CategoricalPullback.mkIso {A : Type u₁} {B : Type u₂} {C : Type u₃} [Category.{v₁, u₁} A] [Category.{v₂, u₂} B] [Category.{v₃, u₃} C] {F : Functor A B} {G : Functor C B} {x y : CategoricalPullback F G} (eₗ : x.fst y.fst) (eᵣ : x.snd y.snd) (w : CategoryStruct.comp (F.map eₗ.hom) y.iso.hom = CategoryStruct.comp x.iso.hom (G.map eᵣ.hom) := by cat_disch) :
            x y

            Constructor for isomorphisms in CategoricalPullback F G.

            Equations
            Instances For
              @[simp]
              theorem CategoryTheory.Limits.CategoricalPullback.mkIso_inv_snd {A : Type u₁} {B : Type u₂} {C : Type u₃} [Category.{v₁, u₁} A] [Category.{v₂, u₂} B] [Category.{v₃, u₃} C] {F : Functor A B} {G : Functor C B} {x y : CategoricalPullback F G} (eₗ : x.fst y.fst) (eᵣ : x.snd y.snd) (w : CategoryStruct.comp (F.map eₗ.hom) y.iso.hom = CategoryStruct.comp x.iso.hom (G.map eᵣ.hom) := by cat_disch) :
              (mkIso eₗ eᵣ w).inv.snd = eᵣ.inv
              @[simp]
              theorem CategoryTheory.Limits.CategoricalPullback.mkIso_hom_fst {A : Type u₁} {B : Type u₂} {C : Type u₃} [Category.{v₁, u₁} A] [Category.{v₂, u₂} B] [Category.{v₃, u₃} C] {F : Functor A B} {G : Functor C B} {x y : CategoricalPullback F G} (eₗ : x.fst y.fst) (eᵣ : x.snd y.snd) (w : CategoryStruct.comp (F.map eₗ.hom) y.iso.hom = CategoryStruct.comp x.iso.hom (G.map eᵣ.hom) := by cat_disch) :
              (mkIso eₗ eᵣ w).hom.fst = eₗ.hom
              @[simp]
              theorem CategoryTheory.Limits.CategoricalPullback.mkIso_hom_snd {A : Type u₁} {B : Type u₂} {C : Type u₃} [Category.{v₁, u₁} A] [Category.{v₂, u₂} B] [Category.{v₃, u₃} C] {F : Functor A B} {G : Functor C B} {x y : CategoricalPullback F G} (eₗ : x.fst y.fst) (eᵣ : x.snd y.snd) (w : CategoryStruct.comp (F.map eₗ.hom) y.iso.hom = CategoryStruct.comp x.iso.hom (G.map eᵣ.hom) := by cat_disch) :
              (mkIso eₗ eᵣ w).hom.snd = eᵣ.hom
              @[simp]
              theorem CategoryTheory.Limits.CategoricalPullback.mkIso_inv_fst {A : Type u₁} {B : Type u₂} {C : Type u₃} [Category.{v₁, u₁} A] [Category.{v₂, u₂} B] [Category.{v₃, u₃} C] {F : Functor A B} {G : Functor C B} {x y : CategoricalPullback F G} (eₗ : x.fst y.fst) (eᵣ : x.snd y.snd) (w : CategoryStruct.comp (F.map eₗ.hom) y.iso.hom = CategoryStruct.comp x.iso.hom (G.map eᵣ.hom) := by cat_disch) :
              (mkIso eₗ eᵣ w).inv.fst = eₗ.inv
              @[simp]
              theorem CategoryTheory.Limits.CategoricalPullback.inv_fst {A : Type u₁} {B : Type u₂} {C : Type u₃} [Category.{v₁, u₁} A] [Category.{v₂, u₂} B] [Category.{v₃, u₃} C] (F : Functor A B) (G : Functor C B) {x y : CategoricalPullback F G} (f : x y) [IsIso f] :
              (inv f).fst = inv f.fst
              @[simp]
              theorem CategoryTheory.Limits.CategoricalPullback.inv_snd {A : Type u₁} {B : Type u₂} {C : Type u₃} [Category.{v₁, u₁} A] [Category.{v₂, u₂} B] [Category.{v₃, u₃} C] (F : Functor A B) (G : Functor C B) {x y : CategoricalPullback F G} (f : x y) [IsIso f] :
              (inv f).snd = inv f.snd
              @[reducible, inline]
              abbrev CategoryTheory.Limits.CategoricalPullback.CatCommSqOver {A : Type u₁} {B : Type u₂} {C : Type u₃} [Category.{v₁, u₁} A] [Category.{v₂, u₂} B] [Category.{v₃, u₃} C] (F : Functor A B) (G : Functor C B) (X : Type u₄) [Category.{v₄, u₄} X] :
              Type (max (max (max (max (max u₁ u₄) v₁) v₄) (max (max u₃ u₄) v₃) v₄) u₄ v₂)

              The data of a categorical commutative square over a cospan F, G with cone point X is that of a functor T : X ⥤ A, a functor L : X ⥤ C, and a CatCommSqOver T L F G. Note that this is exactly what an object of ((whiskeringRight X A B).obj F) ⊡ ((whiskeringRight X C B).obj G) is, so CatCommSqOver F G X is in fact an abbreviation for ((whiskeringRight X A B).obj F) ⊡ ((whiskeringRight X C B).obj G).

              Equations
              • One or more equations did not get rendered due to their size.
              Instances For
                @[simp]
                @[simp]
                theorem CategoryTheory.Limits.CategoricalPullback.CatCommSqOver.w_app {A : Type u₁} {B : Type u₂} {C : Type u₃} [Category.{v₁, u₁} A] [Category.{v₂, u₂} B] [Category.{v₃, u₃} C] {F : Functor A B} {G : Functor C B} (X : Type u₄) [Category.{v₄, u₄} X] {S S' : CatCommSqOver F G X} (φ : S S') (x : X) :
                @[simp]
                theorem CategoryTheory.Limits.CategoricalPullback.CatCommSqOver.w_app_assoc {A : Type u₁} {B : Type u₂} {C : Type u₃} [Category.{v₁, u₁} A] [Category.{v₂, u₂} B] [Category.{v₃, u₃} C] {F : Functor A B} {G : Functor C B} (X : Type u₄) [Category.{v₄, u₄} X] {S S' : CatCommSqOver F G X} (φ : S S') (x : X) {Z : B} (h : (((Functor.whiskeringRight X C B).obj G).obj S'.snd).obj x Z) :
                @[reducible, inline]

                The "first projection" of a CatCommSqOver as a functor.

                Equations
                • One or more equations did not get rendered due to their size.
                Instances For
                  @[reducible, inline]

                  The "second projection" of a CatCommSqOver as a functor.

                  Equations
                  • One or more equations did not get rendered due to their size.
                  Instances For
                    @[reducible, inline]

                    The structure isomorphism of a CatCommSqOver as a natural transformation.

                    Equations
                    Instances For

                      Interpret a functor to the categorical pullback as a CatCommSqOver.

                      Equations
                      • One or more equations did not get rendered due to their size.
                      Instances For
                        @[simp]
                        @[simp]
                        theorem CategoryTheory.Limits.CategoricalPullback.toCatCommSqOver_obj_snd_map {A : Type u₁} {B : Type u₂} {C : Type u₃} [Category.{v₁, u₁} A] [Category.{v₂, u₂} B] [Category.{v₃, u₃} C] (F : Functor A B) (G : Functor C B) (X : Type u₄) [Category.{v₄, u₄} X] (J : Functor X (CategoricalPullback F G)) {X✝ Y✝ : X} (f : X✝ Y✝) :
                        ((toCatCommSqOver F G X).obj J).snd.map f = (J.map f).snd
                        @[simp]
                        @[simp]
                        theorem CategoryTheory.Limits.CategoricalPullback.toCatCommSqOver_obj_fst_map {A : Type u₁} {B : Type u₂} {C : Type u₃} [Category.{v₁, u₁} A] [Category.{v₂, u₂} B] [Category.{v₃, u₃} C] (F : Functor A B) (G : Functor C B) (X : Type u₄) [Category.{v₄, u₄} X] (J : Functor X (CategoricalPullback F G)) {X✝ Y✝ : X} (f : X✝ Y✝) :
                        ((toCatCommSqOver F G X).obj J).fst.map f = (J.map f).fst
                        @[simp]
                        theorem CategoryTheory.Limits.CategoricalPullback.toCatCommSqOver_map_snd_app {A : Type u₁} {B : Type u₂} {C : Type u₃} [Category.{v₁, u₁} A] [Category.{v₂, u₂} B] [Category.{v₃, u₃} C] (F : Functor A B) (G : Functor C B) (X : Type u₄) [Category.{v₄, u₄} X] {J J' : Functor X (CategoricalPullback F G)} (F✝ : J J') (X✝ : X) :
                        ((toCatCommSqOver F G X).map F✝).snd.app X✝ = (F✝.app X✝).snd
                        @[simp]
                        theorem CategoryTheory.Limits.CategoricalPullback.toCatCommSqOver_map_fst_app {A : Type u₁} {B : Type u₂} {C : Type u₃} [Category.{v₁, u₁} A] [Category.{v₂, u₂} B] [Category.{v₃, u₃} C] (F : Functor A B) (G : Functor C B) (X : Type u₄) [Category.{v₄, u₄} X] {J J' : Functor X (CategoricalPullback F G)} (F✝ : J J') (X✝ : X) :
                        ((toCatCommSqOver F G X).map F✝).fst.app X✝ = (F✝.app X✝).fst

                        Interpret a CatCommSqOver as a functor to the categorical pullback.

                        Equations
                        • One or more equations did not get rendered due to their size.
                        Instances For

                          The universal property of categorical pullbacks, stated as an equivalence of categories between functors X ⥤ (F ⊡ G) and categorical commutative squares over X.

                          Equations
                          • One or more equations did not get rendered due to their size.
                          Instances For

                            A constructor for natural isomorphisms of functors X ⥤ CategoricalPullback: to construct such an isomorphism, it suffices to produce isomorphisms after whiskering with the projections, and compatible with the canonical 2-commutative square .

                            Equations
                            Instances For
                              @[simp]
                              theorem CategoryTheory.Limits.CategoricalPullback.mkNatIso_hom_app_snd {A : Type u₁} {B : Type u₂} {C : Type u₃} [Category.{v₁, u₁} A] [Category.{v₂, u₂} B] [Category.{v₃, u₃} C] {F : Functor A B} {G : Functor C B} {X : Type u₄} [Category.{v₄, u₄} X] {J K : Functor X (CategoricalPullback F G)} (e₁ : J.comp (π₁ F G) K.comp (π₁ F G)) (e₂ : J.comp (π₂ F G) K.comp (π₂ F G)) (coh : CategoryStruct.comp (Functor.whiskerRight e₁.hom F) (CategoryStruct.comp (K.associator (π₁ F G) F).hom (CategoryStruct.comp (K.whiskerLeft (CatCommSq.iso (π₁ F G) (π₂ F G) F G).hom) (K.associator (π₂ F G) G).inv)) = CategoryStruct.comp (J.associator (π₁ F G) F).hom (CategoryStruct.comp (J.whiskerLeft (CatCommSq.iso (π₁ F G) (π₂ F G) F G).hom) (CategoryStruct.comp (J.associator (π₂ F G) G).inv (Functor.whiskerRight e₂.hom G))) := by cat_disch) (X✝ : X) :
                              ((mkNatIso e₁ e₂ coh).hom.app X✝).snd = e₂.hom.app X✝
                              @[simp]
                              theorem CategoryTheory.Limits.CategoricalPullback.mkNatIso_inv_app_fst {A : Type u₁} {B : Type u₂} {C : Type u₃} [Category.{v₁, u₁} A] [Category.{v₂, u₂} B] [Category.{v₃, u₃} C] {F : Functor A B} {G : Functor C B} {X : Type u₄} [Category.{v₄, u₄} X] {J K : Functor X (CategoricalPullback F G)} (e₁ : J.comp (π₁ F G) K.comp (π₁ F G)) (e₂ : J.comp (π₂ F G) K.comp (π₂ F G)) (coh : CategoryStruct.comp (Functor.whiskerRight e₁.hom F) (CategoryStruct.comp (K.associator (π₁ F G) F).hom (CategoryStruct.comp (K.whiskerLeft (CatCommSq.iso (π₁ F G) (π₂ F G) F G).hom) (K.associator (π₂ F G) G).inv)) = CategoryStruct.comp (J.associator (π₁ F G) F).hom (CategoryStruct.comp (J.whiskerLeft (CatCommSq.iso (π₁ F G) (π₂ F G) F G).hom) (CategoryStruct.comp (J.associator (π₂ F G) G).inv (Functor.whiskerRight e₂.hom G))) := by cat_disch) (X✝ : X) :
                              ((mkNatIso e₁ e₂ coh).inv.app X✝).fst = e₁.inv.app X✝
                              @[simp]
                              theorem CategoryTheory.Limits.CategoricalPullback.mkNatIso_inv_app_snd {A : Type u₁} {B : Type u₂} {C : Type u₃} [Category.{v₁, u₁} A] [Category.{v₂, u₂} B] [Category.{v₃, u₃} C] {F : Functor A B} {G : Functor C B} {X : Type u₄} [Category.{v₄, u₄} X] {J K : Functor X (CategoricalPullback F G)} (e₁ : J.comp (π₁ F G) K.comp (π₁ F G)) (e₂ : J.comp (π₂ F G) K.comp (π₂ F G)) (coh : CategoryStruct.comp (Functor.whiskerRight e₁.hom F) (CategoryStruct.comp (K.associator (π₁ F G) F).hom (CategoryStruct.comp (K.whiskerLeft (CatCommSq.iso (π₁ F G) (π₂ F G) F G).hom) (K.associator (π₂ F G) G).inv)) = CategoryStruct.comp (J.associator (π₁ F G) F).hom (CategoryStruct.comp (J.whiskerLeft (CatCommSq.iso (π₁ F G) (π₂ F G) F G).hom) (CategoryStruct.comp (J.associator (π₂ F G) G).inv (Functor.whiskerRight e₂.hom G))) := by cat_disch) (X✝ : X) :
                              ((mkNatIso e₁ e₂ coh).inv.app X✝).snd = e₂.inv.app X✝
                              @[simp]
                              theorem CategoryTheory.Limits.CategoricalPullback.mkNatIso_hom_app_fst {A : Type u₁} {B : Type u₂} {C : Type u₃} [Category.{v₁, u₁} A] [Category.{v₂, u₂} B] [Category.{v₃, u₃} C] {F : Functor A B} {G : Functor C B} {X : Type u₄} [Category.{v₄, u₄} X] {J K : Functor X (CategoricalPullback F G)} (e₁ : J.comp (π₁ F G) K.comp (π₁ F G)) (e₂ : J.comp (π₂ F G) K.comp (π₂ F G)) (coh : CategoryStruct.comp (Functor.whiskerRight e₁.hom F) (CategoryStruct.comp (K.associator (π₁ F G) F).hom (CategoryStruct.comp (K.whiskerLeft (CatCommSq.iso (π₁ F G) (π₂ F G) F G).hom) (K.associator (π₂ F G) G).inv)) = CategoryStruct.comp (J.associator (π₁ F G) F).hom (CategoryStruct.comp (J.whiskerLeft (CatCommSq.iso (π₁ F G) (π₂ F G) F G).hom) (CategoryStruct.comp (J.associator (π₂ F G) G).inv (Functor.whiskerRight e₂.hom G))) := by cat_disch) (X✝ : X) :
                              ((mkNatIso e₁ e₂ coh).hom.app X✝).fst = e₁.hom.app X✝
                              theorem CategoryTheory.Limits.CategoricalPullback.natTrans_ext {A : Type u₁} {B : Type u₂} {C : Type u₃} [Category.{v₁, u₁} A] [Category.{v₂, u₂} B] [Category.{v₃, u₃} C] {F : Functor A B} {G : Functor C B} {X : Type u₄} [Category.{v₄, u₄} X] {J K : Functor X (CategoricalPullback F G)} {α β : J K} (e₁ : Functor.whiskerRight α (π₁ F G) = Functor.whiskerRight β (π₁ F G)) (e₂ : Functor.whiskerRight α (π₂ F G) = Functor.whiskerRight β (π₂ F G)) :
                              α = β

                              To check equality of two natural transformations of functors to a CategoricalPullback, it suffices to do so after whiskering with the projections.

                              Comparing mkNatIso with the corresponding construction one can deduce from functorEquiv.

                              def CategoryTheory.Limits.CategoricalPullback.CatCommSqOver.transform {A : Type u₁} {B : Type u₂} {C : Type u₃} [Category.{v₁, u₁} A] [Category.{v₂, u₂} B] [Category.{v₃, u₃} C] {F : Functor A B} {G : Functor C B} {A₁ : Type u₄} {B₁ : Type u₅} {C₁ : Type u₆} [Category.{v₄, u₄} A₁] [Category.{v₅, u₅} B₁] [Category.{v₆, u₆} C₁] {F₁ : Functor A₁ B₁} {G₁ : Functor C₁ B₁} (X : Type u₇) [Category.{v₇, u₇} X] :
                              Functor (CatCospanTransform F G F₁ G₁) (Functor (CatCommSqOver F G X) (CatCommSqOver F₁ G₁ X))

                              Functorially transform a CatCommSqOver F G X by whiskering it with a CatCospanTransform.

                              Equations
                              • One or more equations did not get rendered due to their size.
                              Instances For
                                @[simp]
                                theorem CategoryTheory.Limits.CategoricalPullback.CatCommSqOver.transform_obj_obj_iso {A : Type u₁} {B : Type u₂} {C : Type u₃} [Category.{v₁, u₁} A] [Category.{v₂, u₂} B] [Category.{v₃, u₃} C] {F : Functor A B} {G : Functor C B} {A₁ : Type u₄} {B₁ : Type u₅} {C₁ : Type u₆} [Category.{v₄, u₄} A₁] [Category.{v₅, u₅} B₁] [Category.{v₆, u₆} C₁] {F₁ : Functor A₁ B₁} {G₁ : Functor C₁ B₁} (X : Type u₇) [Category.{v₇, u₇} X] (ψ : CatCospanTransform F G F₁ G₁) (S : CatCommSqOver F G X) :
                                @[simp]
                                theorem CategoryTheory.Limits.CategoricalPullback.CatCommSqOver.transform_map_app_fst_app {A : Type u₁} {B : Type u₂} {C : Type u₃} [Category.{v₁, u₁} A] [Category.{v₂, u₂} B] [Category.{v₃, u₃} C] {F : Functor A B} {G : Functor C B} {A₁ : Type u₄} {B₁ : Type u₅} {C₁ : Type u₆} [Category.{v₄, u₄} A₁] [Category.{v₅, u₅} B₁] [Category.{v₆, u₆} C₁] {F₁ : Functor A₁ B₁} {G₁ : Functor C₁ B₁} (X : Type u₇) [Category.{v₇, u₇} X] {ψ ψ' : CatCospanTransform F G F₁ G₁} (η : ψ ψ') (S : CatCommSqOver F G X) (y : X) :
                                (((transform X).map η).app S).fst.app y = η.left.app (S.fst.obj y)
                                @[simp]
                                theorem CategoryTheory.Limits.CategoricalPullback.CatCommSqOver.transform_map_app_snd_app {A : Type u₁} {B : Type u₂} {C : Type u₃} [Category.{v₁, u₁} A] [Category.{v₂, u₂} B] [Category.{v₃, u₃} C] {F : Functor A B} {G : Functor C B} {A₁ : Type u₄} {B₁ : Type u₅} {C₁ : Type u₆} [Category.{v₄, u₄} A₁] [Category.{v₅, u₅} B₁] [Category.{v₆, u₆} C₁] {F₁ : Functor A₁ B₁} {G₁ : Functor C₁ B₁} (X : Type u₇) [Category.{v₇, u₇} X] {ψ ψ' : CatCospanTransform F G F₁ G₁} (η : ψ ψ') (S : CatCommSqOver F G X) (y : X) :
                                (((transform X).map η).app S).snd.app y = η.right.app (S.snd.obj y)
                                @[simp]
                                theorem CategoryTheory.Limits.CategoricalPullback.CatCommSqOver.transform_obj_map_fst {A : Type u₁} {B : Type u₂} {C : Type u₃} [Category.{v₁, u₁} A] [Category.{v₂, u₂} B] [Category.{v₃, u₃} C] {F : Functor A B} {G : Functor C B} {A₁ : Type u₄} {B₁ : Type u₅} {C₁ : Type u₆} [Category.{v₄, u₄} A₁] [Category.{v₅, u₅} B₁] [Category.{v₆, u₆} C₁] {F₁ : Functor A₁ B₁} {G₁ : Functor C₁ B₁} (X : Type u₇) [Category.{v₇, u₇} X] (ψ : CatCospanTransform F G F₁ G₁) {x y : CatCommSqOver F G X} (f : x y) :
                                @[simp]
                                theorem CategoryTheory.Limits.CategoricalPullback.CatCommSqOver.transform_obj_map_snd {A : Type u₁} {B : Type u₂} {C : Type u₃} [Category.{v₁, u₁} A] [Category.{v₂, u₂} B] [Category.{v₃, u₃} C] {F : Functor A B} {G : Functor C B} {A₁ : Type u₄} {B₁ : Type u₅} {C₁ : Type u₆} [Category.{v₄, u₄} A₁] [Category.{v₅, u₅} B₁] [Category.{v₆, u₆} C₁] {F₁ : Functor A₁ B₁} {G₁ : Functor C₁ B₁} (X : Type u₇) [Category.{v₇, u₇} X] (ψ : CatCospanTransform F G F₁ G₁) {x y : CatCommSqOver F G X} (f : x y) :
                                @[simp]
                                theorem CategoryTheory.Limits.CategoricalPullback.CatCommSqOver.transform_obj_obj_snd {A : Type u₁} {B : Type u₂} {C : Type u₃} [Category.{v₁, u₁} A] [Category.{v₂, u₂} B] [Category.{v₃, u₃} C] {F : Functor A B} {G : Functor C B} {A₁ : Type u₄} {B₁ : Type u₅} {C₁ : Type u₆} [Category.{v₄, u₄} A₁] [Category.{v₅, u₅} B₁] [Category.{v₆, u₆} C₁] {F₁ : Functor A₁ B₁} {G₁ : Functor C₁ B₁} (X : Type u₇) [Category.{v₇, u₇} X] (ψ : CatCospanTransform F G F₁ G₁) (S : CatCommSqOver F G X) :
                                (((transform X).obj ψ).obj S).snd = S.snd.comp ψ.right
                                @[simp]
                                theorem CategoryTheory.Limits.CategoricalPullback.CatCommSqOver.transform_obj_obj_fst {A : Type u₁} {B : Type u₂} {C : Type u₃} [Category.{v₁, u₁} A] [Category.{v₂, u₂} B] [Category.{v₃, u₃} C] {F : Functor A B} {G : Functor C B} {A₁ : Type u₄} {B₁ : Type u₅} {C₁ : Type u₆} [Category.{v₄, u₄} A₁] [Category.{v₅, u₅} B₁] [Category.{v₆, u₆} C₁] {F₁ : Functor A₁ B₁} {G₁ : Functor C₁ B₁} (X : Type u₇) [Category.{v₇, u₇} X] (ψ : CatCospanTransform F G F₁ G₁) (S : CatCommSqOver F G X) :
                                (((transform X).obj ψ).obj S).fst = S.fst.comp ψ.left
                                def CategoryTheory.Limits.CategoricalPullback.CatCommSqOver.transformObjComp {A : Type u₁} {B : Type u₂} {C : Type u₃} [Category.{v₁, u₁} A] [Category.{v₂, u₂} B] [Category.{v₃, u₃} C] {F : Functor A B} {G : Functor C B} {A₁ : Type u₄} {B₁ : Type u₅} {C₁ : Type u₆} [Category.{v₄, u₄} A₁] [Category.{v₅, u₅} B₁] [Category.{v₆, u₆} C₁] {F₁ : Functor A₁ B₁} {G₁ : Functor C₁ B₁} {A₂ : Type u₇} {B₂ : Type u₈} {C₂ : Type u₉} [Category.{v₇, u₇} A₂] [Category.{v₈, u₈} B₂] [Category.{v₉, u₉} C₂] {F₂ : Functor A₂ B₂} {G₂ : Functor C₂ B₂} (X : Type u₁₀) [Category.{v₁₀, u₁₀} X] (ψ : CatCospanTransform F G F₁ G₁) (ψ' : CatCospanTransform F₁ G₁ F₂ G₂) :
                                (transform X).obj (ψ.comp ψ') ((transform X).obj ψ).comp ((transform X).obj ψ')

                                The construction CatCommSqOver.transform respects vertical composition of CatCospanTransforms.

                                Equations
                                • One or more equations did not get rendered due to their size.
                                Instances For
                                  @[simp]
                                  theorem CategoryTheory.Limits.CategoricalPullback.CatCommSqOver.transformObjComp_hom_app_snd_app {A : Type u₁} {B : Type u₂} {C : Type u₃} [Category.{v₁, u₁} A] [Category.{v₂, u₂} B] [Category.{v₃, u₃} C] {F : Functor A B} {G : Functor C B} {A₁ : Type u₄} {B₁ : Type u₅} {C₁ : Type u₆} [Category.{v₄, u₄} A₁] [Category.{v₅, u₅} B₁] [Category.{v₆, u₆} C₁] {F₁ : Functor A₁ B₁} {G₁ : Functor C₁ B₁} {A₂ : Type u₇} {B₂ : Type u₈} {C₂ : Type u₉} [Category.{v₇, u₇} A₂] [Category.{v₈, u₈} B₂] [Category.{v₉, u₉} C₂] {F₂ : Functor A₂ B₂} {G₂ : Functor C₂ B₂} (X : Type u₁₀) [Category.{v₁₀, u₁₀} X] (ψ : CatCospanTransform F G F₁ G₁) (ψ' : CatCospanTransform F₁ G₁ F₂ G₂) (X✝ : CatCommSqOver F G X) (x✝ : X) :
                                  ((transformObjComp X ψ ψ').hom.app X✝).snd.app x✝ = CategoryStruct.id (ψ'.right.obj (ψ.right.obj (X✝.snd.obj x✝)))
                                  @[simp]
                                  theorem CategoryTheory.Limits.CategoricalPullback.CatCommSqOver.transformObjComp_hom_app_fst_app {A : Type u₁} {B : Type u₂} {C : Type u₃} [Category.{v₁, u₁} A] [Category.{v₂, u₂} B] [Category.{v₃, u₃} C] {F : Functor A B} {G : Functor C B} {A₁ : Type u₄} {B₁ : Type u₅} {C₁ : Type u₆} [Category.{v₄, u₄} A₁] [Category.{v₅, u₅} B₁] [Category.{v₆, u₆} C₁] {F₁ : Functor A₁ B₁} {G₁ : Functor C₁ B₁} {A₂ : Type u₇} {B₂ : Type u₈} {C₂ : Type u₉} [Category.{v₇, u₇} A₂] [Category.{v₈, u₈} B₂] [Category.{v₉, u₉} C₂] {F₂ : Functor A₂ B₂} {G₂ : Functor C₂ B₂} (X : Type u₁₀) [Category.{v₁₀, u₁₀} X] (ψ : CatCospanTransform F G F₁ G₁) (ψ' : CatCospanTransform F₁ G₁ F₂ G₂) (X✝ : CatCommSqOver F G X) (x✝ : X) :
                                  ((transformObjComp X ψ ψ').hom.app X✝).fst.app x✝ = CategoryStruct.id (ψ'.left.obj (ψ.left.obj (X✝.fst.obj x✝)))
                                  @[simp]
                                  theorem CategoryTheory.Limits.CategoricalPullback.CatCommSqOver.transformObjComp_inv_app_fst_app {A : Type u₁} {B : Type u₂} {C : Type u₃} [Category.{v₁, u₁} A] [Category.{v₂, u₂} B] [Category.{v₃, u₃} C] {F : Functor A B} {G : Functor C B} {A₁ : Type u₄} {B₁ : Type u₅} {C₁ : Type u₆} [Category.{v₄, u₄} A₁] [Category.{v₅, u₅} B₁] [Category.{v₆, u₆} C₁] {F₁ : Functor A₁ B₁} {G₁ : Functor C₁ B₁} {A₂ : Type u₇} {B₂ : Type u₈} {C₂ : Type u₉} [Category.{v₇, u₇} A₂] [Category.{v₈, u₈} B₂] [Category.{v₉, u₉} C₂] {F₂ : Functor A₂ B₂} {G₂ : Functor C₂ B₂} (X : Type u₁₀) [Category.{v₁₀, u₁₀} X] (ψ : CatCospanTransform F G F₁ G₁) (ψ' : CatCospanTransform F₁ G₁ F₂ G₂) (X✝ : CatCommSqOver F G X) (x✝ : X) :
                                  ((transformObjComp X ψ ψ').inv.app X✝).fst.app x✝ = CategoryStruct.id (ψ'.left.obj (ψ.left.obj (X✝.fst.obj x✝)))
                                  @[simp]
                                  theorem CategoryTheory.Limits.CategoricalPullback.CatCommSqOver.transformObjComp_inv_app_snd_app {A : Type u₁} {B : Type u₂} {C : Type u₃} [Category.{v₁, u₁} A] [Category.{v₂, u₂} B] [Category.{v₃, u₃} C] {F : Functor A B} {G : Functor C B} {A₁ : Type u₄} {B₁ : Type u₅} {C₁ : Type u₆} [Category.{v₄, u₄} A₁] [Category.{v₅, u₅} B₁] [Category.{v₆, u₆} C₁] {F₁ : Functor A₁ B₁} {G₁ : Functor C₁ B₁} {A₂ : Type u₇} {B₂ : Type u₈} {C₂ : Type u₉} [Category.{v₇, u₇} A₂] [Category.{v₈, u₈} B₂] [Category.{v₉, u₉} C₂] {F₂ : Functor A₂ B₂} {G₂ : Functor C₂ B₂} (X : Type u₁₀) [Category.{v₁₀, u₁₀} X] (ψ : CatCospanTransform F G F₁ G₁) (ψ' : CatCospanTransform F₁ G₁ F₂ G₂) (X✝ : CatCommSqOver F G X) (x✝ : X) :
                                  ((transformObjComp X ψ ψ').inv.app X✝).snd.app x✝ = CategoryStruct.id (ψ'.right.obj (ψ.right.obj (X✝.snd.obj x✝)))

                                  The construction CatCommSqOver.transform respects the identity CatCospanTransforms.

                                  Equations
                                  • One or more equations did not get rendered due to their size.
                                  Instances For
                                    @[simp]
                                    @[simp]
                                    @[simp]
                                    @[simp]
                                    theorem CategoryTheory.Limits.CategoricalPullback.CatCommSqOver.transform_map_whiskerLeft {A : Type u₁} {B : Type u₂} {C : Type u₃} [Category.{v₁, u₁} A] [Category.{v₂, u₂} B] [Category.{v₃, u₃} C] {F : Functor A B} {G : Functor C B} {A₁ : Type u₄} {B₁ : Type u₅} {C₁ : Type u₆} [Category.{v₄, u₄} A₁] [Category.{v₅, u₅} B₁] [Category.{v₆, u₆} C₁] {F₁ : Functor A₁ B₁} {G₁ : Functor C₁ B₁} {A₂ : Type u₇} {B₂ : Type u₈} {C₂ : Type u₉} [Category.{v₇, u₇} A₂] [Category.{v₈, u₈} B₂] [Category.{v₉, u₉} C₂] {F₂ : Functor A₂ B₂} {G₂ : Functor C₂ B₂} (X : Type u₇) [Category.{v₇, u₇} X] (ψ : CatCospanTransform F G F₁ G₁) {φ φ' : CatCospanTransform F₁ G₁ F₂ G₂} (α : φ φ') :
                                    theorem CategoryTheory.Limits.CategoricalPullback.CatCommSqOver.transform_map_whiskerRight {A : Type u₁} {B : Type u₂} {C : Type u₃} [Category.{v₁, u₁} A] [Category.{v₂, u₂} B] [Category.{v₃, u₃} C] {F : Functor A B} {G : Functor C B} {A₁ : Type u₄} {B₁ : Type u₅} {C₁ : Type u₆} [Category.{v₄, u₄} A₁] [Category.{v₅, u₅} B₁] [Category.{v₆, u₆} C₁] {F₁ : Functor A₁ B₁} {G₁ : Functor C₁ B₁} {A₂ : Type u₇} {B₂ : Type u₈} {C₂ : Type u₉} [Category.{v₇, u₇} A₂] [Category.{v₈, u₈} B₂] [Category.{v₉, u₉} C₂] {F₂ : Functor A₂ B₂} {G₂ : Functor C₂ B₂} (X : Type u₇) [Category.{v₇, u₇} X] {ψ ψ' : CatCospanTransform F G F₁ G₁} (α : ψ ψ') (φ : CatCospanTransform F₁ G₁ F₂ G₂) :
                                    theorem CategoryTheory.Limits.CategoricalPullback.CatCommSqOver.transform_map_associator {A : Type u₁} {B : Type u₂} {C : Type u₃} [Category.{v₁, u₁} A] [Category.{v₂, u₂} B] [Category.{v₃, u₃} C] {F : Functor A B} {G : Functor C B} {A₁ : Type u₄} {B₁ : Type u₅} {C₁ : Type u₆} [Category.{v₄, u₄} A₁] [Category.{v₅, u₅} B₁] [Category.{v₆, u₆} C₁] {F₁ : Functor A₁ B₁} {G₁ : Functor C₁ B₁} {A₂ : Type u₇} {B₂ : Type u₈} {C₂ : Type u₉} [Category.{v₇, u₇} A₂] [Category.{v₈, u₈} B₂] [Category.{v₉, u₉} C₂] {F₂ : Functor A₂ B₂} {G₂ : Functor C₂ B₂} {A₃ : Type u₁₀} {B₃ : Type u₁₁} {C₃ : Type u₁₂} [Category.{v₁₀, u₁₀} A₃] [Category.{v₁₁, u₁₁} B₃] [Category.{v₁₂, u₁₂} C₃] {F₃ : Functor A₃ B₃} {G₃ : Functor C₃ B₃} (X : Type u₁₃) [Category.{v₁₃, u₁₃} X] (ψ : CatCospanTransform F G F₁ G₁) (φ : CatCospanTransform F₁ G₁ F₂ G₂) (τ : CatCospanTransform F₂ G₂ F₃ G₃) :

                                    A functor U : X ⥤ Y (functorially) induces a functor CatCommSqOver F G Y ⥤ CatCommSqOver F G X by whiskering left the underlying categorical commutative square by U.

                                    Equations
                                    • One or more equations did not get rendered due to their size.
                                    Instances For
                                      @[simp]
                                      theorem CategoryTheory.Limits.CategoricalPullback.CatCommSqOver.precompose_obj_map_fst {A : Type u₁} {B : Type u₂} {C : Type u₃} [Category.{v₁, u₁} A] [Category.{v₂, u₂} B] [Category.{v₃, u₃} C] (F : Functor A B) (G : Functor C B) {X : Type u₄} {Y : Type u₅} [Category.{v₄, u₄} X] [Category.{v₅, u₅} Y] (U : Functor X Y) {S S' : CatCommSqOver F G Y} (φ : S S') :
                                      (((precompose F G).obj U).map φ).fst = U.whiskerLeft φ.fst
                                      @[simp]
                                      theorem CategoryTheory.Limits.CategoricalPullback.CatCommSqOver.precompose_obj_map_snd {A : Type u₁} {B : Type u₂} {C : Type u₃} [Category.{v₁, u₁} A] [Category.{v₂, u₂} B] [Category.{v₃, u₃} C] (F : Functor A B) (G : Functor C B) {X : Type u₄} {Y : Type u₅} [Category.{v₄, u₄} X] [Category.{v₅, u₅} Y] (U : Functor X Y) {S S' : CatCommSqOver F G Y} (φ : S S') :
                                      (((precompose F G).obj U).map φ).snd = U.whiskerLeft φ.snd

                                      The construction precompose respects functor identities.

                                      Equations
                                      • One or more equations did not get rendered due to their size.
                                      Instances For
                                        @[simp]
                                        @[simp]
                                        @[simp]
                                        @[simp]

                                        The construction precompose respects functor composition.

                                        Equations
                                        • One or more equations did not get rendered due to their size.
                                        Instances For
                                          @[simp]
                                          theorem CategoryTheory.Limits.CategoricalPullback.CatCommSqOver.precomposeObjComp_hom_app_fst_app {A : Type u₁} {B : Type u₂} {C : Type u₃} [Category.{v₁, u₁} A] [Category.{v₂, u₂} B] [Category.{v₃, u₃} C] (F : Functor A B) (G : Functor C B) {X : Type u₄} {Y : Type u₅} {Z : Type u₆} [Category.{v₄, u₄} X] [Category.{v₅, u₅} Y] [Category.{v₆, u₆} Z] (U : Functor X Y) (V : Functor Y Z) (X✝ : CatCommSqOver F G Z) (x✝ : X) :
                                          ((precomposeObjComp F G U V).hom.app X✝).fst.app x✝ = CategoryStruct.id (X✝.fst.obj (V.obj (U.obj x✝)))
                                          @[simp]
                                          theorem CategoryTheory.Limits.CategoricalPullback.CatCommSqOver.precomposeObjComp_hom_app_snd_app {A : Type u₁} {B : Type u₂} {C : Type u₃} [Category.{v₁, u₁} A] [Category.{v₂, u₂} B] [Category.{v₃, u₃} C] (F : Functor A B) (G : Functor C B) {X : Type u₄} {Y : Type u₅} {Z : Type u₆} [Category.{v₄, u₄} X] [Category.{v₅, u₅} Y] [Category.{v₆, u₆} Z] (U : Functor X Y) (V : Functor Y Z) (X✝ : CatCommSqOver F G Z) (x✝ : X) :
                                          ((precomposeObjComp F G U V).hom.app X✝).snd.app x✝ = CategoryStruct.id (X✝.snd.obj (V.obj (U.obj x✝)))
                                          @[simp]
                                          theorem CategoryTheory.Limits.CategoricalPullback.CatCommSqOver.precomposeObjComp_inv_app_snd_app {A : Type u₁} {B : Type u₂} {C : Type u₃} [Category.{v₁, u₁} A] [Category.{v₂, u₂} B] [Category.{v₃, u₃} C] (F : Functor A B) (G : Functor C B) {X : Type u₄} {Y : Type u₅} {Z : Type u₆} [Category.{v₄, u₄} X] [Category.{v₅, u₅} Y] [Category.{v₆, u₆} Z] (U : Functor X Y) (V : Functor Y Z) (X✝ : CatCommSqOver F G Z) (x✝ : X) :
                                          ((precomposeObjComp F G U V).inv.app X✝).snd.app x✝ = CategoryStruct.id (X✝.snd.obj (V.obj (U.obj x✝)))
                                          @[simp]
                                          theorem CategoryTheory.Limits.CategoricalPullback.CatCommSqOver.precomposeObjComp_inv_app_fst_app {A : Type u₁} {B : Type u₂} {C : Type u₃} [Category.{v₁, u₁} A] [Category.{v₂, u₂} B] [Category.{v₃, u₃} C] (F : Functor A B) (G : Functor C B) {X : Type u₄} {Y : Type u₅} {Z : Type u₆} [Category.{v₄, u₄} X] [Category.{v₅, u₅} Y] [Category.{v₆, u₆} Z] (U : Functor X Y) (V : Functor Y Z) (X✝ : CatCommSqOver F G Z) (x✝ : X) :
                                          ((precomposeObjComp F G U V).inv.app X✝).fst.app x✝ = CategoryStruct.id (X✝.fst.obj (V.obj (U.obj x✝)))
                                          instance CategoryTheory.Limits.CategoricalPullback.CatCommSqOver.precomposeObjTransformObjSquare {A : Type u₁} {B : Type u₂} {C : Type u₃} [Category.{v₁, u₁} A] [Category.{v₂, u₂} B] [Category.{v₃, u₃} C] {F : Functor A B} {G : Functor C B} {A₁ : Type u₄} {B₁ : Type u₅} {C₁ : Type u₆} [Category.{v₄, u₄} A₁] [Category.{v₅, u₅} B₁] [Category.{v₆, u₆} C₁] {F₁ : Functor A₁ B₁} {G₁ : Functor C₁ B₁} {X : Type u₇} {Y : Type u₈} [Category.{v₇, u₇} X] [Category.{v₈, u₈} Y] (ψ : CatCospanTransform F G F₁ G₁) (U : Functor X Y) :
                                          CatCommSq ((precompose F G).obj U) ((transform Y).obj ψ) ((transform X).obj ψ) ((precompose F₁ G₁).obj U)

                                          The canonical compatibility square between (the object components of) precompose and transform. This is a "naturality square" if we think as transform _|>.obj _ as the (app component of the) map component of a pseudofunctor from the bicategory of categorical cospans with value in pseudofunctors (its value on the categorical cospan F, G being the pseudofunctor precompose F G|>.obj _).

                                          Equations
                                          • One or more equations did not get rendered due to their size.
                                          @[simp]
                                          theorem CategoryTheory.Limits.CategoricalPullback.CatCommSqOver.precomposeObjTransformObjSquare_iso_hom_app_fst_app {A : Type u₁} {B : Type u₂} {C : Type u₃} [Category.{v₁, u₁} A] [Category.{v₂, u₂} B] [Category.{v₃, u₃} C] {F : Functor A B} {G : Functor C B} {A₁ : Type u₄} {B₁ : Type u₅} {C₁ : Type u₆} [Category.{v₄, u₄} A₁] [Category.{v₅, u₅} B₁] [Category.{v₆, u₆} C₁] {F₁ : Functor A₁ B₁} {G₁ : Functor C₁ B₁} {X : Type u₇} {Y : Type u₈} [Category.{v₇, u₇} X] [Category.{v₈, u₈} Y] (ψ : CatCospanTransform F G F₁ G₁) (U : Functor X Y) (X✝ : CatCommSqOver F G Y) (x✝ : X) :
                                          ((CatCommSq.iso ((precompose F G).obj U) ((transform Y).obj ψ) ((transform X).obj ψ) ((precompose F₁ G₁).obj U)).hom.app X✝).fst.app x✝ = CategoryStruct.id (ψ.left.obj (X✝.fst.obj (U.obj x✝)))
                                          @[simp]
                                          theorem CategoryTheory.Limits.CategoricalPullback.CatCommSqOver.precomposeObjTransformObjSquare_iso_inv_app_snd_app {A : Type u₁} {B : Type u₂} {C : Type u₃} [Category.{v₁, u₁} A] [Category.{v₂, u₂} B] [Category.{v₃, u₃} C] {F : Functor A B} {G : Functor C B} {A₁ : Type u₄} {B₁ : Type u₅} {C₁ : Type u₆} [Category.{v₄, u₄} A₁] [Category.{v₅, u₅} B₁] [Category.{v₆, u₆} C₁] {F₁ : Functor A₁ B₁} {G₁ : Functor C₁ B₁} {X : Type u₇} {Y : Type u₈} [Category.{v₇, u₇} X] [Category.{v₈, u₈} Y] (ψ : CatCospanTransform F G F₁ G₁) (U : Functor X Y) (X✝ : CatCommSqOver F G Y) (x✝ : X) :
                                          ((CatCommSq.iso ((precompose F G).obj U) ((transform Y).obj ψ) ((transform X).obj ψ) ((precompose F₁ G₁).obj U)).inv.app X✝).snd.app x✝ = CategoryStruct.id (ψ.right.obj (X✝.snd.obj (U.obj x✝)))
                                          @[simp]
                                          theorem CategoryTheory.Limits.CategoricalPullback.CatCommSqOver.precomposeObjTransformObjSquare_iso_inv_app_fst_app {A : Type u₁} {B : Type u₂} {C : Type u₃} [Category.{v₁, u₁} A] [Category.{v₂, u₂} B] [Category.{v₃, u₃} C] {F : Functor A B} {G : Functor C B} {A₁ : Type u₄} {B₁ : Type u₅} {C₁ : Type u₆} [Category.{v₄, u₄} A₁] [Category.{v₅, u₅} B₁] [Category.{v₆, u₆} C₁] {F₁ : Functor A₁ B₁} {G₁ : Functor C₁ B₁} {X : Type u₇} {Y : Type u₈} [Category.{v₇, u₇} X] [Category.{v₈, u₈} Y] (ψ : CatCospanTransform F G F₁ G₁) (U : Functor X Y) (X✝ : CatCommSqOver F G Y) (x✝ : X) :
                                          ((CatCommSq.iso ((precompose F G).obj U) ((transform Y).obj ψ) ((transform X).obj ψ) ((precompose F₁ G₁).obj U)).inv.app X✝).fst.app x✝ = CategoryStruct.id (ψ.left.obj (X✝.fst.obj (U.obj x✝)))
                                          @[simp]
                                          theorem CategoryTheory.Limits.CategoricalPullback.CatCommSqOver.precomposeObjTransformObjSquare_iso_hom_app_snd_app {A : Type u₁} {B : Type u₂} {C : Type u₃} [Category.{v₁, u₁} A] [Category.{v₂, u₂} B] [Category.{v₃, u₃} C] {F : Functor A B} {G : Functor C B} {A₁ : Type u₄} {B₁ : Type u₅} {C₁ : Type u₆} [Category.{v₄, u₄} A₁] [Category.{v₅, u₅} B₁] [Category.{v₆, u₆} C₁] {F₁ : Functor A₁ B₁} {G₁ : Functor C₁ B₁} {X : Type u₇} {Y : Type u₈} [Category.{v₇, u₇} X] [Category.{v₈, u₈} Y] (ψ : CatCospanTransform F G F₁ G₁) (U : Functor X Y) (X✝ : CatCommSqOver F G Y) (x✝ : X) :
                                          ((CatCommSq.iso ((precompose F G).obj U) ((transform Y).obj ψ) ((transform X).obj ψ) ((precompose F₁ G₁).obj U)).hom.app X✝).snd.app x✝ = CategoryStruct.id (ψ.right.obj (X✝.snd.obj (U.obj x✝)))
                                          theorem CategoryTheory.Limits.CategoricalPullback.CatCommSqOver.precomposeObjTransformObjSquare_iso_hom_naturality₂ {A : Type u₁} {B : Type u₂} {C : Type u₃} [Category.{v₁, u₁} A] [Category.{v₂, u₂} B] [Category.{v₃, u₃} C] {F : Functor A B} {G : Functor C B} {A₁ : Type u₄} {B₁ : Type u₅} {C₁ : Type u₆} [Category.{v₄, u₄} A₁] [Category.{v₅, u₅} B₁] [Category.{v₆, u₆} C₁] {F₁ : Functor A₁ B₁} {G₁ : Functor C₁ B₁} {X : Type u₇} {Y : Type u₈} [Category.{v₇, u₇} X] [Category.{v₈, u₈} Y] (ψ : CatCospanTransform F G F₁ G₁) {U V : Functor X Y} (α : U V) :
                                          CategoryStruct.comp (Functor.whiskerRight ((precompose F G).map α) ((transform X).obj ψ)) (CatCommSq.iso ((precompose F G).obj V) ((transform Y).obj ψ) ((transform X).obj ψ) ((precompose F₁ G₁).obj V)).hom = CategoryStruct.comp (CatCommSq.iso ((precompose F G).obj U) ((transform Y).obj ψ) ((transform X).obj ψ) ((precompose F₁ G₁).obj U)).hom (((transform Y).obj ψ).whiskerLeft ((precompose F₁ G₁).map α))

                                          The square precomposeObjTransformObjSquare is itself natural.

                                          The square precomposeObjTransformOBjSquare respects identities.

                                          theorem CategoryTheory.Limits.CategoricalPullback.CatCommSqOver.precomposeObjTransformObjSquare_iso_hom_comp {A : Type u₁} {B : Type u₂} {C : Type u₃} [Category.{v₁, u₁} A] [Category.{v₂, u₂} B] [Category.{v₃, u₃} C] {F : Functor A B} {G : Functor C B} {A₁ : Type u₄} {B₁ : Type u₅} {C₁ : Type u₆} [Category.{v₄, u₄} A₁] [Category.{v₅, u₅} B₁] [Category.{v₆, u₆} C₁] {F₁ : Functor A₁ B₁} {G₁ : Functor C₁ B₁} {X : Type u₇} {Y : Type u₈} {Z : Type u₉} [Category.{v₇, u₇} X] [Category.{v₈, u₈} Y] [Category.{v₉, u₉} Z] (ψ : CatCospanTransform F G F₁ G₁) (U : Functor X Y) (V : Functor Y Z) :
                                          CategoryStruct.comp (CatCommSq.iso ((precompose F G).obj (U.comp V)) ((transform Z).obj ψ) ((transform X).obj ψ) ((precompose F₁ G₁).obj (U.comp V))).hom (((transform Z).obj ψ).whiskerLeft (precomposeObjComp F₁ G₁ U V).hom) = CategoryStruct.comp (Functor.whiskerRight (precomposeObjComp F G U V).hom ((transform X).obj ψ)) (CategoryStruct.comp (((precompose F G).obj V).associator ((precompose F G).obj U) ((transform X).obj ψ)).hom (CategoryStruct.comp (((precompose F G).obj V).whiskerLeft (CatCommSq.iso ((precompose F G).obj U) ((transform Y).obj ψ) ((transform X).obj ψ) ((precompose F₁ G₁).obj U)).hom) (CategoryStruct.comp (((precompose F G).obj V).associator ((transform Y).obj ψ) ((precompose F₁ G₁).obj U)).inv (CategoryStruct.comp (Functor.whiskerRight (CatCommSq.iso ((precompose F G).obj V) ((transform Z).obj ψ) ((transform Y).obj ψ) ((precompose F₁ G₁).obj V)).hom ((precompose F₁ G₁).obj U)) (((transform Z).obj ψ).associator ((precompose F₁ G₁).obj V) ((precompose F₁ G₁).obj U)).hom))))

                                          The square precomposeTransformSquare respects compositions.

                                          instance CategoryTheory.Limits.CategoricalPullback.CatCommSqOver.transformObjPrecomposeObjSquare {A : Type u₁} {B : Type u₂} {C : Type u₃} [Category.{v₁, u₁} A] [Category.{v₂, u₂} B] [Category.{v₃, u₃} C] {F : Functor A B} {G : Functor C B} {A₁ : Type u₄} {B₁ : Type u₅} {C₁ : Type u₆} [Category.{v₄, u₄} A₁] [Category.{v₅, u₅} B₁] [Category.{v₆, u₆} C₁] {F₁ : Functor A₁ B₁} {G₁ : Functor C₁ B₁} {X : Type u₇} {Y : Type u₈} [Category.{v₇, u₇} X] [Category.{v₈, u₈} Y] (U : Functor X Y) (ψ : CatCospanTransform F G F₁ G₁) :
                                          CatCommSq ((transform Y).obj ψ) ((precompose F G).obj U) ((precompose F₁ G₁).obj U) ((transform X).obj ψ)

                                          The canonical compatibility square between (the object components of) transform and precompose. This is a "naturality square" if we think as precompose as the (app component of the) map component of a pseudofunctor from the opposite bicategory of categories to pseudofunctors of categorical cospans (its value on X being the pseudofunctor transform X _).

                                          Equations
                                          • One or more equations did not get rendered due to their size.
                                          @[simp]
                                          theorem CategoryTheory.Limits.CategoricalPullback.CatCommSqOver.transformObjPrecomposeObjSquare_iso_inv_app_fst_app {A : Type u₁} {B : Type u₂} {C : Type u₃} [Category.{v₁, u₁} A] [Category.{v₂, u₂} B] [Category.{v₃, u₃} C] {F : Functor A B} {G : Functor C B} {A₁ : Type u₄} {B₁ : Type u₅} {C₁ : Type u₆} [Category.{v₄, u₄} A₁] [Category.{v₅, u₅} B₁] [Category.{v₆, u₆} C₁] {F₁ : Functor A₁ B₁} {G₁ : Functor C₁ B₁} {X : Type u₇} {Y : Type u₈} [Category.{v₇, u₇} X] [Category.{v₈, u₈} Y] (U : Functor X Y) (ψ : CatCospanTransform F G F₁ G₁) (X✝ : CatCommSqOver F G Y) (x✝ : X) :
                                          ((CatCommSq.iso ((transform Y).obj ψ) ((precompose F G).obj U) ((precompose F₁ G₁).obj U) ((transform X).obj ψ)).inv.app X✝).fst.app x✝ = CategoryStruct.id (ψ.left.obj (X✝.fst.obj (U.obj x✝)))
                                          @[simp]
                                          theorem CategoryTheory.Limits.CategoricalPullback.CatCommSqOver.transformObjPrecomposeObjSquare_iso_hom_app_fst_app {A : Type u₁} {B : Type u₂} {C : Type u₃} [Category.{v₁, u₁} A] [Category.{v₂, u₂} B] [Category.{v₃, u₃} C] {F : Functor A B} {G : Functor C B} {A₁ : Type u₄} {B₁ : Type u₅} {C₁ : Type u₆} [Category.{v₄, u₄} A₁] [Category.{v₅, u₅} B₁] [Category.{v₆, u₆} C₁] {F₁ : Functor A₁ B₁} {G₁ : Functor C₁ B₁} {X : Type u₇} {Y : Type u₈} [Category.{v₇, u₇} X] [Category.{v₈, u₈} Y] (U : Functor X Y) (ψ : CatCospanTransform F G F₁ G₁) (X✝ : CatCommSqOver F G Y) (x✝ : X) :
                                          ((CatCommSq.iso ((transform Y).obj ψ) ((precompose F G).obj U) ((precompose F₁ G₁).obj U) ((transform X).obj ψ)).hom.app X✝).fst.app x✝ = CategoryStruct.id (ψ.left.obj (X✝.fst.obj (U.obj x✝)))
                                          @[simp]
                                          theorem CategoryTheory.Limits.CategoricalPullback.CatCommSqOver.transformObjPrecomposeObjSquare_iso_inv_app_snd_app {A : Type u₁} {B : Type u₂} {C : Type u₃} [Category.{v₁, u₁} A] [Category.{v₂, u₂} B] [Category.{v₃, u₃} C] {F : Functor A B} {G : Functor C B} {A₁ : Type u₄} {B₁ : Type u₅} {C₁ : Type u₆} [Category.{v₄, u₄} A₁] [Category.{v₅, u₅} B₁] [Category.{v₆, u₆} C₁] {F₁ : Functor A₁ B₁} {G₁ : Functor C₁ B₁} {X : Type u₇} {Y : Type u₈} [Category.{v₇, u₇} X] [Category.{v₈, u₈} Y] (U : Functor X Y) (ψ : CatCospanTransform F G F₁ G₁) (X✝ : CatCommSqOver F G Y) (x✝ : X) :
                                          ((CatCommSq.iso ((transform Y).obj ψ) ((precompose F G).obj U) ((precompose F₁ G₁).obj U) ((transform X).obj ψ)).inv.app X✝).snd.app x✝ = CategoryStruct.id (ψ.right.obj (X✝.snd.obj (U.obj x✝)))
                                          @[simp]
                                          theorem CategoryTheory.Limits.CategoricalPullback.CatCommSqOver.transformObjPrecomposeObjSquare_iso_hom_app_snd_app {A : Type u₁} {B : Type u₂} {C : Type u₃} [Category.{v₁, u₁} A] [Category.{v₂, u₂} B] [Category.{v₃, u₃} C] {F : Functor A B} {G : Functor C B} {A₁ : Type u₄} {B₁ : Type u₅} {C₁ : Type u₆} [Category.{v₄, u₄} A₁] [Category.{v₅, u₅} B₁] [Category.{v₆, u₆} C₁] {F₁ : Functor A₁ B₁} {G₁ : Functor C₁ B₁} {X : Type u₇} {Y : Type u₈} [Category.{v₇, u₇} X] [Category.{v₈, u₈} Y] (U : Functor X Y) (ψ : CatCospanTransform F G F₁ G₁) (X✝ : CatCommSqOver F G Y) (x✝ : X) :
                                          ((CatCommSq.iso ((transform Y).obj ψ) ((precompose F G).obj U) ((precompose F₁ G₁).obj U) ((transform X).obj ψ)).hom.app X✝).snd.app x✝ = CategoryStruct.id (ψ.right.obj (X✝.snd.obj (U.obj x✝)))
                                          theorem CategoryTheory.Limits.CategoricalPullback.CatCommSqOver.transformObjPrecomposeObjSquare_iso_hom_naturality₂ {A : Type u₁} {B : Type u₂} {C : Type u₃} [Category.{v₁, u₁} A] [Category.{v₂, u₂} B] [Category.{v₃, u₃} C] {F : Functor A B} {G : Functor C B} {A₁ : Type u₄} {B₁ : Type u₅} {C₁ : Type u₆} [Category.{v₄, u₄} A₁] [Category.{v₅, u₅} B₁] [Category.{v₆, u₆} C₁] {F₁ : Functor A₁ B₁} {G₁ : Functor C₁ B₁} {X : Type u₇} {Y : Type u₈} [Category.{v₇, u₇} X] [Category.{v₈, u₈} Y] (U : Functor X Y) {ψ ψ' : CatCospanTransform F G F₁ G₁} (η : ψ ψ') :
                                          CategoryStruct.comp (Functor.whiskerRight ((transform Y).map η) ((precompose F₁ G₁).obj U)) (CatCommSq.iso ((transform Y).obj ψ') ((precompose F G).obj U) ((precompose F₁ G₁).obj U) ((transform X).obj ψ')).hom = CategoryStruct.comp (CatCommSq.iso ((transform Y).obj ψ) ((precompose F G).obj U) ((precompose F₁ G₁).obj U) ((transform X).obj ψ)).hom (((precompose F G).obj U).whiskerLeft ((transform X).map η))

                                          The square transformObjPrecomposeObjSquare is itself natural.

                                          theorem CategoryTheory.Limits.CategoricalPullback.CatCommSqOver.transformPrecomposeObjSquare_iso_hom_comp {A : Type u₁} {B : Type u₂} {C : Type u₃} [Category.{v₁, u₁} A] [Category.{v₂, u₂} B] [Category.{v₃, u₃} C] {F : Functor A B} {G : Functor C B} {A₁ : Type u₄} {B₁ : Type u₅} {C₁ : Type u₆} [Category.{v₄, u₄} A₁] [Category.{v₅, u₅} B₁] [Category.{v₆, u₆} C₁] {F₁ : Functor A₁ B₁} {G₁ : Functor C₁ B₁} {A₂ : Type u₇} {B₂ : Type u₈} {C₂ : Type u₉} [Category.{v₇, u₇} A₂] [Category.{v₈, u₈} B₂] [Category.{v₉, u₉} C₂] {F₂ : Functor A₂ B₂} {G₂ : Functor C₂ B₂} {X : Type u₁₀} {Y : Type u₁₁} [Category.{v₁₀, u₁₀} X] [Category.{v₁₁, u₁₁} Y] (U : Functor X Y) (ψ : CatCospanTransform F G F₁ G₁) (ψ' : CatCospanTransform F₁ G₁ F₂ G₂) :
                                          CategoryStruct.comp (CatCommSq.iso ((transform Y).obj (ψ.comp ψ')) ((precompose F G).obj U) ((precompose F₂ G₂).obj U) ((transform X).obj (ψ.comp ψ'))).hom (((precompose F G).obj U).whiskerLeft (transformObjComp X ψ ψ').hom) = CategoryStruct.comp (Functor.whiskerRight (transformObjComp Y ψ ψ').hom ((precompose F₂ G₂).obj U)) (CategoryStruct.comp (((transform Y).obj ψ).associator ((transform Y).obj ψ') ((precompose F₂ G₂).obj U)).hom (CategoryStruct.comp (((transform Y).obj ψ).whiskerLeft (CatCommSq.iso ((transform Y).obj ψ') ((precompose F₁ G₁).obj U) ((precompose F₂ G₂).obj U) ((transform X).obj ψ')).hom) (CategoryStruct.comp (((transform Y).obj ψ).associator ((precompose F₁ G₁).obj U) ((transform X).obj ψ')).inv (CategoryStruct.comp (Functor.whiskerRight (CatCommSq.iso ((transform Y).obj ψ) ((precompose F G).obj U) ((precompose F₁ G₁).obj U) ((transform X).obj ψ)).hom ((transform X).obj ψ')) (((precompose F G).obj U).associator ((transform X).obj ψ) ((transform X).obj ψ')).hom))))

                                          The square transformPrecomposeSquare respects compositions.