Documentation

Mathlib.CategoryTheory.LocallyCartesianClosed.ChosenPullbacksAlong

Chosen pullbacks along a morphism #

Main declarations #

Main results #

class CategoryTheory.ChosenPullbacksAlong {C : Type u₁} [Category.{v₁, u₁} C] {Y X : C} (f : Y X) :
Type (max u₁ v₁)

A functorial choice of pullbacks along a morphism f : Y ⟶ X in C given by a functor Over X ⥤ Over Y which is a right adjoint to the functor Over.map f.

Instances
    @[reducible, inline]
    abbrev CategoryTheory.ChosenPullbacks (C : Type u₁) [Category.{v₁, u₁} C] :
    Type (max u₁ v₁)

    A category has chosen pullbacks if every morphism has a chosen pullback.

    Instances For
      @[implicit_reducible]

      Relating the existing noncomputable HasPullbacksAlong typeclass to ChosenPullbacksAlong.

      Instances For
        @[implicit_reducible]

        The identity morphism has a functorial choice of pullbacks.

        Instances For

          Any chosen pullback functor of the identity morphism is naturally isomorphic to the identity functor.

          Instances For
            @[implicit_reducible]

            Every isomorphism has a functorial choice of pullbacks.

            Instances For
              @[simp]
              theorem CategoryTheory.ChosenPullbacksAlong.iso_pullback_map {C : Type u₁} [Category.{v₁, u₁} C] {Y X : C} (f : Y X) {Y✝ Z : Over X} (g : Y✝ Z) :
              @[simp]
              theorem CategoryTheory.ChosenPullbacksAlong.iso_mapPullbackAdj_counit_app {C : Type u₁} [Category.{v₁, u₁} C] {Y X : C} (f : Y X) (U : Over X) :
              (mapPullbackAdj f.hom).counit.app U = Over.homMk (CategoryStruct.id (({ obj := fun (Z : Over X) => Over.mk (CategoryStruct.comp Z.hom f.inv), map := fun {Y_1 Z : Over X} (g : Y_1 Z) => Over.homMk g.left , map_id := , map_comp := }.comp (Over.map f.hom)).obj U).left)
              @[implicit_reducible]

              The inverse of an isomorphism has a functorial choice of pullbacks.

              Instances For
                @[simp]
                theorem CategoryTheory.ChosenPullbacksAlong.isoInv_pullback_map_left {C : Type u₁} [Category.{v₁, u₁} C] {Y X : C} (f : Y X) {Y✝ Z : Over Y} (g : Y✝ Z) :
                @[implicit_reducible]

                The composition of morphisms with chosen pullbacks has a chosen pullback.

                Instances For

                  Any chosen pullback of a composite of morphisms is naturally isomorphic to the composition of chosen pullback functors.

                  Instances For
                    @[implicit_reducible]

                    In cartesian monoidal categories, any morphism to the terminal tensor unit has a functorial choice of pullbacks.

                    Instances For
                      @[implicit_reducible]

                      In cartesian monoidal categories, the first product projections fst have a functorial choice of pullbacks.

                      Instances For
                        @[implicit_reducible]

                        In cartesian monoidal categories, the second product projections snd have a functorial choice of pullbacks.

                        Instances For
                          @[reducible, inline]
                          abbrev CategoryTheory.ChosenPullbacksAlong.pullbackObj {C : Type u₁} [Category.{v₁, u₁} C] {Y Z X : C} (f : Y X) (g : Z X) [ChosenPullbacksAlong g] :
                          C

                          The underlying object of the chosen pullback along g of f.

                          Instances For
                            @[reducible, inline]
                            abbrev CategoryTheory.ChosenPullbacksAlong.fst' {C : Type u₁} [Category.{v₁, u₁} C] {Y Z X : C} (f : Y X) (g : Z X) [ChosenPullbacksAlong g] :

                            A morphism in Over X from the chosen pullback along g of f to Over.mk f.

                            Instances For
                              @[reducible, inline]
                              abbrev CategoryTheory.ChosenPullbacksAlong.fst {C : Type u₁} [Category.{v₁, u₁} C] {Y Z X : C} (f : Y X) (g : Z X) [ChosenPullbacksAlong g] :

                              The first projection from the chosen pullback along g of f to the domain of f.

                              Instances For
                                theorem CategoryTheory.ChosenPullbacksAlong.fst'_left {C : Type u₁} [Category.{v₁, u₁} C] {Y Z X : C} (f : Y X) (g : Z X) [ChosenPullbacksAlong g] :
                                (fst' f g).left = fst f g
                                @[reducible, inline]
                                abbrev CategoryTheory.ChosenPullbacksAlong.snd {C : Type u₁} [Category.{v₁, u₁} C] {Y Z X : C} (f : Y X) (g : Z X) [ChosenPullbacksAlong g] :

                                The second projection from the chosen pullback along g of f to the domain of g.

                                Instances For
                                  @[reducible, inline]
                                  abbrev CategoryTheory.ChosenPullbacksAlong.snd' {C : Type u₁} [Category.{v₁, u₁} C] {Y Z X : C} (f : Y X) (g : Z X) [ChosenPullbacksAlong g] :

                                  A morphism in Over X from the chosen pullback along g of f to Over.mk g.

                                  Instances For
                                    theorem CategoryTheory.ChosenPullbacksAlong.snd'_left {C : Type u₁} [Category.{v₁, u₁} C] {Y Z X : C} (f : Y X) (g : Z X) [ChosenPullbacksAlong g] :
                                    (snd' f g).left = snd f g
                                    theorem CategoryTheory.ChosenPullbacksAlong.hom_ext {C : Type u₁} [Category.{v₁, u₁} C] {Y Z X : C} (f : Y X) (g : Z X) [ChosenPullbacksAlong g] {W : C} {φ₁ φ₂ : W pullbackObj f g} (h₁ : CategoryStruct.comp φ₁ (fst f g) = CategoryStruct.comp φ₂ (fst f g)) (h₂ : CategoryStruct.comp φ₁ (snd f g) = CategoryStruct.comp φ₂ (snd f g)) :
                                    φ₁ = φ₂
                                    theorem CategoryTheory.ChosenPullbacksAlong.hom_ext_iff {C : Type u₁} [Category.{v₁, u₁} C] {Y Z X : C} {f : Y X} {g : Z X} [ChosenPullbacksAlong g] {W : C} {φ₁ φ₂ : W pullbackObj f g} :
                                    φ₁ = φ₂ CategoryStruct.comp φ₁ (fst f g) = CategoryStruct.comp φ₂ (fst f g) CategoryStruct.comp φ₁ (snd f g) = CategoryStruct.comp φ₂ (snd f g)
                                    def CategoryTheory.ChosenPullbacksAlong.lift {C : Type u₁} [Category.{v₁, u₁} C] {Y Z X : C} {f : Y X} {g : Z X} [ChosenPullbacksAlong g] {W : C} (a : W Y) (b : W Z) (h : CategoryStruct.comp a f = CategoryStruct.comp b g := by cat_disch) :

                                    Given morphisms a : W ⟶ Y and b : W ⟶ Z satisfying a ≫ f = b ≫ g, constructs the unique morphism W ⟶ pullbackObj f g which lifts a and b.

                                    Instances For
                                      @[simp]
                                      theorem CategoryTheory.ChosenPullbacksAlong.lift_fst {C : Type u₁} [Category.{v₁, u₁} C] {Y Z X : C} {f : Y X} {g : Z X} [ChosenPullbacksAlong g] {W : C} (a : W Y) (b : W Z) (h : CategoryStruct.comp a f = CategoryStruct.comp b g := by cat_disch) :
                                      CategoryStruct.comp (lift a b h) (fst f g) = a
                                      @[simp]
                                      theorem CategoryTheory.ChosenPullbacksAlong.lift_fst_assoc {C : Type u₁} [Category.{v₁, u₁} C] {Y Z X : C} {f : Y X} {g : Z X} [ChosenPullbacksAlong g] {W : C} (a : W Y) (b : W Z) (h : CategoryStruct.comp a f = CategoryStruct.comp b g := by cat_disch) {Z✝ : C} (h✝ : Y Z✝) :
                                      @[simp]
                                      theorem CategoryTheory.ChosenPullbacksAlong.lift_snd {C : Type u₁} [Category.{v₁, u₁} C] {Y Z X : C} {f : Y X} {g : Z X} [ChosenPullbacksAlong g] {W : C} (a : W Y) (b : W Z) (h : CategoryStruct.comp a f = CategoryStruct.comp b g := by cat_disch) :
                                      CategoryStruct.comp (lift a b h) (snd f g) = b
                                      @[simp]
                                      theorem CategoryTheory.ChosenPullbacksAlong.lift_snd_assoc {C : Type u₁} [Category.{v₁, u₁} C] {Y Z X : C} {f : Y X} {g : Z X} [ChosenPullbacksAlong g] {W : C} (a : W Y) (b : W Z) (h : CategoryStruct.comp a f = CategoryStruct.comp b g := by cat_disch) {Z✝ : C} (h✝ : Z Z✝) :
                                      def CategoryTheory.ChosenPullbacksAlong.pullbackMap {C : Type u₁} [Category.{v₁, u₁} C] {Y Z X : C} (f : Y X) (g : Z X) [ChosenPullbacksAlong g] {Y' Z' X' : C} (f' : Y' X') (g' : Z' X') [ChosenPullbacksAlong g'] (γ₁ : Y' Y) (γ₂ : Z' Z) (γ₃ : X' X) (comm₁ : CategoryStruct.comp f' γ₃ = CategoryStruct.comp γ₁ f := by cat_disch) (comm₂ : CategoryStruct.comp g' γ₃ = CategoryStruct.comp γ₂ g := by cat_disch) :

                                      The functoriality of pullbackObj f g in both arguments: Given a map from the pullback cospans of f' : Y' ⟶ X' and g' : Z' ⟶ X' to the pullback cospan of f : Y ⟶ X and g : Z ⟶ X as in the diagram below

                                      Y' ⟶ Y
                                        ↘   ↘
                                        X' ⟶ X
                                        ↗   ↗
                                      Z' ⟶ Z
                                      

                                      if the morphisms g' and g both have chosen pullbacks, then we get an induced morphism pullbackMap f g f' g' comm₁ comm₂ from the chosen pullback of f' : Y' ⟶ X' along g' to the chosen pullback of f : Y ⟶ X along g. Here comm₁ and comm₂ are the commutativity conditions of the squares in the diagram above.

                                      Instances For
                                        @[simp]
                                        theorem CategoryTheory.ChosenPullbacksAlong.pullbackMap_fst {C : Type u₁} [Category.{v₁, u₁} C] {Y Z X : C} {f : Y X} {g : Z X} [ChosenPullbacksAlong g] {Y' Z' X' : C} {f' : Y' X'} {g' : Z' X'} [ChosenPullbacksAlong g'] {γ₁ : Y' Y} {γ₂ : Z' Z} {γ₃ : X' X} (comm₁ : CategoryStruct.comp f' γ₃ = CategoryStruct.comp γ₁ f := by cat_disch) (comm₂ : CategoryStruct.comp g' γ₃ = CategoryStruct.comp γ₂ g := by cat_disch) :
                                        CategoryStruct.comp (pullbackMap f g f' g' γ₁ γ₂ γ₃ comm₁ comm₂) (fst f g) = CategoryStruct.comp (fst f' g') γ₁
                                        @[simp]
                                        theorem CategoryTheory.ChosenPullbacksAlong.pullbackMap_fst_assoc {C : Type u₁} [Category.{v₁, u₁} C] {Y Z X : C} {f : Y X} {g : Z X} [ChosenPullbacksAlong g] {Y' Z' X' : C} {f' : Y' X'} {g' : Z' X'} [ChosenPullbacksAlong g'] {γ₁ : Y' Y} {γ₂ : Z' Z} {γ₃ : X' X} (comm₁ : CategoryStruct.comp f' γ₃ = CategoryStruct.comp γ₁ f := by cat_disch) (comm₂ : CategoryStruct.comp g' γ₃ = CategoryStruct.comp γ₂ g := by cat_disch) {Z✝ : C} (h : Y Z✝) :
                                        CategoryStruct.comp (pullbackMap f g f' g' γ₁ γ₂ γ₃ comm₁ comm₂) (CategoryStruct.comp (fst f g) h) = CategoryStruct.comp (fst f' g') (CategoryStruct.comp γ₁ h)
                                        @[simp]
                                        theorem CategoryTheory.ChosenPullbacksAlong.pullbackMap_snd {C : Type u₁} [Category.{v₁, u₁} C] {Y Z X : C} {f : Y X} {g : Z X} [ChosenPullbacksAlong g] {Y' Z' X' : C} {f' : Y' X'} {g' : Z' X'} [ChosenPullbacksAlong g'] {γ₁ : Y' Y} {γ₂ : Z' Z} {γ₃ : X' X} (comm₁ : CategoryStruct.comp f' γ₃ = CategoryStruct.comp γ₁ f := by cat_disch) (comm₂ : CategoryStruct.comp g' γ₃ = CategoryStruct.comp γ₂ g := by cat_disch) :
                                        CategoryStruct.comp (pullbackMap f g f' g' γ₁ γ₂ γ₃ comm₁ comm₂) (snd f g) = CategoryStruct.comp (snd f' g') γ₂
                                        @[simp]
                                        theorem CategoryTheory.ChosenPullbacksAlong.pullbackMap_snd_assoc {C : Type u₁} [Category.{v₁, u₁} C] {Y Z X : C} {f : Y X} {g : Z X} [ChosenPullbacksAlong g] {Y' Z' X' : C} {f' : Y' X'} {g' : Z' X'} [ChosenPullbacksAlong g'] {γ₁ : Y' Y} {γ₂ : Z' Z} {γ₃ : X' X} (comm₁ : CategoryStruct.comp f' γ₃ = CategoryStruct.comp γ₁ f := by cat_disch) (comm₂ : CategoryStruct.comp g' γ₃ = CategoryStruct.comp γ₂ g := by cat_disch) {Z✝ : C} (h : Z Z✝) :
                                        CategoryStruct.comp (pullbackMap f g f' g' γ₁ γ₂ γ₃ comm₁ comm₂) (CategoryStruct.comp (snd f g) h) = CategoryStruct.comp (snd f' g') (CategoryStruct.comp γ₂ h)
                                        @[simp]
                                        theorem CategoryTheory.ChosenPullbacksAlong.pullbackMap_comp {C : Type u₁} [Category.{v₁, u₁} C] {Y Z X : C} {f : Y X} {g : Z X} [ChosenPullbacksAlong g] {Y' Z' X' Y'' Z'' X'' : C} {f' : Y' X'} {g' : Z' X'} {f'' : Y'' X''} {g'' : Z'' X''} [ChosenPullbacksAlong g'] [ChosenPullbacksAlong g''] {γ₁ : Y' Y} {γ₂ : Z' Z} {γ₃ : X' X} {δ₁ : Y'' Y'} {δ₂ : Z'' Z'} {δ₃ : X'' X'} (comm₁ : CategoryStruct.comp f' γ₃ = CategoryStruct.comp γ₁ f := by cat_disch) (comm₂ : CategoryStruct.comp g' γ₃ = CategoryStruct.comp γ₂ g := by cat_disch) (comm₁' : CategoryStruct.comp f'' δ₃ = CategoryStruct.comp δ₁ f' := by cat_disch) (comm₂' : CategoryStruct.comp g'' δ₃ = CategoryStruct.comp δ₂ g' := by cat_disch) :
                                        CategoryStruct.comp (pullbackMap f' g' f'' g'' δ₁ δ₂ δ₃ comm₁' comm₂') (pullbackMap f g f' g' γ₁ γ₂ γ₃ comm₁ comm₂) = pullbackMap f g f'' g'' (CategoryStruct.comp δ₁ γ₁) (CategoryStruct.comp δ₂ γ₂) (CategoryStruct.comp δ₃ γ₃)
                                        @[simp]
                                        theorem CategoryTheory.ChosenPullbacksAlong.pullbackMap_comp_assoc {C : Type u₁} [Category.{v₁, u₁} C] {Y Z X : C} {f : Y X} {g : Z X} [ChosenPullbacksAlong g] {Y' Z' X' Y'' Z'' X'' : C} {f' : Y' X'} {g' : Z' X'} {f'' : Y'' X''} {g'' : Z'' X''} [ChosenPullbacksAlong g'] [ChosenPullbacksAlong g''] {γ₁ : Y' Y} {γ₂ : Z' Z} {γ₃ : X' X} {δ₁ : Y'' Y'} {δ₂ : Z'' Z'} {δ₃ : X'' X'} (comm₁ : CategoryStruct.comp f' γ₃ = CategoryStruct.comp γ₁ f := by cat_disch) (comm₂ : CategoryStruct.comp g' γ₃ = CategoryStruct.comp γ₂ g := by cat_disch) (comm₁' : CategoryStruct.comp f'' δ₃ = CategoryStruct.comp δ₁ f' := by cat_disch) (comm₂' : CategoryStruct.comp g'' δ₃ = CategoryStruct.comp δ₂ g' := by cat_disch) {Z✝ : C} (h : pullbackObj f g Z✝) :
                                        CategoryStruct.comp (pullbackMap f' g' f'' g'' δ₁ δ₂ δ₃ comm₁' comm₂') (CategoryStruct.comp (pullbackMap f g f' g' γ₁ γ₂ γ₃ comm₁ comm₂) h) = CategoryStruct.comp (pullbackMap f g f'' g'' (CategoryStruct.comp δ₁ γ₁) (CategoryStruct.comp δ₂ γ₂) (CategoryStruct.comp δ₃ γ₃) ) h

                                        The canonical pullback cone from the data of a chosen pullback of f along g.

                                        Instances For
                                          @[simp]
                                          @[simp]

                                          The canonical pullback cone is a limit cone. Note: this limit cone is computable as lifts are constructed from the data contained in the ChosenPullbackAlong instance, contrary to IsPullback.isLimit, which constructs lifting data from CategoryTheory.Square.IsPullback (a Prop).

                                          Instances For
                                            theorem CategoryTheory.ChosenPullbacksAlong.isPullback {C : Type u₁} [Category.{v₁, u₁} C] {Y Z X : C} (f : Y X) (g : Z X) [ChosenPullbacksAlong g] :
                                            IsPullback (fst f g) (snd f g) f g
                                            @[implicit_reducible]

                                            If g has a chosen pullback, then Over.ChosenPullbacksAlong.fst f g has a chosen pullback.

                                            Instances For

                                              The computable ChosenPullbacksAlong.pullback g is naturally isomorphic to the noncomputable Over.pullback g.

                                              Instances For