Documentation

Mathlib.CategoryTheory.Comma.Over.Basic

Over and under categories #

Over (and under) categories are special cases of comma categories.

Tags #

Comma, Slice, Coslice, Over, Under

def CategoryTheory.Over {T : Type u₁} [Category.{v₁, u₁} T] (X : T) :
Type (max u₁ v₁)

The over category has as objects arrows in T with codomain X and as morphisms commutative triangles.

Equations
    Instances For
      theorem CategoryTheory.Over.OverMorphism.ext {T : Type u₁} [Category.{v₁, u₁} T] {X : T} {U V : Over X} {f g : U V} (h : f.left = g.left) :
      f = g
      theorem CategoryTheory.Over.OverMorphism.ext_iff {T : Type u₁} [Category.{v₁, u₁} T] {X : T} {U V : Over X} {f g : U V} :
      f = g f.left = g.left
      @[simp]
      theorem CategoryTheory.Over.over_right {T : Type u₁} [Category.{v₁, u₁} T] {X : T} (U : Over X) :
      U.right = { as := PUnit.unit }
      @[simp]
      theorem CategoryTheory.Over.comp_left {T : Type u₁} [Category.{v₁, u₁} T] {X : T} (a b c : Over X) (f : a b) (g : b c) :
      @[simp]
      theorem CategoryTheory.Over.w {T : Type u₁} [Category.{v₁, u₁} T] {X : T} {A B : Over X} (f : A B) :
      def CategoryTheory.Over.mk {T : Type u₁} [Category.{v₁, u₁} T] {X Y : T} (f : Y X) :

      To give an object in the over category, it suffices to give a morphism with codomain X.

      Equations
        Instances For
          @[simp]
          theorem CategoryTheory.Over.mk_left {T : Type u₁} [Category.{v₁, u₁} T] {X Y : T} (f : Y X) :
          (mk f).left = Y
          @[simp]
          theorem CategoryTheory.Over.mk_hom {T : Type u₁} [Category.{v₁, u₁} T] {X Y : T} (f : Y X) :
          (mk f).hom = f

          We can set up a coercion from arrows with codomain X to over X. This most likely should not be a global instance, but it is sometimes useful.

          Equations
            Instances For
              @[simp]
              theorem CategoryTheory.Over.coe_hom {T : Type u₁} [Category.{v₁, u₁} T] {X Y : T} (f : Y X) :
              (mk f).hom = f
              def CategoryTheory.Over.homMk {T : Type u₁} [Category.{v₁, u₁} T] {X : T} {U V : Over X} (f : U.left V.left) (w : CategoryStruct.comp f V.hom = U.hom := by cat_disch) :
              U V

              To give a morphism in the over category, it suffices to give an arrow fitting in a commutative triangle.

              Equations
                Instances For
                  @[simp]
                  theorem CategoryTheory.Over.homMk_left {T : Type u₁} [Category.{v₁, u₁} T] {X : T} {U V : Over X} (f : U.left V.left) (w : CategoryStruct.comp f V.hom = U.hom := by cat_disch) :
                  (homMk f w).left = f
                  @[simp]
                  theorem CategoryTheory.Over.homMk_eta {T : Type u₁} [Category.{v₁, u₁} T] {X : T} {U V : Over X} (f : U V) (h : CategoryStruct.comp f.left V.hom = U.hom) :
                  homMk f.left h = f
                  theorem CategoryTheory.Over.homMk_comp {T : Type u₁} [Category.{v₁, u₁} T] {X : T} {U V W : Over X} (f : U.left V.left) (g : V.left W.left) (w_f : CategoryStruct.comp f V.hom = U.hom) (w_g : CategoryStruct.comp g W.hom = V.hom) :

                  This is useful when homMk (· ≫ ·) appears under Functor.map or a natural equivalence.

                  def CategoryTheory.Over.isoMk {T : Type u₁} [Category.{v₁, u₁} T] {X : T} {f g : Over X} (hl : f.left g.left) (hw : CategoryStruct.comp hl.hom g.hom = f.hom := by cat_disch) :
                  f g

                  Construct an isomorphism in the over category given isomorphisms of the objects whose forward direction gives a commutative triangle.

                  Equations
                    Instances For
                      @[simp]
                      theorem CategoryTheory.Over.isoMk_hom_left {T : Type u₁} [Category.{v₁, u₁} T] {X : T} {f g : Over X} (hl : f.left g.left) (hw : CategoryStruct.comp hl.hom g.hom = f.hom := by cat_disch) :
                      (isoMk hl hw).hom.left = hl.hom
                      @[simp]
                      theorem CategoryTheory.Over.isoMk_inv_left {T : Type u₁} [Category.{v₁, u₁} T] {X : T} {f g : Over X} (hl : f.left g.left) (hw : CategoryStruct.comp hl.hom g.hom = f.hom := by cat_disch) :
                      (isoMk hl hw).inv.left = hl.inv
                      @[simp]
                      theorem CategoryTheory.Over.hom_left_inv_left_assoc {T : Type u₁} [Category.{v₁, u₁} T] {X : T} {f g : Over X} (e : f g) {Z : T} (h : f.left Z) :
                      @[simp]
                      theorem CategoryTheory.Over.inv_left_hom_left_assoc {T : Type u₁} [Category.{v₁, u₁} T] {X : T} {f g : Over X} (e : f g) {Z : T} (h : g.left Z) :
                      theorem CategoryTheory.Over.forall_iff {T : Type u₁} [Category.{v₁, u₁} T] {X : T} (P : Over XProp) :
                      (∀ (Y : Over X), P Y) ∀ (Y : T) (f : Y X), P (mk f)
                      theorem CategoryTheory.Over.mk_surjective {T : Type u₁} [Category.{v₁, u₁} T] {S : T} (X : Over S) :
                      ∃ (Y : T) (f : Y S), mk f = X
                      theorem CategoryTheory.Over.homMk_surjective {T : Type u₁} [Category.{v₁, u₁} T] {S : T} {X Y : Over S} (f : X Y) :
                      ∃ (g : X.left Y.left) (hg : CategoryStruct.comp g Y.hom = X.hom), f = homMk g

                      The forgetful functor mapping an arrow to its domain.

                      Equations
                        Instances For
                          @[simp]
                          theorem CategoryTheory.Over.forget_obj {T : Type u₁} [Category.{v₁, u₁} T] {X : T} {U : Over X} :
                          (forget X).obj U = U.left
                          @[simp]
                          theorem CategoryTheory.Over.forget_map {T : Type u₁} [Category.{v₁, u₁} T] {X : T} {U V : Over X} {f : U V} :
                          (forget X).map f = f.left

                          The natural cocone over the forgetful functor Over X ⥤ T with cocone point X.

                          Equations
                            Instances For
                              def CategoryTheory.Over.map {T : Type u₁} [Category.{v₁, u₁} T] {X Y : T} (f : X Y) :
                              Functor (Over X) (Over Y)

                              A morphism f : X ⟶ Y induces a functor Over X ⥤ Over Y in the obvious way.

                              Equations
                                Instances For
                                  @[simp]
                                  theorem CategoryTheory.Over.map_obj_left {T : Type u₁} [Category.{v₁, u₁} T] {X Y : T} {f : X Y} {U : Over X} :
                                  ((map f).obj U).left = U.left
                                  @[simp]
                                  theorem CategoryTheory.Over.map_obj_hom {T : Type u₁} [Category.{v₁, u₁} T] {X Y : T} {f : X Y} {U : Over X} :
                                  @[simp]
                                  theorem CategoryTheory.Over.map_map_left {T : Type u₁} [Category.{v₁, u₁} T] {X Y : T} {f : X Y} {U V : Over X} {g : U V} :
                                  ((map f).map g).left = g.left
                                  def CategoryTheory.Over.mapIso {T : Type u₁} [Category.{v₁, u₁} T] {X Y : T} (f : X Y) :

                                  If f is an isomorphism, map f is an equivalence of categories.

                                  Equations
                                    Instances For
                                      @[simp]
                                      theorem CategoryTheory.Over.mapIso_functor {T : Type u₁} [Category.{v₁, u₁} T] {X Y : T} (f : X Y) :
                                      @[simp]
                                      theorem CategoryTheory.Over.mapIso_inverse {T : Type u₁} [Category.{v₁, u₁} T] {X Y : T} (f : X Y) :

                                      This section proves various equalities between functors that demonstrate, for instance, that over categories assemble into a functor mapFunctor : T ⥤ Cat.

                                      These equalities between functors are then converted to natural isomorphisms using eqToIso. Such natural isomorphisms could be obtained directly using Iso.refl but this method will have better computational properties, when used, for instance, in developing the theory of Beck-Chevalley transformations.

                                      Mapping by the identity morphism is just the identity functor.

                                      The natural isomorphism arising from mapForget_eq.

                                      Equations
                                        Instances For
                                          theorem CategoryTheory.Over.mapForget_eq {T : Type u₁} [Category.{v₁, u₁} T] {X Y : T} (f : X Y) :
                                          (map f).comp (forget Y) = forget X

                                          Mapping by f and then forgetting is the same as forgetting.

                                          def CategoryTheory.Over.mapForget {T : Type u₁} [Category.{v₁, u₁} T] {X Y : T} (f : X Y) :

                                          The natural isomorphism arising from mapForget_eq.

                                          Equations
                                            Instances For
                                              @[simp]
                                              theorem CategoryTheory.Over.eqToHom_left {T : Type u₁} [Category.{v₁, u₁} T] {X : T} {U V : Over X} (e : U = V) :
                                              theorem CategoryTheory.Over.mapComp_eq {T : Type u₁} [Category.{v₁, u₁} T] {X Y Z : T} (f : X Y) (g : Y Z) :

                                              Mapping by the composite morphism f ≫ g is the same as mapping by f then by g.

                                              def CategoryTheory.Over.mapComp {T : Type u₁} [Category.{v₁, u₁} T] {X Y Z : T} (f : X Y) (g : Y Z) :

                                              The natural isomorphism arising from mapComp_eq.

                                              Equations
                                                Instances For
                                                  @[simp]
                                                  theorem CategoryTheory.Over.mapComp_inv_app_left {T : Type u₁} [Category.{v₁, u₁} T] {X Y Z : T} (f : X Y) (g : Y Z) (X✝ : Over X) :
                                                  @[simp]
                                                  theorem CategoryTheory.Over.mapComp_hom_app_left {T : Type u₁} [Category.{v₁, u₁} T] {X Y Z : T} (f : X Y) (g : Y Z) (X✝ : Over X) :
                                                  def CategoryTheory.Over.mapCongr {T : Type u₁} [Category.{v₁, u₁} T] {X Y : T} (f g : X Y) (h : f = g) :
                                                  map f map g

                                                  If f = g, then map f is naturally isomorphic to map g.

                                                  Equations
                                                    Instances For
                                                      @[simp]
                                                      theorem CategoryTheory.Over.mapCongr_inv_app_left {T : Type u₁} [Category.{v₁, u₁} T] {X Y : T} (f g : X Y) (h : f = g) (X✝ : Over X) :
                                                      @[simp]
                                                      theorem CategoryTheory.Over.mapCongr_hom_app_left {T : Type u₁} [Category.{v₁, u₁} T] {X Y : T} (f g : X Y) (h : f = g) (X✝ : Over X) :
                                                      @[simp]
                                                      theorem CategoryTheory.Over.mapCongr_rfl {T : Type u₁} [Category.{v₁, u₁} T] {X Y : T} (f : X Y) :
                                                      mapCongr f f = Iso.refl (map f)

                                                      The functor defined by the over categories

                                                      Equations
                                                        Instances For
                                                          @[simp]
                                                          theorem CategoryTheory.Over.mapFunctor_map (T : Type u₁) [Category.{v₁, u₁} T] {X✝ Y✝ : T} (f : X✝ Y✝) :

                                                          The identity over X is terminal.

                                                          Equations
                                                            Instances For
                                                              theorem CategoryTheory.Over.epi_of_epi_left {T : Type u₁} [Category.{v₁, u₁} T] {X : T} {f g : Over X} (k : f g) [hk : Epi k.left] :
                                                              Epi k

                                                              If k.left is an epimorphism, then k is an epimorphism. In other words, Over.forget X reflects epimorphisms. The converse does not hold without additional assumptions on the underlying category, see CategoryTheory.Over.epi_left_of_epi.

                                                              instance CategoryTheory.Over.epi_homMk {T : Type u₁} [Category.{v₁, u₁} T] {X : T} {U V : Over X} {f : U.left V.left} [Epi f] (w : CategoryStruct.comp f V.hom = U.hom) :
                                                              Epi (homMk f w)
                                                              theorem CategoryTheory.Over.mono_of_mono_left {T : Type u₁} [Category.{v₁, u₁} T] {X : T} {f g : Over X} (k : f g) [hk : Mono k.left] :

                                                              If k.left is a monomorphism, then k is a monomorphism. In other words, Over.forget X reflects monomorphisms. The converse of CategoryTheory.Over.mono_left_of_mono.

                                                              This lemma is not an instance, to avoid loops in type class inference.

                                                              instance CategoryTheory.Over.mono_homMk {T : Type u₁} [Category.{v₁, u₁} T] {X : T} {U V : Over X} {f : U.left V.left} [Mono f] (w : CategoryStruct.comp f V.hom = U.hom) :
                                                              Mono (homMk f w)
                                                              instance CategoryTheory.Over.mono_left_of_mono {T : Type u₁} [Category.{v₁, u₁} T] {X : T} {f g : Over X} (k : f g) [Mono k] :

                                                              If k is a monomorphism, then k.left is a monomorphism. In other words, Over.forget X preserves monomorphisms. The converse of CategoryTheory.Over.mono_of_mono_left.

                                                              Given f : Y ⟶ X, this is the obvious functor from (T/X)/f to T/Y

                                                              Equations
                                                                Instances For
                                                                  @[simp]
                                                                  theorem CategoryTheory.Over.iteratedSliceForward_map {T : Type u₁} [Category.{v₁, u₁} T] {X : T} (f : Over X) {X✝ Y✝ : Over f} (κ : X✝ Y✝) :

                                                                  Given f : Y ⟶ X, this is the obvious functor from T/Y to (T/X)/f

                                                                  Equations
                                                                    Instances For
                                                                      @[simp]
                                                                      theorem CategoryTheory.Over.iteratedSliceBackward_map {T : Type u₁} [Category.{v₁, u₁} T] {X : T} (f : Over X) {X✝ Y✝ : Over f.left} (α : X✝ Y✝) :

                                                                      Given f : Y ⟶ X, we have an equivalence between (T/X)/f and T/Y

                                                                      Equations
                                                                        Instances For

                                                                          The naturality of the iterated slice equivalence up to isomorphism.

                                                                          Equations
                                                                            Instances For

                                                                              The natural isomorphism relating the functor Over.map p to the functor Over.map p.left, mediated by the underlying functor of the iterated slice equivalence. Note that iteratedSliceForward can in fact be considered as a natural transformation from the 2-functor Over (C := Over X) : Over X ⥤ Cat to the composite 2-functor forget X ⋙ Over : Over X ⥤ Cat, and the naturality isormphism is then given by iteratedSliceEquivOverMapIso.

                                                                              Equations
                                                                                Instances For
                                                                                  def CategoryTheory.Over.post {T : Type u₁} [Category.{v₁, u₁} T] {D : Type u₂} [Category.{v₂, u₂} D] {X : T} (F : Functor T D) :
                                                                                  Functor (Over X) (Over (F.obj X))

                                                                                  A functor F : T ⥤ D induces a functor Over X ⥤ Over (F.obj X) in the obvious way.

                                                                                  Equations
                                                                                    Instances For
                                                                                      @[simp]
                                                                                      theorem CategoryTheory.Over.post_map {T : Type u₁} [Category.{v₁, u₁} T] {D : Type u₂} [Category.{v₂, u₂} D] {X : T} (F : Functor T D) {X✝ Y✝ : Over X} (f : X✝ Y✝) :
                                                                                      (post F).map f = homMk (F.map f.left)
                                                                                      @[simp]
                                                                                      theorem CategoryTheory.Over.post_obj {T : Type u₁} [Category.{v₁, u₁} T] {D : Type u₂} [Category.{v₂, u₂} D] {X : T} (F : Functor T D) (Y : Over X) :
                                                                                      (post F).obj Y = mk (F.map Y.hom)
                                                                                      theorem CategoryTheory.Over.post_comp {T : Type u₁} [Category.{v₁, u₁} T] {D : Type u₂} [Category.{v₂, u₂} D] {X : T} {E : Type u_1} [Category.{v_1, u_1} E] (F : Functor T D) (G : Functor D E) :
                                                                                      post (F.comp G) = (post F).comp (post G)
                                                                                      def CategoryTheory.Over.postComp {T : Type u₁} [Category.{v₁, u₁} T] {D : Type u₂} [Category.{v₂, u₂} D] {X : T} {E : Type u_1} [Category.{v_1, u_1} E] (F : Functor T D) (G : Functor D E) :
                                                                                      post (F.comp G) (post F).comp (post G)

                                                                                      post (F ⋙ G) is isomorphic (actually equal) to post F ⋙ post G.

                                                                                      Equations
                                                                                        Instances For
                                                                                          @[simp]
                                                                                          theorem CategoryTheory.Over.postComp_hom_app_left {T : Type u₁} [Category.{v₁, u₁} T] {D : Type u₂} [Category.{v₂, u₂} D] {X : T} {E : Type u_1} [Category.{v_1, u_1} E] (F : Functor T D) (G : Functor D E) (X✝ : Over X) :
                                                                                          ((postComp F G).hom.app X✝).left = CategoryStruct.id (G.obj (F.obj X✝.left))
                                                                                          @[simp]
                                                                                          theorem CategoryTheory.Over.postComp_inv_app_left {T : Type u₁} [Category.{v₁, u₁} T] {D : Type u₂} [Category.{v₂, u₂} D] {X : T} {E : Type u_1} [Category.{v_1, u_1} E] (F : Functor T D) (G : Functor D E) (X✝ : Over X) :
                                                                                          ((postComp F G).inv.app X✝).left = CategoryStruct.id (G.obj (F.obj X✝.left))
                                                                                          def CategoryTheory.Over.postMap {T : Type u₁} [Category.{v₁, u₁} T] {D : Type u₂} [Category.{v₂, u₂} D] {X : T} {F G : Functor T D} (e : F G) :
                                                                                          (post F).comp (map (e.app X)) post G

                                                                                          A natural transformation F ⟶ G induces a natural transformation on Over X up to Over.map.

                                                                                          Equations
                                                                                            Instances For
                                                                                              @[simp]
                                                                                              theorem CategoryTheory.Over.postMap_app {T : Type u₁} [Category.{v₁, u₁} T] {D : Type u₂} [Category.{v₂, u₂} D] {X : T} {F G : Functor T D} (e : F G) (Y : Over X) :
                                                                                              (postMap e).app Y = homMk (e.app Y.left)
                                                                                              def CategoryTheory.Over.postCongr {T : Type u₁} [Category.{v₁, u₁} T] {D : Type u₂} [Category.{v₂, u₂} D] {X : T} {F G : Functor T D} (e : F G) :
                                                                                              (post F).comp (map (e.hom.app X)) post G

                                                                                              If F and G are naturally isomorphic, then Over.post F and Over.post G are also naturally isomorphic up to Over.map

                                                                                              Equations
                                                                                                Instances For
                                                                                                  @[simp]
                                                                                                  theorem CategoryTheory.Over.postCongr_hom_app_left {T : Type u₁} [Category.{v₁, u₁} T] {D : Type u₂} [Category.{v₂, u₂} D] {X : T} {F G : Functor T D} (e : F G) (X✝ : Over X) :
                                                                                                  ((postCongr e).hom.app X✝).left = e.hom.app X✝.left
                                                                                                  @[simp]
                                                                                                  theorem CategoryTheory.Over.postCongr_inv_app_left {T : Type u₁} [Category.{v₁, u₁} T] {D : Type u₂} [Category.{v₂, u₂} D] {X : T} {F G : Functor T D} (e : F G) (X✝ : Over X) :
                                                                                                  ((postCongr e).inv.app X✝).left = e.inv.app X✝.left

                                                                                                  If F is fully faithful, then so is Over.post F.

                                                                                                  Equations
                                                                                                    Instances For
                                                                                                      def CategoryTheory.Over.postAdjunctionRight {T : Type u₁} [Category.{v₁, u₁} T] {D : Type u₂} [Category.{v₂, u₂} D] {Y : D} {F : Functor T D} {G : Functor D T} (a : F G) :
                                                                                                      (post F).comp (map (a.counit.app Y)) post G

                                                                                                      If G is a right adjoint, then so is post G : Over Y ⥤ Over (G Y).

                                                                                                      If the left adjoint of G is F, then the left adjoint of post G is given by (X ⟶ G Y) ↦ (F X ⟶ F G Y ⟶ Y).

                                                                                                      Equations
                                                                                                        Instances For
                                                                                                          @[simp]
                                                                                                          theorem CategoryTheory.Over.postAdjunctionRight_unit_app {T : Type u₁} [Category.{v₁, u₁} T] {D : Type u₂} [Category.{v₂, u₂} D] {Y : D} {F : Functor T D} {G : Functor D T} (a : F G) (A : Over (G.obj Y)) :
                                                                                                          @[simp]
                                                                                                          theorem CategoryTheory.Over.postAdjunctionRight_counit_app {T : Type u₁} [Category.{v₁, u₁} T] {D : Type u₂} [Category.{v₂, u₂} D] {Y : D} {F : Functor T D} {G : Functor D T} (a : F G) (A : Over ((Functor.id D).obj Y)) :
                                                                                                          def CategoryTheory.Over.postEquiv {T : Type u₁} [Category.{v₁, u₁} T] {D : Type u₂} [Category.{v₂, u₂} D] (X : T) (F : T D) :

                                                                                                          An equivalence of categories induces an equivalence on over categories.

                                                                                                          Equations
                                                                                                            Instances For
                                                                                                              @[simp]
                                                                                                              theorem CategoryTheory.Over.postEquiv_counitIso {T : Type u₁} [Category.{v₁, u₁} T] {D : Type u₂} [Category.{v₂, u₂} D] (X : T) (F : T D) :
                                                                                                              (postEquiv X F).counitIso = NatIso.ofComponents (fun (A : Over (F.functor.obj X)) => isoMk (F.counitIso.app A.left) )
                                                                                                              @[simp]
                                                                                                              theorem CategoryTheory.Over.postEquiv_unitIso {T : Type u₁} [Category.{v₁, u₁} T] {D : Type u₂} [Category.{v₂, u₂} D] (X : T) (F : T D) :
                                                                                                              (postEquiv X F).unitIso = NatIso.ofComponents (fun (A : Over X) => isoMk (F.unitIso.app A.left) )

                                                                                                              post (Over.forget X) : Over f ⥤ Over (forget.obj f) is naturally isomorphic to the functor Over.iteratedSliceForward : Over f ⥤ Over f.left.

                                                                                                              Equations
                                                                                                                Instances For

                                                                                                                  If X : T is terminal, then the over category of X is equivalent to T.

                                                                                                                  Equations
                                                                                                                    Instances For
                                                                                                                      @[simp]
                                                                                                                      theorem CategoryTheory.Over.equivalenceOfIsTerminal_counitIso {T : Type u₁} [Category.{v₁, u₁} T] {X : T} (hX : Limits.IsTerminal X) :
                                                                                                                      (equivalenceOfIsTerminal hX).counitIso = NatIso.ofComponents (fun (x : T) => Iso.refl (({ obj := fun (Y : T) => mk (hX.from Y), map := fun {X_1 Y : T} (f : X_1 Y) => homMk f , map_id := , map_comp := }.comp (forget X)).obj x))
                                                                                                                      def CategoryTheory.Over.lift {T : Type u₁} [Category.{v₁, u₁} T] {J : Type u_1} [Category.{v_1, u_1} J] (D : Functor J T) {X : T} (s : D (Functor.const J).obj X) :

                                                                                                                      The induced functor to Over X from a functor J ⥤ C and natural maps sᵢ : X ⟶ Dᵢ. For the converse direction see CategoryTheory.WithTerminal.commaFromOver.

                                                                                                                      Equations
                                                                                                                        Instances For
                                                                                                                          @[simp]
                                                                                                                          theorem CategoryTheory.Over.lift_obj {T : Type u₁} [Category.{v₁, u₁} T] {J : Type u_1} [Category.{v_1, u_1} J] (D : Functor J T) {X : T} (s : D (Functor.const J).obj X) (j : J) :
                                                                                                                          (Over.lift D s).obj j = mk (s.app j)
                                                                                                                          @[simp]
                                                                                                                          theorem CategoryTheory.Over.lift_map {T : Type u₁} [Category.{v₁, u₁} T] {J : Type u_1} [Category.{v_1, u_1} J] (D : Functor J T) {X : T} (s : D (Functor.const J).obj X) {X✝ Y✝ : J} (f : X✝ Y✝) :
                                                                                                                          (Over.lift D s).map f = homMk (D.map f)
                                                                                                                          def CategoryTheory.Over.liftCone {T : Type u₁} [Category.{v₁, u₁} T] {J : Type u_1} [Category.{v_1, u_1} J] (D : Functor J T) {X : T} (s : D (Functor.const J).obj X) (c : Limits.Cone D) (p : c.pt X) (hp : ∀ (j : J), CategoryStruct.comp (c.π.app j) (s.app j) = p) :

                                                                                                                          The induced cone on Over X on the lifted functor.

                                                                                                                          Equations
                                                                                                                            Instances For
                                                                                                                              @[simp]
                                                                                                                              theorem CategoryTheory.Over.liftCone_π_app {T : Type u₁} [Category.{v₁, u₁} T] {J : Type u_1} [Category.{v_1, u_1} J] (D : Functor J T) {X : T} (s : D (Functor.const J).obj X) (c : Limits.Cone D) (p : c.pt X) (hp : ∀ (j : J), CategoryStruct.comp (c.π.app j) (s.app j) = p) (j : J) :
                                                                                                                              (liftCone D s c p hp).π.app j = homMk (c.π.app j)
                                                                                                                              @[simp]
                                                                                                                              theorem CategoryTheory.Over.liftCone_pt {T : Type u₁} [Category.{v₁, u₁} T] {J : Type u_1} [Category.{v_1, u_1} J] (D : Functor J T) {X : T} (s : D (Functor.const J).obj X) (c : Limits.Cone D) (p : c.pt X) (hp : ∀ (j : J), CategoryStruct.comp (c.π.app j) (s.app j) = p) :
                                                                                                                              (liftCone D s c p hp).pt = mk p
                                                                                                                              def CategoryTheory.Over.isLimitLiftCone {T : Type u₁} [Category.{v₁, u₁} T] {J : Type u_1} [Category.{v_1, u_1} J] [Nonempty J] (D : Functor J T) {X : T} (s : D (Functor.const J).obj X) (c : Limits.Cone D) (p : c.pt X) (hp : ∀ (j : J), CategoryStruct.comp (c.π.app j) (s.app j) = p) (hc : Limits.IsLimit c) :

                                                                                                                              The lifted cone on Over X is a limit cone if the original cone was limiting and J is nonempty.

                                                                                                                              Equations
                                                                                                                                Instances For
                                                                                                                                  def CategoryTheory.Limits.Cone.overPost {J : Type u_1} {C : Type u_2} [Category.{v_1, u_1} J] [Category.{v_2, u_2} C] {D : Functor J C} (c : Cone D) (j : J) :

                                                                                                                                  Restrict a cone to the diagram over j. This preserves being limiting if the forgetful functor Over j ⥤ J is initial (see CategoryTheory.Limits.IsLimit.overPost).

                                                                                                                                  Equations
                                                                                                                                    Instances For
                                                                                                                                      @[simp]
                                                                                                                                      theorem CategoryTheory.Limits.Cone.overPost_π_app {J : Type u_1} {C : Type u_2} [Category.{v_1, u_1} J] [Category.{v_2, u_2} C] {D : Functor J C} (c : Cone D) (j : J) (k : Over j) :
                                                                                                                                      (c.overPost j).π.app k = Over.homMk (c.π.app k.left)
                                                                                                                                      @[simp]
                                                                                                                                      theorem CategoryTheory.Limits.Cone.overPost_pt {J : Type u_1} {C : Type u_2} [Category.{v_1, u_1} J] [Category.{v_2, u_2} C] {D : Functor J C} (c : Cone D) (j : J) :
                                                                                                                                      (c.overPost j).pt = Over.mk (c.π.app j)

                                                                                                                                      Reinterpreting an F-costructured arrow F.obj d ⟶ X as an arrow over X induces a functor CostructuredArrow F X ⥤ Over X.

                                                                                                                                      Equations
                                                                                                                                        Instances For
                                                                                                                                          @[simp]
                                                                                                                                          theorem CategoryTheory.CostructuredArrow.toOver_obj_hom {T : Type u₁} [Category.{v₁, u₁} T] {D : Type u₂} [Category.{v₂, u₂} D] (F : Functor D T) (X : T) (X✝ : Comma (F.comp (Functor.id T)) (Functor.fromPUnit X)) :
                                                                                                                                          ((toOver F X).obj X✝).hom = X✝.hom
                                                                                                                                          @[simp]
                                                                                                                                          theorem CategoryTheory.CostructuredArrow.toOver_map_left {T : Type u₁} [Category.{v₁, u₁} T] {D : Type u₂} [Category.{v₂, u₂} D] (F : Functor D T) (X : T) {X✝ Y✝ : Comma (F.comp (Functor.id T)) (Functor.fromPUnit X)} (f : X✝ Y✝) :
                                                                                                                                          ((toOver F X).map f).left = F.map f.left
                                                                                                                                          @[simp]
                                                                                                                                          theorem CategoryTheory.CostructuredArrow.toOver_map_right {T : Type u₁} [Category.{v₁, u₁} T] {D : Type u₂} [Category.{v₂, u₂} D] (F : Functor D T) (X : T) {X✝ Y✝ : Comma (F.comp (Functor.id T)) (Functor.fromPUnit X)} (f : X✝ Y✝) :
                                                                                                                                          @[simp]
                                                                                                                                          theorem CategoryTheory.CostructuredArrow.toOver_obj_left {T : Type u₁} [Category.{v₁, u₁} T] {D : Type u₂} [Category.{v₂, u₂} D] (F : Functor D T) (X : T) (X✝ : Comma (F.comp (Functor.id T)) (Functor.fromPUnit X)) :
                                                                                                                                          ((toOver F X).obj X✝).left = F.obj X✝.left

                                                                                                                                          An equivalence F induces an equivalence CostructuredArrow F X ≌ Over X.

                                                                                                                                          @[simp]
                                                                                                                                          theorem CategoryTheory.CostructuredArrow.costructuredArrowToOverEquivalence.functor_map {T : Type u₁} [Category.{v₁, u₁} T] {D : Type u₂} [Category.{v₂, u₂} D] (F : Functor D T) {X : T} (Y : Over X) {X✝ Y✝ : CostructuredArrow (toOver F X) Y} (f : X✝ Y✝) :
                                                                                                                                          (functor F Y).map f = homMk f.left.left
                                                                                                                                          @[simp]
                                                                                                                                          theorem CategoryTheory.CostructuredArrow.costructuredArrowToOverEquivalence.inverse_map {T : Type u₁} [Category.{v₁, u₁} T] {D : Type u₂} [Category.{v₂, u₂} D] (F : Functor D T) {X : T} (Y : Over X) {X✝ Y✝ : CostructuredArrow F Y.left} (f : X✝ Y✝) :
                                                                                                                                          (inverse F Y).map f = homMk (homMk f.left )

                                                                                                                                          A category of costructured arrows for a functor toOver F X identifies to a category of costructured arrows for F.

                                                                                                                                          Equations
                                                                                                                                            Instances For
                                                                                                                                              def CategoryTheory.Under {T : Type u₁} [Category.{v₁, u₁} T] (X : T) :
                                                                                                                                              Type (max u₁ v₁)

                                                                                                                                              The under category has as objects arrows with domain X and as morphisms commutative triangles.

                                                                                                                                              Equations
                                                                                                                                                Instances For
                                                                                                                                                  theorem CategoryTheory.Under.UnderMorphism.ext {T : Type u₁} [Category.{v₁, u₁} T] {X : T} {U V : Under X} {f g : U V} (h : f.right = g.right) :
                                                                                                                                                  f = g
                                                                                                                                                  theorem CategoryTheory.Under.UnderMorphism.ext_iff {T : Type u₁} [Category.{v₁, u₁} T] {X : T} {U V : Under X} {f g : U V} :
                                                                                                                                                  f = g f.right = g.right
                                                                                                                                                  @[simp]
                                                                                                                                                  theorem CategoryTheory.Under.under_left {T : Type u₁} [Category.{v₁, u₁} T] {X : T} (U : Under X) :
                                                                                                                                                  U.left = { as := PUnit.unit }
                                                                                                                                                  @[simp]
                                                                                                                                                  theorem CategoryTheory.Under.comp_right {T : Type u₁} [Category.{v₁, u₁} T] {X : T} (a b c : Under X) (f : a b) (g : b c) :
                                                                                                                                                  @[simp]
                                                                                                                                                  theorem CategoryTheory.Under.w {T : Type u₁} [Category.{v₁, u₁} T] {X : T} {A B : Under X} (f : A B) :
                                                                                                                                                  @[simp]
                                                                                                                                                  theorem CategoryTheory.Under.w_assoc {T : Type u₁} [Category.{v₁, u₁} T] {X : T} {A B : Under X} (f : A B) {Z : T} (h : B.right Z) :
                                                                                                                                                  def CategoryTheory.Under.mk {T : Type u₁} [Category.{v₁, u₁} T] {X Y : T} (f : X Y) :

                                                                                                                                                  To give an object in the under category, it suffices to give an arrow with domain X.

                                                                                                                                                  Equations
                                                                                                                                                    Instances For
                                                                                                                                                      @[simp]
                                                                                                                                                      theorem CategoryTheory.Under.mk_right {T : Type u₁} [Category.{v₁, u₁} T] {X Y : T} (f : X Y) :
                                                                                                                                                      (mk f).right = Y
                                                                                                                                                      @[simp]
                                                                                                                                                      theorem CategoryTheory.Under.mk_hom {T : Type u₁} [Category.{v₁, u₁} T] {X Y : T} (f : X Y) :
                                                                                                                                                      (mk f).hom = f
                                                                                                                                                      def CategoryTheory.Under.homMk {T : Type u₁} [Category.{v₁, u₁} T] {X : T} {U V : Under X} (f : U.right V.right) (w : CategoryStruct.comp U.hom f = V.hom := by cat_disch) :
                                                                                                                                                      U V

                                                                                                                                                      To give a morphism in the under category, it suffices to give a morphism fitting in a commutative triangle.

                                                                                                                                                      Equations
                                                                                                                                                        Instances For
                                                                                                                                                          @[simp]
                                                                                                                                                          theorem CategoryTheory.Under.homMk_right {T : Type u₁} [Category.{v₁, u₁} T] {X : T} {U V : Under X} (f : U.right V.right) (w : CategoryStruct.comp U.hom f = V.hom := by cat_disch) :
                                                                                                                                                          (homMk f w).right = f
                                                                                                                                                          @[simp]
                                                                                                                                                          theorem CategoryTheory.Under.homMk_eta {T : Type u₁} [Category.{v₁, u₁} T] {X : T} {U V : Under X} (f : U V) (h : CategoryStruct.comp U.hom f.right = V.hom) :
                                                                                                                                                          homMk f.right h = f
                                                                                                                                                          theorem CategoryTheory.Under.homMk_comp {T : Type u₁} [Category.{v₁, u₁} T] {X : T} {U V W : Under X} (f : U.right V.right) (g : V.right W.right) (w_f : CategoryStruct.comp U.hom f = V.hom) (w_g : CategoryStruct.comp V.hom g = W.hom) :

                                                                                                                                                          This is useful when homMk (· ≫ ·) appears under Functor.map or a natural equivalence.

                                                                                                                                                          def CategoryTheory.Under.isoMk {T : Type u₁} [Category.{v₁, u₁} T] {X : T} {f g : Under X} (hr : f.right g.right) (hw : CategoryStruct.comp f.hom hr.hom = g.hom := by cat_disch) :
                                                                                                                                                          f g

                                                                                                                                                          Construct an isomorphism in the over category given isomorphisms of the objects whose forward direction gives a commutative triangle.

                                                                                                                                                          Equations
                                                                                                                                                            Instances For
                                                                                                                                                              @[simp]
                                                                                                                                                              theorem CategoryTheory.Under.isoMk_hom_right {T : Type u₁} [Category.{v₁, u₁} T] {X : T} {f g : Under X} (hr : f.right g.right) (hw : CategoryStruct.comp f.hom hr.hom = g.hom) :
                                                                                                                                                              (isoMk hr hw).hom.right = hr.hom
                                                                                                                                                              @[simp]
                                                                                                                                                              theorem CategoryTheory.Under.isoMk_inv_right {T : Type u₁} [Category.{v₁, u₁} T] {X : T} {f g : Under X} (hr : f.right g.right) (hw : CategoryStruct.comp f.hom hr.hom = g.hom) :
                                                                                                                                                              (isoMk hr hw).inv.right = hr.inv
                                                                                                                                                              theorem CategoryTheory.Under.forall_iff {T : Type u₁} [Category.{v₁, u₁} T] {X : T} (P : Under XProp) :
                                                                                                                                                              (∀ (Y : Under X), P Y) ∀ (Y : T) (f : X Y), P (mk f)
                                                                                                                                                              theorem CategoryTheory.Under.mk_surjective {T : Type u₁} [Category.{v₁, u₁} T] {S : T} (X : Under S) :
                                                                                                                                                              ∃ (Y : T) (f : S Y), mk f = X
                                                                                                                                                              theorem CategoryTheory.Under.homMk_surjective {T : Type u₁} [Category.{v₁, u₁} T] {S : T} {X Y : Under S} (f : X Y) :
                                                                                                                                                              ∃ (g : X.right Y.right) (hg : CategoryStruct.comp X.hom g = Y.hom), homMk g = f

                                                                                                                                                              The forgetful functor mapping an arrow to its domain.

                                                                                                                                                              Equations
                                                                                                                                                                Instances For
                                                                                                                                                                  @[simp]
                                                                                                                                                                  theorem CategoryTheory.Under.forget_obj {T : Type u₁} [Category.{v₁, u₁} T] {X : T} {U : Under X} :
                                                                                                                                                                  (forget X).obj U = U.right
                                                                                                                                                                  @[simp]
                                                                                                                                                                  theorem CategoryTheory.Under.forget_map {T : Type u₁} [Category.{v₁, u₁} T] {X : T} {U V : Under X} {f : U V} :
                                                                                                                                                                  (forget X).map f = f.right

                                                                                                                                                                  The natural cone over the forgetful functor Under X ⥤ T with cone point X.

                                                                                                                                                                  Equations
                                                                                                                                                                    Instances For
                                                                                                                                                                      def CategoryTheory.Under.map {T : Type u₁} [Category.{v₁, u₁} T] {X Y : T} (f : X Y) :

                                                                                                                                                                      A morphism X ⟶ Y induces a functor Under Y ⥤ Under X in the obvious way.

                                                                                                                                                                      Equations
                                                                                                                                                                        Instances For
                                                                                                                                                                          @[simp]
                                                                                                                                                                          theorem CategoryTheory.Under.map_obj_right {T : Type u₁} [Category.{v₁, u₁} T] {X Y : T} {f : X Y} {U : Under Y} :
                                                                                                                                                                          ((map f).obj U).right = U.right
                                                                                                                                                                          @[simp]
                                                                                                                                                                          theorem CategoryTheory.Under.map_obj_hom {T : Type u₁} [Category.{v₁, u₁} T] {X Y : T} {f : X Y} {U : Under Y} :
                                                                                                                                                                          @[simp]
                                                                                                                                                                          theorem CategoryTheory.Under.map_map_right {T : Type u₁} [Category.{v₁, u₁} T] {X Y : T} {f : X Y} {U V : Under Y} {g : U V} :
                                                                                                                                                                          ((map f).map g).right = g.right
                                                                                                                                                                          def CategoryTheory.Under.mapIso {T : Type u₁} [Category.{v₁, u₁} T] {X Y : T} (f : X Y) :

                                                                                                                                                                          If f is an isomorphism, map f is an equivalence of categories.

                                                                                                                                                                          Equations
                                                                                                                                                                            Instances For
                                                                                                                                                                              @[simp]
                                                                                                                                                                              theorem CategoryTheory.Under.mapIso_functor {T : Type u₁} [Category.{v₁, u₁} T] {X Y : T} (f : X Y) :
                                                                                                                                                                              @[simp]
                                                                                                                                                                              theorem CategoryTheory.Under.mapIso_inverse {T : Type u₁} [Category.{v₁, u₁} T] {X Y : T} (f : X Y) :

                                                                                                                                                                              This section proves various equalities between functors that demonstrate, for instance, that under categories assemble into a functor mapFunctor : Tᵒᵖ ⥤ Cat.

                                                                                                                                                                              Mapping by the identity morphism is just the identity functor.

                                                                                                                                                                              Mapping by the identity morphism is just the identity functor.

                                                                                                                                                                              Equations
                                                                                                                                                                                Instances For
                                                                                                                                                                                  theorem CategoryTheory.Under.mapForget_eq {T : Type u₁} [Category.{v₁, u₁} T] {X Y : T} (f : X Y) :
                                                                                                                                                                                  (map f).comp (forget X) = forget Y

                                                                                                                                                                                  Mapping by f and then forgetting is the same as forgetting.

                                                                                                                                                                                  def CategoryTheory.Under.mapForget {T : Type u₁} [Category.{v₁, u₁} T] {X Y : T} (f : X Y) :

                                                                                                                                                                                  The natural isomorphism arising from mapForget_eq.

                                                                                                                                                                                  Equations
                                                                                                                                                                                    Instances For
                                                                                                                                                                                      @[simp]
                                                                                                                                                                                      theorem CategoryTheory.Under.eqToHom_right {T : Type u₁} [Category.{v₁, u₁} T] {X : T} {U V : Under X} (e : U = V) :
                                                                                                                                                                                      theorem CategoryTheory.Under.mapComp_eq {T : Type u₁} [Category.{v₁, u₁} T] {X Y Z : T} (f : X Y) (g : Y Z) :

                                                                                                                                                                                      Mapping by the composite morphism f ≫ g is the same as mapping by f then by g.

                                                                                                                                                                                      def CategoryTheory.Under.mapComp {T : Type u₁} [Category.{v₁, u₁} T] {X Y Z : T} (f : X Y) (g : Y Z) :

                                                                                                                                                                                      The natural isomorphism arising from mapComp_eq.

                                                                                                                                                                                      Equations
                                                                                                                                                                                        Instances For
                                                                                                                                                                                          @[simp]
                                                                                                                                                                                          theorem CategoryTheory.Under.mapComp_hom {T : Type u₁} [Category.{v₁, u₁} T] {X Y Z : T} (f : X Y) (g : Y Z) :
                                                                                                                                                                                          (mapComp f g).hom = eqToHom
                                                                                                                                                                                          @[simp]
                                                                                                                                                                                          theorem CategoryTheory.Under.mapComp_inv {T : Type u₁} [Category.{v₁, u₁} T] {X Y Z : T} (f : X Y) (g : Y Z) :
                                                                                                                                                                                          (mapComp f g).inv = eqToHom
                                                                                                                                                                                          def CategoryTheory.Under.mapCongr {T : Type u₁} [Category.{v₁, u₁} T] {X Y : T} (f g : X Y) (h : f = g) :
                                                                                                                                                                                          map f map g

                                                                                                                                                                                          If f = g, then map f is naturally isomorphic to map g.

                                                                                                                                                                                          Equations
                                                                                                                                                                                            Instances For
                                                                                                                                                                                              @[simp]
                                                                                                                                                                                              theorem CategoryTheory.Under.mapCongr_hom_app {T : Type u₁} [Category.{v₁, u₁} T] {X Y : T} (f g : X Y) (h : f = g) (X✝ : Under Y) :
                                                                                                                                                                                              (mapCongr f g h).hom.app X✝ = eqToHom
                                                                                                                                                                                              @[simp]
                                                                                                                                                                                              theorem CategoryTheory.Under.mapCongr_inv_app {T : Type u₁} [Category.{v₁, u₁} T] {X Y : T} (f g : X Y) (h : f = g) (X✝ : Under Y) :
                                                                                                                                                                                              (mapCongr f g h).inv.app X✝ = eqToHom

                                                                                                                                                                                              The functor defined by the under categories

                                                                                                                                                                                              Equations
                                                                                                                                                                                                Instances For
                                                                                                                                                                                                  @[simp]
                                                                                                                                                                                                  theorem CategoryTheory.Under.mapFunctor_map (T : Type u₁) [Category.{v₁, u₁} T] {X✝ Y✝ : Tᵒᵖ} (f : X✝ Y✝) :

                                                                                                                                                                                                  The identity under X is initial.

                                                                                                                                                                                                  Equations
                                                                                                                                                                                                    Instances For
                                                                                                                                                                                                      theorem CategoryTheory.Under.mono_of_mono_right {T : Type u₁} [Category.{v₁, u₁} T] {X : T} {f g : Under X} (k : f g) [hk : Mono k.right] :

                                                                                                                                                                                                      If k.right is a monomorphism, then k is a monomorphism. In other words, Under.forget X reflects epimorphisms. The converse does not hold without additional assumptions on the underlying category, see CategoryTheory.Under.mono_right_of_mono.

                                                                                                                                                                                                      instance CategoryTheory.Under.mono_homMk {T : Type u₁} [Category.{v₁, u₁} T] {X : T} {U V : Under X} {f : U.right V.right} [Mono f] (w : CategoryStruct.comp U.hom f = V.hom) :
                                                                                                                                                                                                      Mono (homMk f w)
                                                                                                                                                                                                      theorem CategoryTheory.Under.epi_of_epi_right {T : Type u₁} [Category.{v₁, u₁} T] {X : T} {f g : Under X} (k : f g) [hk : Epi k.right] :
                                                                                                                                                                                                      Epi k

                                                                                                                                                                                                      If k.right is an epimorphism, then k is an epimorphism. In other words, Under.forget X reflects epimorphisms. The converse of CategoryTheory.Under.epi_right_of_epi.

                                                                                                                                                                                                      This lemma is not an instance, to avoid loops in type class inference.

                                                                                                                                                                                                      instance CategoryTheory.Under.epi_homMk {T : Type u₁} [Category.{v₁, u₁} T] {X : T} {U V : Under X} {f : U.right V.right} [Epi f] (w : CategoryStruct.comp U.hom f = V.hom) :
                                                                                                                                                                                                      Epi (homMk f w)
                                                                                                                                                                                                      instance CategoryTheory.Under.epi_right_of_epi {T : Type u₁} [Category.{v₁, u₁} T] {X : T} {f g : Under X} (k : f g) [Epi k] :

                                                                                                                                                                                                      If k is an epimorphism, then k.right is an epimorphism. In other words, Under.forget X preserves epimorphisms. The converse of CategoryTheory.under.epi_of_epi_right.

                                                                                                                                                                                                      def CategoryTheory.Under.post {T : Type u₁} [Category.{v₁, u₁} T] {D : Type u₂} [Category.{v₂, u₂} D] {X : T} (F : Functor T D) :
                                                                                                                                                                                                      Functor (Under X) (Under (F.obj X))

                                                                                                                                                                                                      A functor F : T ⥤ D induces a functor Under X ⥤ Under (F.obj X) in the obvious way.

                                                                                                                                                                                                      Equations
                                                                                                                                                                                                        Instances For
                                                                                                                                                                                                          @[simp]
                                                                                                                                                                                                          theorem CategoryTheory.Under.post_map {T : Type u₁} [Category.{v₁, u₁} T] {D : Type u₂} [Category.{v₂, u₂} D] {X : T} (F : Functor T D) {X✝ Y✝ : Under X} (f : X✝ Y✝) :
                                                                                                                                                                                                          (post F).map f = homMk (F.map f.right)
                                                                                                                                                                                                          @[simp]
                                                                                                                                                                                                          theorem CategoryTheory.Under.post_obj {T : Type u₁} [Category.{v₁, u₁} T] {D : Type u₂} [Category.{v₂, u₂} D] {X : T} (F : Functor T D) (Y : Under X) :
                                                                                                                                                                                                          (post F).obj Y = mk (F.map Y.hom)
                                                                                                                                                                                                          theorem CategoryTheory.Under.post_comp {T : Type u₁} [Category.{v₁, u₁} T] {D : Type u₂} [Category.{v₂, u₂} D] {X : T} {E : Type u_1} [Category.{v_1, u_1} E] (F : Functor T D) (G : Functor D E) :
                                                                                                                                                                                                          post (F.comp G) = (post F).comp (post G)
                                                                                                                                                                                                          def CategoryTheory.Under.postComp {T : Type u₁} [Category.{v₁, u₁} T] {D : Type u₂} [Category.{v₂, u₂} D] {X : T} {E : Type u_1} [Category.{v_1, u_1} E] (F : Functor T D) (G : Functor D E) :
                                                                                                                                                                                                          post (F.comp G) (post F).comp (post G)

                                                                                                                                                                                                          post (F ⋙ G) is isomorphic (actually equal) to post F ⋙ post G.

                                                                                                                                                                                                          Equations
                                                                                                                                                                                                            Instances For
                                                                                                                                                                                                              @[simp]
                                                                                                                                                                                                              theorem CategoryTheory.Under.postComp_hom_app_right {T : Type u₁} [Category.{v₁, u₁} T] {D : Type u₂} [Category.{v₂, u₂} D] {X : T} {E : Type u_1} [Category.{v_1, u_1} E] (F : Functor T D) (G : Functor D E) (X✝ : Under X) :
                                                                                                                                                                                                              ((postComp F G).hom.app X✝).right = CategoryStruct.id (G.obj (F.obj X✝.right))
                                                                                                                                                                                                              @[simp]
                                                                                                                                                                                                              theorem CategoryTheory.Under.postComp_inv_app_right {T : Type u₁} [Category.{v₁, u₁} T] {D : Type u₂} [Category.{v₂, u₂} D] {X : T} {E : Type u_1} [Category.{v_1, u_1} E] (F : Functor T D) (G : Functor D E) (X✝ : Under X) :
                                                                                                                                                                                                              ((postComp F G).inv.app X✝).right = CategoryStruct.id (G.obj (F.obj X✝.right))
                                                                                                                                                                                                              def CategoryTheory.Under.postMap {T : Type u₁} [Category.{v₁, u₁} T] {D : Type u₂} [Category.{v₂, u₂} D] {X : T} {F G : Functor T D} (e : F G) :
                                                                                                                                                                                                              post F (post G).comp (map (e.app X))

                                                                                                                                                                                                              A natural transformation F ⟶ G induces a natural transformation on Under X up to Under.map.

                                                                                                                                                                                                              Equations
                                                                                                                                                                                                                Instances For
                                                                                                                                                                                                                  @[simp]
                                                                                                                                                                                                                  theorem CategoryTheory.Under.postMap_app {T : Type u₁} [Category.{v₁, u₁} T] {D : Type u₂} [Category.{v₂, u₂} D] {X : T} {F G : Functor T D} (e : F G) (Y : Under X) :
                                                                                                                                                                                                                  (postMap e).app Y = homMk (e.app Y.right)
                                                                                                                                                                                                                  def CategoryTheory.Under.postCongr {T : Type u₁} [Category.{v₁, u₁} T] {D : Type u₂} [Category.{v₂, u₂} D] {X : T} {F G : Functor T D} (e : F G) :
                                                                                                                                                                                                                  post F (post G).comp (map (e.hom.app X))

                                                                                                                                                                                                                  If F and G are naturally isomorphic, then Under.post F and Under.post G are also naturally isomorphic up to Under.map

                                                                                                                                                                                                                  Equations
                                                                                                                                                                                                                    Instances For
                                                                                                                                                                                                                      @[simp]
                                                                                                                                                                                                                      theorem CategoryTheory.Under.postCongr_hom_app_right {T : Type u₁} [Category.{v₁, u₁} T] {D : Type u₂} [Category.{v₂, u₂} D] {X : T} {F G : Functor T D} (e : F G) (X✝ : Under X) :
                                                                                                                                                                                                                      ((postCongr e).hom.app X✝).right = e.hom.app X✝.right
                                                                                                                                                                                                                      @[simp]
                                                                                                                                                                                                                      theorem CategoryTheory.Under.postCongr_inv_app_right {T : Type u₁} [Category.{v₁, u₁} T] {D : Type u₂} [Category.{v₂, u₂} D] {X : T} {F G : Functor T D} (e : F G) (X✝ : Under X) :
                                                                                                                                                                                                                      ((postCongr e).inv.app X✝).right = e.inv.app X✝.right

                                                                                                                                                                                                                      If F is fully faithful, then so is Under.post F.

                                                                                                                                                                                                                      Equations
                                                                                                                                                                                                                        Instances For
                                                                                                                                                                                                                          def CategoryTheory.Under.postAdjunctionLeft {T : Type u₁} [Category.{v₁, u₁} T] {D : Type u₂} [Category.{v₂, u₂} D] {X : T} {F : Functor T D} {G : Functor D T} (a : F G) :
                                                                                                                                                                                                                          post F (post G).comp (map (a.unit.app X))

                                                                                                                                                                                                                          If F is a left adjoint, then so is post F : Under X ⥤ Under (F X).

                                                                                                                                                                                                                          If the right adjoint of F is G, then the right adjoint of post F is given by (F X ⟶ Y) ↦ (X ⟶ G F X ⟶ G Y).

                                                                                                                                                                                                                          Equations
                                                                                                                                                                                                                            Instances For
                                                                                                                                                                                                                              @[simp]
                                                                                                                                                                                                                              theorem CategoryTheory.Under.postAdjunctionLeft_unit_app {T : Type u₁} [Category.{v₁, u₁} T] {D : Type u₂} [Category.{v₂, u₂} D] {X : T} {F : Functor T D} {G : Functor D T} (a : F G) (A : Under ((Functor.id T).obj X)) :
                                                                                                                                                                                                                              @[simp]
                                                                                                                                                                                                                              theorem CategoryTheory.Under.postAdjunctionLeft_counit_app {T : Type u₁} [Category.{v₁, u₁} T] {D : Type u₂} [Category.{v₂, u₂} D] {X : T} {F : Functor T D} {G : Functor D T} (a : F G) (A : Under (F.obj ((Functor.id T).obj X))) :
                                                                                                                                                                                                                              def CategoryTheory.Under.postEquiv {T : Type u₁} [Category.{v₁, u₁} T] {D : Type u₂} [Category.{v₂, u₂} D] (X : T) (F : T D) :

                                                                                                                                                                                                                              An equivalence of categories induces an equivalence on under categories.

                                                                                                                                                                                                                              Equations
                                                                                                                                                                                                                                Instances For
                                                                                                                                                                                                                                  @[simp]
                                                                                                                                                                                                                                  theorem CategoryTheory.Under.postEquiv_unitIso {T : Type u₁} [Category.{v₁, u₁} T] {D : Type u₂} [Category.{v₂, u₂} D] (X : T) (F : T D) :
                                                                                                                                                                                                                                  (postEquiv X F).unitIso = NatIso.ofComponents (fun (A : Under X) => isoMk (F.unitIso.app A.right) )

                                                                                                                                                                                                                                  If X : T is initial, then the under category of X is equivalent to T.

                                                                                                                                                                                                                                  Equations
                                                                                                                                                                                                                                    Instances For
                                                                                                                                                                                                                                      @[simp]
                                                                                                                                                                                                                                      theorem CategoryTheory.Under.equivalenceOfIsInitial_counitIso {T : Type u₁} [Category.{v₁, u₁} T] {X : T} (hX : Limits.IsInitial X) :
                                                                                                                                                                                                                                      (equivalenceOfIsInitial hX).counitIso = NatIso.ofComponents (fun (x : T) => Iso.refl (({ obj := fun (Y : T) => mk (hX.to Y), map := fun {X_1 Y : T} (f : X_1 Y) => homMk f , map_id := , map_comp := }.comp (forget X)).obj x))
                                                                                                                                                                                                                                      @[simp]
                                                                                                                                                                                                                                      theorem CategoryTheory.Under.equivalenceOfIsInitial_inverse_map {T : Type u₁} [Category.{v₁, u₁} T] {X : T} (hX : Limits.IsInitial X) {X✝ Y✝ : T} (f : X✝ Y✝) :
                                                                                                                                                                                                                                      def CategoryTheory.Under.lift {T : Type u₁} [Category.{v₁, u₁} T] {J : Type u_1} [Category.{v_1, u_1} J] (D : Functor J T) {X : T} (s : (Functor.const J).obj X D) :

                                                                                                                                                                                                                                      The induced functor to Under X from a functor J ⥤ C and natural maps sᵢ : X ⟶ Dᵢ.

                                                                                                                                                                                                                                      Equations
                                                                                                                                                                                                                                        Instances For
                                                                                                                                                                                                                                          @[simp]
                                                                                                                                                                                                                                          theorem CategoryTheory.Under.lift_map {T : Type u₁} [Category.{v₁, u₁} T] {J : Type u_1} [Category.{v_1, u_1} J] (D : Functor J T) {X : T} (s : (Functor.const J).obj X D) {X✝ Y✝ : J} (f : X✝ Y✝) :
                                                                                                                                                                                                                                          (Under.lift D s).map f = homMk (D.map f)
                                                                                                                                                                                                                                          @[simp]
                                                                                                                                                                                                                                          theorem CategoryTheory.Under.lift_obj {T : Type u₁} [Category.{v₁, u₁} T] {J : Type u_1} [Category.{v_1, u_1} J] (D : Functor J T) {X : T} (s : (Functor.const J).obj X D) (j : J) :
                                                                                                                                                                                                                                          (Under.lift D s).obj j = mk (s.app j)
                                                                                                                                                                                                                                          def CategoryTheory.Under.liftCocone {T : Type u₁} [Category.{v₁, u₁} T] {J : Type u_1} [Category.{v_1, u_1} J] (D : Functor J T) {X : T} (s : (Functor.const J).obj X D) (c : Limits.Cocone D) (p : X c.pt) (hp : ∀ (j : J), CategoryStruct.comp (s.app j) (c.ι.app j) = p) :

                                                                                                                                                                                                                                          The induced cocone on Under X from on the lifted functor.

                                                                                                                                                                                                                                          Equations
                                                                                                                                                                                                                                            Instances For
                                                                                                                                                                                                                                              @[simp]
                                                                                                                                                                                                                                              theorem CategoryTheory.Under.liftCocone_pt {T : Type u₁} [Category.{v₁, u₁} T] {J : Type u_1} [Category.{v_1, u_1} J] (D : Functor J T) {X : T} (s : (Functor.const J).obj X D) (c : Limits.Cocone D) (p : X c.pt) (hp : ∀ (j : J), CategoryStruct.comp (s.app j) (c.ι.app j) = p) :
                                                                                                                                                                                                                                              (liftCocone D s c p hp).pt = mk p
                                                                                                                                                                                                                                              @[simp]
                                                                                                                                                                                                                                              theorem CategoryTheory.Under.liftCocone_ι_app {T : Type u₁} [Category.{v₁, u₁} T] {J : Type u_1} [Category.{v_1, u_1} J] (D : Functor J T) {X : T} (s : (Functor.const J).obj X D) (c : Limits.Cocone D) (p : X c.pt) (hp : ∀ (j : J), CategoryStruct.comp (s.app j) (c.ι.app j) = p) (j : J) :
                                                                                                                                                                                                                                              (liftCocone D s c p hp).ι.app j = homMk (c.ι.app j)
                                                                                                                                                                                                                                              def CategoryTheory.Under.isColimitLiftCocone {T : Type u₁} [Category.{v₁, u₁} T] {J : Type u_1} [Category.{v_1, u_1} J] [Nonempty J] (D : Functor J T) {X : T} (s : (Functor.const J).obj X D) (c : Limits.Cocone D) (p : X c.pt) (hp : ∀ (j : J), CategoryStruct.comp (s.app j) (c.ι.app j) = p) (hc : Limits.IsColimit c) :

                                                                                                                                                                                                                                              The lifted cocone on Under X is a colimit cocone if the original cocone was colimiting and J is nonempty.

                                                                                                                                                                                                                                              Equations
                                                                                                                                                                                                                                                Instances For

                                                                                                                                                                                                                                                  Restrict a cocone to the diagram under j. This preserves being colimiting if the forgetful functor Over j ⥤ J is final (see CategoryTheory.Limits.IsColimit.underPost).

                                                                                                                                                                                                                                                  Equations
                                                                                                                                                                                                                                                    Instances For
                                                                                                                                                                                                                                                      @[simp]
                                                                                                                                                                                                                                                      theorem CategoryTheory.Limits.Cocone.underPost_pt {J : Type u_1} {C : Type u_2} [Category.{v_1, u_1} J] [Category.{v_2, u_2} C] {D : Functor J C} (c : Cocone D) (j : J) :
                                                                                                                                                                                                                                                      (c.underPost j).pt = Under.mk (c.ι.app j)
                                                                                                                                                                                                                                                      @[simp]
                                                                                                                                                                                                                                                      theorem CategoryTheory.Limits.Cocone.underPost_ι_app {J : Type u_1} {C : Type u_2} [Category.{v_1, u_1} J] [Category.{v_2, u_2} C] {D : Functor J C} (c : Cocone D) (j : J) (k : Under j) :
                                                                                                                                                                                                                                                      (c.underPost j).ι.app k = Under.homMk (c.ι.app k.right)

                                                                                                                                                                                                                                                      Reinterpreting an F-structured arrow X ⟶ F.obj d as an arrow under X induces a functor StructuredArrow X F ⥤ Under X.

                                                                                                                                                                                                                                                      Equations
                                                                                                                                                                                                                                                        Instances For
                                                                                                                                                                                                                                                          @[simp]
                                                                                                                                                                                                                                                          theorem CategoryTheory.StructuredArrow.toUnder_obj_right {T : Type u₁} [Category.{v₁, u₁} T] {D : Type u₂} [Category.{v₂, u₂} D] (X : T) (F : Functor D T) (X✝ : Comma (Functor.fromPUnit X) (F.comp (Functor.id T))) :
                                                                                                                                                                                                                                                          ((toUnder X F).obj X✝).right = F.obj X✝.right
                                                                                                                                                                                                                                                          @[simp]
                                                                                                                                                                                                                                                          theorem CategoryTheory.StructuredArrow.toUnder_obj_hom {T : Type u₁} [Category.{v₁, u₁} T] {D : Type u₂} [Category.{v₂, u₂} D] (X : T) (F : Functor D T) (X✝ : Comma (Functor.fromPUnit X) (F.comp (Functor.id T))) :
                                                                                                                                                                                                                                                          ((toUnder X F).obj X✝).hom = X✝.hom
                                                                                                                                                                                                                                                          @[simp]
                                                                                                                                                                                                                                                          theorem CategoryTheory.StructuredArrow.toUnder_obj_left {T : Type u₁} [Category.{v₁, u₁} T] {D : Type u₂} [Category.{v₂, u₂} D] (X : T) (F : Functor D T) (X✝ : Comma (Functor.fromPUnit X) (F.comp (Functor.id T))) :
                                                                                                                                                                                                                                                          ((toUnder X F).obj X✝).left = X✝.left
                                                                                                                                                                                                                                                          @[simp]
                                                                                                                                                                                                                                                          theorem CategoryTheory.StructuredArrow.toUnder_map_right {T : Type u₁} [Category.{v₁, u₁} T] {D : Type u₂} [Category.{v₂, u₂} D] (X : T) (F : Functor D T) {X✝ Y✝ : Comma (Functor.fromPUnit X) (F.comp (Functor.id T))} (f : X✝ Y✝) :
                                                                                                                                                                                                                                                          ((toUnder X F).map f).right = F.map f.right
                                                                                                                                                                                                                                                          @[simp]
                                                                                                                                                                                                                                                          theorem CategoryTheory.StructuredArrow.toUnder_map_left {T : Type u₁} [Category.{v₁, u₁} T] {D : Type u₂} [Category.{v₂, u₂} D] (X : T) (F : Functor D T) {X✝ Y✝ : Comma (Functor.fromPUnit X) (F.comp (Functor.id T))} (f : X✝ Y✝) :

                                                                                                                                                                                                                                                          An equivalence F induces an equivalence StructuredArrow X F ≌ Under X.

                                                                                                                                                                                                                                                          @[simp]
                                                                                                                                                                                                                                                          theorem CategoryTheory.Functor.essImage_overPost {T : Type u₁} [Category.{v₁, u₁} T] {D : Type u₂} [Category.{v₂, u₂} D] {X : T} {F : Functor T D} [F.Full] {Y : Over (F.obj X)} :

                                                                                                                                                                                                                                                          The essential image of Over.post F where F is full is the same as the essential image of F.

                                                                                                                                                                                                                                                          @[simp]
                                                                                                                                                                                                                                                          theorem CategoryTheory.Functor.essImage_underPost {T : Type u₁} [Category.{v₁, u₁} T] {D : Type u₂} [Category.{v₂, u₂} D] {X : T} {F : Functor T D} [F.Full] {Y : Under (F.obj X)} :

                                                                                                                                                                                                                                                          The essential image of Under.post F where F is full is the same as the essential image of F.

                                                                                                                                                                                                                                                          def CategoryTheory.Functor.toOver {T : Type u₁} [Category.{v₁, u₁} T] {S : Type u₂} [Category.{v₂, u₂} S] (F : Functor S T) (X : T) (f : (Y : S) → F.obj Y X) (h : ∀ {Y Z : S} (g : Y Z), CategoryStruct.comp (F.map g) (f Z) = f Y) :

                                                                                                                                                                                                                                                          Given X : T, to upgrade a functor F : S ⥤ T to a functor S ⥤ Over X, it suffices to provide maps F.obj Y ⟶ X for all Y making the obvious triangles involving all F.map g commute.

                                                                                                                                                                                                                                                          Equations
                                                                                                                                                                                                                                                            Instances For
                                                                                                                                                                                                                                                              @[simp]
                                                                                                                                                                                                                                                              theorem CategoryTheory.Functor.toOver_obj_left {T : Type u₁} [Category.{v₁, u₁} T] {S : Type u₂} [Category.{v₂, u₂} S] (F : Functor S T) (X : T) (f : (Y : S) → F.obj Y X) (h : ∀ {Y Z : S} (g : Y Z), CategoryStruct.comp (F.map g) (f Z) = f Y) (Y : S) :
                                                                                                                                                                                                                                                              ((F.toOver X f h).obj Y).left = F.obj Y
                                                                                                                                                                                                                                                              @[simp]
                                                                                                                                                                                                                                                              theorem CategoryTheory.Functor.toOver_map_left {T : Type u₁} [Category.{v₁, u₁} T] {S : Type u₂} [Category.{v₂, u₂} S] (F : Functor S T) (X : T) (f : (Y : S) → F.obj Y X) (h : ∀ {Y Z : S} (g : Y Z), CategoryStruct.comp (F.map g) (f Z) = f Y) {X✝ Y✝ : S} (g : X✝ Y✝) :
                                                                                                                                                                                                                                                              ((F.toOver X f h).map g).left = F.map g
                                                                                                                                                                                                                                                              def CategoryTheory.Functor.toOverCompForget {T : Type u₁} [Category.{v₁, u₁} T] {S : Type u₂} [Category.{v₂, u₂} S] (F : Functor S T) (X : T) (f : (Y : S) → F.obj Y X) (h : ∀ {Y Z : S} (g : Y Z), CategoryStruct.comp (F.map g) (f Z) = f Y) :
                                                                                                                                                                                                                                                              (F.toOver X f ).comp (Over.forget X) F

                                                                                                                                                                                                                                                              Upgrading a functor S ⥤ T to a functor S ⥤ Over X and composing with the forgetful functor Over X ⥤ T recovers the original functor.

                                                                                                                                                                                                                                                              Equations
                                                                                                                                                                                                                                                                Instances For
                                                                                                                                                                                                                                                                  @[simp]
                                                                                                                                                                                                                                                                  theorem CategoryTheory.Functor.toOver_comp_forget {T : Type u₁} [Category.{v₁, u₁} T] {S : Type u₂} [Category.{v₂, u₂} S] (F : Functor S T) (X : T) (f : (Y : S) → F.obj Y X) (h : ∀ {Y Z : S} (g : Y Z), CategoryStruct.comp (F.map g) (f Z) = f Y) :
                                                                                                                                                                                                                                                                  (F.toOver X f ).comp (Over.forget X) = F
                                                                                                                                                                                                                                                                  def CategoryTheory.Functor.toUnder {T : Type u₁} [Category.{v₁, u₁} T] {S : Type u₂} [Category.{v₂, u₂} S] (F : Functor S T) (X : T) (f : (Y : S) → X F.obj Y) (h : ∀ {Y Z : S} (g : Y Z), CategoryStruct.comp (f Y) (F.map g) = f Z) :

                                                                                                                                                                                                                                                                  Given X : T, to upgrade a functor F : S ⥤ T to a functor S ⥤ Under X, it suffices to provide maps X ⟶ F.obj Y for all Y making the obvious triangles involving all F.map g commute.

                                                                                                                                                                                                                                                                  Equations
                                                                                                                                                                                                                                                                    Instances For
                                                                                                                                                                                                                                                                      @[simp]
                                                                                                                                                                                                                                                                      theorem CategoryTheory.Functor.toUnder_obj_right {T : Type u₁} [Category.{v₁, u₁} T] {S : Type u₂} [Category.{v₂, u₂} S] (F : Functor S T) (X : T) (f : (Y : S) → X F.obj Y) (h : ∀ {Y Z : S} (g : Y Z), CategoryStruct.comp (f Y) (F.map g) = f Z) (Y : S) :
                                                                                                                                                                                                                                                                      ((F.toUnder X f h).obj Y).right = F.obj Y
                                                                                                                                                                                                                                                                      @[simp]
                                                                                                                                                                                                                                                                      theorem CategoryTheory.Functor.toUnder_map_right {T : Type u₁} [Category.{v₁, u₁} T] {S : Type u₂} [Category.{v₂, u₂} S] (F : Functor S T) (X : T) (f : (Y : S) → X F.obj Y) (h : ∀ {Y Z : S} (g : Y Z), CategoryStruct.comp (f Y) (F.map g) = f Z) {X✝ Y✝ : S} (g : X✝ Y✝) :
                                                                                                                                                                                                                                                                      ((F.toUnder X f h).map g).right = F.map g
                                                                                                                                                                                                                                                                      def CategoryTheory.Functor.toUnderCompForget {T : Type u₁} [Category.{v₁, u₁} T] {S : Type u₂} [Category.{v₂, u₂} S] (F : Functor S T) (X : T) (f : (Y : S) → X F.obj Y) (h : ∀ {Y Z : S} (g : Y Z), CategoryStruct.comp (f Y) (F.map g) = f Z) :
                                                                                                                                                                                                                                                                      (F.toUnder X f ).comp (Under.forget X) F

                                                                                                                                                                                                                                                                      Upgrading a functor S ⥤ T to a functor S ⥤ Under X and composing with the forgetful functor Under X ⥤ T recovers the original functor.

                                                                                                                                                                                                                                                                      Equations
                                                                                                                                                                                                                                                                        Instances For
                                                                                                                                                                                                                                                                          @[simp]
                                                                                                                                                                                                                                                                          theorem CategoryTheory.Functor.toUnder_comp_forget {T : Type u₁} [Category.{v₁, u₁} T] {S : Type u₂} [Category.{v₂, u₂} S] (F : Functor S T) (X : T) (f : (Y : S) → X F.obj Y) (h : ∀ {Y Z : S} (g : Y Z), CategoryStruct.comp (f Y) (F.map g) = f Z) :
                                                                                                                                                                                                                                                                          (F.toUnder X f ).comp (Under.forget X) = F

                                                                                                                                                                                                                                                                          A functor from the structured arrow category on the projection functor for any structured arrow category.

                                                                                                                                                                                                                                                                          Equations
                                                                                                                                                                                                                                                                            Instances For

                                                                                                                                                                                                                                                                              Characterization of the structured arrow category on the projection functor of any structured arrow category.

                                                                                                                                                                                                                                                                              Equations
                                                                                                                                                                                                                                                                                Instances For

                                                                                                                                                                                                                                                                                  The canonical functor from the structured arrow category on the diagonal functor T ⥤ T × T to the structured arrow category on Under.forget.

                                                                                                                                                                                                                                                                                  Equations
                                                                                                                                                                                                                                                                                    Instances For

                                                                                                                                                                                                                                                                                      Characterization of the structured arrow category on the diagonal functor T ⥤ T × T.

                                                                                                                                                                                                                                                                                      Equations
                                                                                                                                                                                                                                                                                        Instances For

                                                                                                                                                                                                                                                                                          A version of StructuredArrow.ofDiagEquivalence with the roles of the first and second projection swapped.

                                                                                                                                                                                                                                                                                          Equations
                                                                                                                                                                                                                                                                                            Instances For

                                                                                                                                                                                                                                                                                              The functor used to define the equivalence ofCommaSndEquivalence.

                                                                                                                                                                                                                                                                                              Equations
                                                                                                                                                                                                                                                                                                Instances For

                                                                                                                                                                                                                                                                                                  The inverse functor used to define the equivalence ofCommaSndEquivalence.

                                                                                                                                                                                                                                                                                                  Equations
                                                                                                                                                                                                                                                                                                    Instances For

                                                                                                                                                                                                                                                                                                      There is a canonical equivalence between the structured arrow category with domain c on the functor Comma.fst F G : Comma F G ⥤ F and the comma category over Under.forget c ⋙ F : Under c ⥤ T and G.

                                                                                                                                                                                                                                                                                                      Equations
                                                                                                                                                                                                                                                                                                        Instances For

                                                                                                                                                                                                                                                                                                          A functor from the costructured arrow category on the projection functor for any costructured arrow category.

                                                                                                                                                                                                                                                                                                          Equations
                                                                                                                                                                                                                                                                                                            Instances For

                                                                                                                                                                                                                                                                                                              Characterization of the costructured arrow category on the projection functor of any costructured arrow category.

                                                                                                                                                                                                                                                                                                              Equations
                                                                                                                                                                                                                                                                                                                Instances For

                                                                                                                                                                                                                                                                                                                  The canonical functor from the costructured arrow category on the diagonal functor T ⥤ T × T to the costructured arrow category on Under.forget.

                                                                                                                                                                                                                                                                                                                  Equations
                                                                                                                                                                                                                                                                                                                    Instances For

                                                                                                                                                                                                                                                                                                                      Characterization of the costructured arrow category on the diagonal functor T ⥤ T × T.

                                                                                                                                                                                                                                                                                                                      Equations
                                                                                                                                                                                                                                                                                                                        Instances For

                                                                                                                                                                                                                                                                                                                          A version of CostructuredArrow.ofDiagEquivalence with the roles of the first and second projection swapped.

                                                                                                                                                                                                                                                                                                                          Equations
                                                                                                                                                                                                                                                                                                                            Instances For

                                                                                                                                                                                                                                                                                                                              The functor used to define the equivalence ofCommaFstEquivalence.

                                                                                                                                                                                                                                                                                                                              Equations
                                                                                                                                                                                                                                                                                                                                Instances For

                                                                                                                                                                                                                                                                                                                                  The inverse functor used to define the equivalence ofCommaFstEquivalence.

                                                                                                                                                                                                                                                                                                                                  Equations
                                                                                                                                                                                                                                                                                                                                    Instances For

                                                                                                                                                                                                                                                                                                                                      There is a canonical equivalence between the costructured arrow category with codomain c on the functor Comma.fst F G : Comma F G ⥤ F and the comma category over Over.forget c ⋙ F : Over c ⥤ T and G.

                                                                                                                                                                                                                                                                                                                                      Equations
                                                                                                                                                                                                                                                                                                                                        Instances For

                                                                                                                                                                                                                                                                                                                                          The canonical equivalence between over and under categories by reversing structure arrows.

                                                                                                                                                                                                                                                                                                                                          Equations
                                                                                                                                                                                                                                                                                                                                            Instances For
                                                                                                                                                                                                                                                                                                                                              @[simp]
                                                                                                                                                                                                                                                                                                                                              theorem CategoryTheory.Over.opEquivOpUnder_counitIso {T : Type u₁} [Category.{v₁, u₁} T] (X : T) :
                                                                                                                                                                                                                                                                                                                                              (opEquivOpUnder X).counitIso = Iso.refl ({ obj := fun (Y : (Under X)ᵒᵖ) => mk (Opposite.unop Y).hom.op, map := fun {Z Y : (Under X)ᵒᵖ} (f : Z Y) => homMk f.unop.right.op , map_id := , map_comp := }.comp { obj := fun (Y : Over (Opposite.op X)) => Opposite.op (Under.mk Y.hom.unop), map := fun {Z Y : Over (Opposite.op X)} (f : Z Y) => Opposite.op (Under.homMk f.left.unop ), map_id := , map_comp := })

                                                                                                                                                                                                                                                                                                                                              The canonical equivalence between under and over categories by reversing structure arrows.

                                                                                                                                                                                                                                                                                                                                              Equations
                                                                                                                                                                                                                                                                                                                                                Instances For
                                                                                                                                                                                                                                                                                                                                                  @[simp]
                                                                                                                                                                                                                                                                                                                                                  theorem CategoryTheory.Under.opEquivOpOver_counitIso {T : Type u₁} [Category.{v₁, u₁} T] (X : T) :
                                                                                                                                                                                                                                                                                                                                                  (opEquivOpOver X).counitIso = Iso.refl ({ obj := fun (Y : (Over X)ᵒᵖ) => mk (Opposite.unop Y).hom.op, map := fun {Z Y : (Over X)ᵒᵖ} (f : Z Y) => homMk f.unop.left.op , map_id := , map_comp := }.comp { obj := fun (Y : Under (Opposite.op X)) => Opposite.op (Over.mk Y.hom.unop), map := fun {Z Y : Under (Opposite.op X)} (f : Z Y) => Opposite.op (Over.homMk f.right.unop ), map_id := , map_comp := })