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: #

Implementations note: #

In this file, a few proofs could be removed in favor of letting autoParams fill them in automatically: they are kept intentionally for performance reasons.

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 {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✝
        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
        @[simp]

        the compatibility condition on fst and snd with respect to the structure isomorphisms

        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_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) :
        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) :
        @[simp]

        Naturality square for morphisms in the inverse direction.

        @[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_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.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_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.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
              structure 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 (max u₁ u₃) u₄) v₁) v₂) v₃) 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 equivalent to ((whiskeringRight X A B).obj F) ⊡ ((whiskeringRight X C B).obj G), though it is defined separately for performance reasons.

              • fst : Functor X A

                The first projection functor.

              • snd : Functor X C

                The second projection functor.

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

                The structural natural isomorphism.

              Instances For
                structure CategoryTheory.Limits.CategoricalPullback.CatCommSqOver.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 : Type u₄) [Category.{v₄, u₄} X] (x y : CatCommSqOver F G X) :
                Type (max (max u₄ v₁) v₃)

                The Hom types for the categorical commutative squares over X are given by pairs of natural transformations compatible with the structural isomorphisms.

                Instances For
                  theorem CategoryTheory.Limits.CategoricalPullback.CatCommSqOver.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 : Type u₄} {inst✝³ : Category.{v₄, u₄} X} {x y : CatCommSqOver F G X} {x✝ y✝ : Hom X x y} :
                  x✝ = y✝ x✝.fst = y✝.fst x✝.snd = y✝.snd
                  theorem CategoryTheory.Limits.CategoricalPullback.CatCommSqOver.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 : Type u₄} {inst✝³ : Category.{v₄, u₄} X} {x y : CatCommSqOver F G X} {x✝ y✝ : Hom X x y} (fst : x✝.fst = y✝.fst) (snd : x✝.snd = y✝.snd) :
                  x✝ = y✝
                  @[simp]

                  the compatibility condition on fst and snd with respect to the structure isomorphisms

                  @[simp]
                  theorem CategoryTheory.Limits.CategoricalPullback.CatCommSqOver.comp_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] {X✝ Y✝ Z✝ : CatCommSqOver F G X} (f : Hom X X✝ Y✝) (g : Hom X Y✝ Z✝) (X✝¹ : X) :
                  (CategoryStruct.comp f g).snd.app X✝¹ = CategoryStruct.comp (f.snd.app X✝¹) (g.snd.app X✝¹)
                  @[simp]
                  theorem CategoryTheory.Limits.CategoricalPullback.CatCommSqOver.comp_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] {X✝ Y✝ Z✝ : CatCommSqOver F G X} (f : Hom X X✝ Y✝) (g : Hom X Y✝ Z✝) (X✝¹ : X) :
                  (CategoryStruct.comp f g).fst.app X✝¹ = CategoryStruct.comp (f.fst.app X✝¹) (g.fst.app X✝¹)
                  theorem CategoryTheory.Limits.CategoricalPullback.CatCommSqOver.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 : Type u₄) [Category.{v₄, u₄} X] {S S' : CatCommSqOver F G X} {f g : S S'} (h₁ : f.fst = g.fst) (h₂ : f.snd = g.snd) :
                  f = g
                  theorem CategoryTheory.Limits.CategoricalPullback.CatCommSqOver.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 : Type u₄} [Category.{v₄, u₄} X] {S S' : CatCommSqOver F G X} {f g : S S'} :
                  f = g f.fst = g.fst f.snd = g.snd
                  @[simp]
                  @[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 : G.obj (S'.snd.obj x) Z) :

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

                  Equations
                  • One or more equations did not get rendered due to their size.
                  Instances For
                    @[simp]
                    theorem CategoryTheory.Limits.CategoricalPullback.CatCommSqOver.fstFunctor_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] {X✝ Y✝ : CatCommSqOver F G X} (f : X✝ Y✝) :
                    (fstFunctor F G X).map f = f.fst

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

                    Equations
                    • One or more equations did not get rendered due to their size.
                    Instances For
                      @[simp]
                      theorem CategoryTheory.Limits.CategoricalPullback.CatCommSqOver.sndFunctor_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] {X✝ Y✝ : CatCommSqOver F G X} (f : X✝ Y✝) :
                      (sndFunctor F G X).map f = f.snd
                      @[simp]
                      theorem CategoryTheory.Limits.CategoricalPullback.CatCommSqOver.e_inv_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] (X✝ : CatCommSqOver F G X) :
                      (e F G X).inv.app X✝ = X✝.iso.inv
                      @[simp]
                      theorem CategoryTheory.Limits.CategoricalPullback.CatCommSqOver.e_hom_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] (X✝ : CatCommSqOver F G X) :
                      (e F G X).hom.app X✝ = X✝.iso.hom
                      def CategoryTheory.Limits.CategoricalPullback.CatCommSqOver.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 : Type u₄} [Category.{v₄, u₄} X] {S S' : CatCommSqOver F G X} (eₗ : S.fst S'.fst) (eᵣ : S.snd S'.snd) (w : CategoryStruct.comp (Functor.whiskerRight eₗ.hom F) S'.iso.hom = CategoryStruct.comp S.iso.hom (Functor.whiskerRight eᵣ.hom G) := by cat_disch) :
                      S S'

                      A constructor for isomorphisms in CatCommSqOver

                      Equations
                      • One or more equations did not get rendered due to their size.
                      Instances For
                        @[simp]
                        theorem CategoryTheory.Limits.CategoricalPullback.CatCommSqOver.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 : Type u₄} [Category.{v₄, u₄} X] {S S' : CatCommSqOver F G X} (eₗ : S.fst S'.fst) (eᵣ : S.snd S'.snd) (w : CategoryStruct.comp (Functor.whiskerRight eₗ.hom F) S'.iso.hom = CategoryStruct.comp S.iso.hom (Functor.whiskerRight eᵣ.hom G) := by cat_disch) :
                        (mkIso eₗ eᵣ w).inv.snd = eᵣ.inv
                        @[simp]
                        theorem CategoryTheory.Limits.CategoricalPullback.CatCommSqOver.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 : Type u₄} [Category.{v₄, u₄} X] {S S' : CatCommSqOver F G X} (eₗ : S.fst S'.fst) (eᵣ : S.snd S'.snd) (w : CategoryStruct.comp (Functor.whiskerRight eₗ.hom F) S'.iso.hom = CategoryStruct.comp S.iso.hom (Functor.whiskerRight eᵣ.hom G) := by cat_disch) :
                        (mkIso eₗ eᵣ w).hom.fst = eₗ.hom
                        @[simp]
                        theorem CategoryTheory.Limits.CategoricalPullback.CatCommSqOver.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 : Type u₄} [Category.{v₄, u₄} X] {S S' : CatCommSqOver F G X} (eₗ : S.fst S'.fst) (eᵣ : S.snd S'.snd) (w : CategoryStruct.comp (Functor.whiskerRight eₗ.hom F) S'.iso.hom = CategoryStruct.comp S.iso.hom (Functor.whiskerRight eᵣ.hom G) := by cat_disch) :
                        (mkIso eₗ eᵣ w).inv.fst = eₗ.inv
                        @[simp]
                        theorem CategoryTheory.Limits.CategoricalPullback.CatCommSqOver.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 : Type u₄} [Category.{v₄, u₄} X] {S S' : CatCommSqOver F G X} (eₗ : S.fst S'.fst) (eᵣ : S.snd S'.snd) (w : CategoryStruct.comp (Functor.whiskerRight eₗ.hom F) S'.iso.hom = CategoryStruct.comp S.iso.hom (Functor.whiskerRight eᵣ.hom G) := by cat_disch) :
                        (mkIso eₗ eᵣ w).hom.snd = eᵣ.hom

                        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_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
                          @[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]
                          @[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]
                          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

                          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
                              @[simp]
                              theorem CategoryTheory.Limits.CategoricalPullback.functorEquiv_inverse_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₄) [Category.{v₄, u₄} X] (S : CatCommSqOver F G X) {x y : X} (f : x y) :
                              (((functorEquiv F G X).inverse.obj S).map f).snd = S.snd.map f
                              @[simp]
                              @[simp]
                              theorem CategoryTheory.Limits.CategoricalPullback.functorEquiv_functor_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✝) :
                              ((functorEquiv F G X).functor.obj J).snd.map f = (J.map f).snd
                              @[simp]
                              theorem CategoryTheory.Limits.CategoricalPullback.functorEquiv_inverse_map_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] {S S' : CatCommSqOver F G X} (φ : S S') (x : X) :
                              (((functorEquiv F G X).inverse.map φ).app x).fst = φ.fst.app x
                              @[simp]
                              theorem CategoryTheory.Limits.CategoricalPullback.functorEquiv_functor_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) :
                              ((functorEquiv F G X).functor.map F✝).fst.app X✝ = (F✝.app X✝).fst
                              @[simp]
                              @[simp]
                              @[simp]
                              @[simp]
                              @[simp]
                              theorem CategoryTheory.Limits.CategoricalPullback.functorEquiv_functor_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✝) :
                              ((functorEquiv F G X).functor.obj J).fst.map f = (J.map f).fst
                              @[simp]
                              theorem CategoryTheory.Limits.CategoricalPullback.functorEquiv_inverse_map_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] {S S' : CatCommSqOver F G X} (φ : S S') (x : X) :
                              (((functorEquiv F G X).inverse.map φ).app x).snd = φ.snd.app x
                              @[simp]
                              @[simp]
                              theorem CategoryTheory.Limits.CategoricalPullback.functorEquiv_inverse_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₄) [Category.{v₄, u₄} X] (S : CatCommSqOver F G X) {x y : X} (f : x y) :
                              (((functorEquiv F G X).inverse.obj S).map f).fst = S.fst.map f
                              @[simp]
                              @[simp]
                              theorem CategoryTheory.Limits.CategoricalPullback.functorEquiv_functor_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) :
                              ((functorEquiv F G X).functor.map F✝).snd.app X✝ = (F✝.app X✝).snd
                              @[simp]

                              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_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_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_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_fst_obj {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) (X✝ : X) :
                                  (((transform X).obj ψ).obj S).fst.obj X✝ = ψ.left.obj (S.fst.obj X✝)
                                  @[simp]
                                  theorem CategoryTheory.Limits.CategoricalPullback.CatCommSqOver.transform_obj_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} {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) {X✝ Y✝ : X} (f : X✝ Y✝) :
                                  (((transform X).obj ψ).obj S).fst.map f = ψ.left.map (S.fst.map f)
                                  @[simp]
                                  theorem CategoryTheory.Limits.CategoricalPullback.CatCommSqOver.transform_obj_obj_snd_obj {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) (X✝ : X) :
                                  (((transform X).obj ψ).obj S).snd.obj X✝ = ψ.right.obj (S.snd.obj X✝)
                                  @[simp]
                                  theorem CategoryTheory.Limits.CategoricalPullback.CatCommSqOver.transform_obj_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} {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) {X✝ Y✝ : X} (f : X✝ Y✝) :
                                  (((transform X).obj ψ).obj S).snd.map f = ψ.right.map (S.snd.map f)
                                  @[simp]
                                  theorem CategoryTheory.Limits.CategoricalPullback.CatCommSqOver.transform_obj_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} {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) (X✝ : X) :
                                  (((transform X).obj ψ).map f).fst.app X✝ = ψ.left.map (f.fst.app X✝)
                                  @[simp]
                                  theorem CategoryTheory.Limits.CategoricalPullback.CatCommSqOver.transform_obj_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} {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) (X✝ : X) :
                                  (((transform X).obj ψ).map f).snd.app X✝ = ψ.right.map (f.snd.app X✝)
                                  @[simp]
                                  theorem CategoryTheory.Limits.CategoricalPullback.CatCommSqOver.transform_obj_obj_iso_hom_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) (X✝ : X) :
                                  (((transform X).obj ψ).obj S).iso.hom.app X✝ = CategoryStruct.comp ((CatCommSq.iso F ψ.left ψ.base F₁).inv.app (S.fst.obj X✝)) (CategoryStruct.comp (ψ.base.map (S.iso.hom.app X✝)) ((CatCommSq.iso G ψ.right ψ.base G₁).hom.app (S.snd.obj X✝)))
                                  @[simp]
                                  theorem CategoryTheory.Limits.CategoricalPullback.CatCommSqOver.transform_obj_obj_iso_inv_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) (X✝ : X) :
                                  (((transform X).obj ψ).obj S).iso.inv.app X✝ = CategoryStruct.comp ((CatCommSq.iso G ψ.right ψ.base G₁).inv.app (S.snd.obj X✝)) (CategoryStruct.comp (ψ.base.map (S.iso.inv.app X✝)) ((CatCommSq.iso F ψ.left ψ.base F₁).hom.app (S.fst.obj 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)
                                  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_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_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_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✝)))
                                    @[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✝)))

                                    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_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₄} {Y : Type u₅} [Category.{v₄, u₄} X] [Category.{v₅, u₅} Y] (U : Functor X Y) (S : CatCommSqOver F G Y) {X✝ Y✝ : X} (f : X✝ Y✝) :
                                        (((precompose F G).obj U).obj S).snd.map f = S.snd.map (U.map f)
                                        @[simp]
                                        theorem CategoryTheory.Limits.CategoricalPullback.CatCommSqOver.precompose_obj_obj_fst_obj {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 : CatCommSqOver F G Y) (X✝ : X) :
                                        (((precompose F G).obj U).obj S).fst.obj X✝ = S.fst.obj (U.obj X✝)
                                        @[simp]
                                        theorem CategoryTheory.Limits.CategoricalPullback.CatCommSqOver.precompose_obj_obj_iso_inv_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₅} [Category.{v₄, u₄} X] [Category.{v₅, u₅} Y] (U : Functor X Y) (S : CatCommSqOver F G Y) (X✝ : X) :
                                        (((precompose F G).obj U).obj S).iso.inv.app X✝ = S.iso.inv.app (U.obj X✝)
                                        @[simp]
                                        theorem CategoryTheory.Limits.CategoricalPullback.CatCommSqOver.precompose_obj_obj_iso_hom_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₅} [Category.{v₄, u₄} X] [Category.{v₅, u₅} Y] (U : Functor X Y) (S : CatCommSqOver F G Y) (X✝ : X) :
                                        (((precompose F G).obj U).obj S).iso.hom.app X✝ = S.iso.hom.app (U.obj X✝)
                                        @[simp]
                                        theorem CategoryTheory.Limits.CategoricalPullback.CatCommSqOver.precompose_obj_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₄} {Y : Type u₅} [Category.{v₄, u₄} X] [Category.{v₅, u₅} Y] (U : Functor X Y) {S S' : CatCommSqOver F G Y} (φ : S S') (X✝ : X) :
                                        (((precompose F G).obj U).map φ).fst.app X✝ = φ.fst.app (U.obj X✝)
                                        @[simp]
                                        theorem CategoryTheory.Limits.CategoricalPullback.CatCommSqOver.precompose_obj_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₄} {Y : Type u₅} [Category.{v₄, u₄} X] [Category.{v₅, u₅} Y] (U : Functor X Y) (S : CatCommSqOver F G Y) {X✝ Y✝ : X} (f : X✝ Y✝) :
                                        (((precompose F G).obj U).obj S).fst.map f = S.fst.map (U.map f)
                                        @[simp]
                                        theorem CategoryTheory.Limits.CategoricalPullback.CatCommSqOver.precompose_obj_obj_snd_obj {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 : CatCommSqOver F G Y) (X✝ : X) :
                                        (((precompose F G).obj U).obj S).snd.obj X✝ = S.snd.obj (U.obj X✝)
                                        @[simp]
                                        theorem CategoryTheory.Limits.CategoricalPullback.CatCommSqOver.precompose_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) {X : Type u₄} {Y : Type u₅} [Category.{v₄, u₄} X] [Category.{v₅, u₅} Y] {U V : Functor X Y} (α : U V) (x : CatCommSqOver F G Y) (X✝ : X) :
                                        (((precompose F G).map α).app x).fst.app X✝ = x.fst.map (α.app X✝)
                                        @[simp]
                                        theorem CategoryTheory.Limits.CategoricalPullback.CatCommSqOver.precompose_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) {X : Type u₄} {Y : Type u₅} [Category.{v₄, u₄} X] [Category.{v₅, u₅} Y] {U V : Functor X Y} (α : U V) (x : CatCommSqOver F G Y) (X✝ : X) :
                                        (((precompose F G).map α).app x).snd.app X✝ = x.snd.map (α.app X✝)
                                        @[simp]
                                        theorem CategoryTheory.Limits.CategoricalPullback.CatCommSqOver.precompose_obj_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₄} {Y : Type u₅} [Category.{v₄, u₄} X] [Category.{v₅, u₅} Y] (U : Functor X Y) {S S' : CatCommSqOver F G Y} (φ : S S') (X✝ : X) :
                                        (((precompose F G).obj U).map φ).snd.app X✝ = φ.snd.app (U.obj X✝)

                                        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_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_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✝)))
                                            @[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_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✝)))
                                            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_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_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_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✝)))
                                            @[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✝)))
                                            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_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_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✝)))
                                            @[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_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✝)))
                                            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.