Documentation

Mathlib.CategoryTheory.MorphismProperty.Comma

Subcategories of comma categories defined by morphism properties #

Given functors L : A β₯€ T and R : B β₯€ T and morphism properties P, Q and W on T, A and B respectively, we define the subcategory P.Comma L R Q W of Comma L R where

For an object X : T, this specializes to P.Over Q X which is the subcategory of Over X where the structural morphism satisfies P and where the horizontal morphisms satisfy Q. Common examples of the latter are e.g. the category of schemes étale (finite, affine, etc.) over a base X. Here Q = ⊀.

Implementation details #

The object property on Comma L R induced by a morphism property.

Instances For
    @[simp]
    theorem CategoryTheory.MorphismProperty.commaObj_iff {A : Type u_1} [Category.{v_1, u_1} A] {B : Type u_2} [Category.{v_2, u_2} B] {T : Type u_3} [Category.{v_3, u_3} T] (L : Functor A T) (R : Functor B T) {W : MorphismProperty T} (Y : Comma L R) :
    commaObj L R W Y ↔ W Y.hom

    The object property on CostructuredArrow L X induced by a morphism property.

    Instances For

      The object property on StructuredArrow X R induced by a morphism property.

      Instances For

        The morphism property on Over X induced by a morphism property on C.

        Instances For
          @[simp]
          theorem CategoryTheory.MorphismProperty.over_iff {T : Type u_3} [Category.{v_3, u_3} T] {W : MorphismProperty T} {X : T} {Y Z : Over X} (f : Y ⟢ Z) :
          W.over f ↔ W f.left

          The morphism property on Under X induced by a morphism property on C.

          Instances For
            @[simp]
            theorem CategoryTheory.MorphismProperty.under_iff {T : Type u_3} [Category.{v_3, u_3} T] {W : MorphismProperty T} {X : T} {Y Z : Under X} (f : Y ⟢ Z) :
            W.under f ↔ W f.right

            The object property on Over X induced by a morphism property.

            Instances For

              The object property on Under X induced by a morphism property.

              Instances For
                structure CategoryTheory.MorphismProperty.Comma {A : Type u_1} [Category.{v_1, u_1} A] {B : Type u_2} [Category.{v_2, u_2} B] {T : Type u_3} [Category.{v_3, u_3} T] (L : Functor A T) (R : Functor B T) (P : MorphismProperty T) (Q : MorphismProperty A) (W : MorphismProperty B) extends CategoryTheory.Comma L R :
                Type (max (max u_1 u_2) v_3)

                P.Comma L R Q W is the subcategory of Comma L R consisting of objects X : Comma L R where X.hom satisfies P. The morphisms are given by morphisms in Comma L R where the left one satisfies Q and the right one satisfies W.

                Instances For
                  theorem CategoryTheory.MorphismProperty.Comma.ext {A : Type u_1} {inst✝ : Category.{v_1, u_1} A} {B : Type u_2} {inst✝¹ : Category.{v_2, u_2} B} {T : Type u_3} {inst✝² : Category.{v_3, u_3} T} {L : Functor A T} {R : Functor B T} {P : MorphismProperty T} {Q : MorphismProperty A} {W : MorphismProperty B} {x y : MorphismProperty.Comma L R P Q W} (left : x.left = y.left) (right : x.right = y.right) (hom : x.hom ≍ y.hom) :
                  x = y
                  theorem CategoryTheory.MorphismProperty.Comma.ext_iff {A : Type u_1} {inst✝ : Category.{v_1, u_1} A} {B : Type u_2} {inst✝¹ : Category.{v_2, u_2} B} {T : Type u_3} {inst✝² : Category.{v_3, u_3} T} {L : Functor A T} {R : Functor B T} {P : MorphismProperty T} {Q : MorphismProperty A} {W : MorphismProperty B} {x y : MorphismProperty.Comma L R P Q W} :
                  x = y ↔ x.left = y.left ∧ x.right = y.right ∧ x.hom ≍ y.hom

                  A morphism in P.Comma L R Q W is a morphism in Comma L R where the left hom satisfies Q and the right one satisfies W.

                  Instances For
                    theorem CategoryTheory.MorphismProperty.Comma.Hom.ext {A : Type u_1} {inst✝ : Category.{v_1, u_1} A} {B : Type u_2} {inst✝¹ : Category.{v_2, u_2} B} {T : Type u_3} {inst✝² : Category.{v_3, u_3} T} {L : Functor A T} {R : Functor B T} {P : MorphismProperty T} {Q : MorphismProperty A} {W : MorphismProperty B} {X Y : MorphismProperty.Comma L R P Q W} {x y : X.Hom Y} (left : x.left = y.left) (right : x.right = y.right) :
                    x = y
                    theorem CategoryTheory.MorphismProperty.Comma.Hom.ext_iff {A : Type u_1} {inst✝ : Category.{v_1, u_1} A} {B : Type u_2} {inst✝¹ : Category.{v_2, u_2} B} {T : Type u_3} {inst✝² : Category.{v_3, u_3} T} {L : Functor A T} {R : Functor B T} {P : MorphismProperty T} {Q : MorphismProperty A} {W : MorphismProperty B} {X Y : MorphismProperty.Comma L R P Q W} {x y : X.Hom Y} :
                    x = y ↔ x.left = y.left ∧ x.right = y.right
                    @[reducible, inline]

                    The underlying morphism of objects in Comma L R.

                    Instances For
                      @[simp]
                      theorem CategoryTheory.MorphismProperty.Comma.Hom.hom_mk {A : Type u_1} [Category.{v_1, u_1} A] {B : Type u_2} [Category.{v_2, u_2} B] {T : Type u_3} [Category.{v_3, u_3} T] {L : Functor A T} {R : Functor B T} {P : MorphismProperty T} {Q : MorphismProperty A} {W : MorphismProperty B} {X Y : MorphismProperty.Comma L R P Q W} (f : CommaMorphism X.toComma Y.toComma) (hf : Q f.left) (hg : W f.right) :
                      { toCommaMorphism := f, prop_hom_left := hf, prop_hom_right := hg }.hom = f

                      See Note [custom simps projection]

                      Instances For

                        The identity morphism of an object in P.Comma L R Q W.

                        Instances For

                          Composition of morphisms in P.Comma L R Q W.

                          Instances For
                            theorem CategoryTheory.MorphismProperty.Comma.Hom.ext' {A : Type u_1} [Category.{v_1, u_1} A] {B : Type u_2} [Category.{v_2, u_2} B] {T : Type u_3} [Category.{v_3, u_3} T] {L : Functor A T} {R : Functor B T} {P : MorphismProperty T} {Q : MorphismProperty A} {W : MorphismProperty B} [Q.IsMultiplicative] [W.IsMultiplicative] {X Y : MorphismProperty.Comma L R P Q W} {f g : X ⟢ Y} (h : hom f = hom g) :
                            f = g

                            Alternative ext lemma for Comma.Hom.

                            If i is an isomorphism in Comma L R, it is also a morphism in P.Comma L R Q W.

                            Instances For

                              Any isomorphism between objects of P.Comma L R Q W in Comma L R is also an isomorphism in P.Comma L R Q W.

                              Instances For

                                Constructor for isomorphisms in P.Comma L R Q W from isomorphisms of the left and right components and naturality in the forward direction.

                                Instances For
                                  @[simp]
                                  theorem CategoryTheory.MorphismProperty.Comma.forget_map {A : Type u_1} [Category.{v_1, u_1} A] {B : Type u_2} [Category.{v_2, u_2} B] {T : Type u_3} [Category.{v_3, u_3} T] (L : Functor A T) (R : Functor B T) (P : MorphismProperty T) (Q : MorphismProperty A) (W : MorphismProperty B) [Q.IsMultiplicative] [W.IsMultiplicative] {X✝ Y✝ : MorphismProperty.Comma L R P Q W} (f : X✝ ⟢ Y✝) :
                                  (forget L R P Q W).map f = Hom.hom f

                                  The forgetful functor from the full subcategory of Comma L R defined by P is fully faithful.

                                  Instances For

                                    Weaken the conditions on all components.

                                    Instances For

                                      Weakening the condition on the structure morphisms is fully faithful.

                                      Instances For
                                        def CategoryTheory.MorphismProperty.Comma.lift {A : Type u_1} [Category.{v_1, u_1} A] {B : Type u_2} [Category.{v_2, u_2} B] {T : Type u_3} [Category.{v_3, u_3} T] {L : Functor A T} {R : Functor B T} {P : MorphismProperty T} {Q : MorphismProperty A} {W : MorphismProperty B} [Q.IsMultiplicative] [W.IsMultiplicative] {C : Type u_4} [Category.{v_4, u_4} C] (F : Functor C (Comma L R)) (hP : βˆ€ (X : C), P (F.obj X).hom) (hQ : βˆ€ {X Y : C} (f : X ⟢ Y), Q (F.map f).left) (hW : βˆ€ {X Y : C} (f : X ⟢ Y), W (F.map f).right) :

                                        Lift a functor F : C β₯€ Comma L R to the subcategory P.Comma L R Q W under suitable assumptions on F.

                                        Instances For
                                          @[simp]
                                          theorem CategoryTheory.MorphismProperty.Comma.lift_obj_toComma {A : Type u_1} [Category.{v_1, u_1} A] {B : Type u_2} [Category.{v_2, u_2} B] {T : Type u_3} [Category.{v_3, u_3} T] {L : Functor A T} {R : Functor B T} {P : MorphismProperty T} {Q : MorphismProperty A} {W : MorphismProperty B} [Q.IsMultiplicative] [W.IsMultiplicative] {C : Type u_4} [Category.{v_4, u_4} C] (F : Functor C (Comma L R)) (hP : βˆ€ (X : C), P (F.obj X).hom) (hQ : βˆ€ {X Y : C} (f : X ⟢ Y), Q (F.map f).left) (hW : βˆ€ {X Y : C} (f : X ⟢ Y), W (F.map f).right) (X : C) :
                                          ((lift F hP hQ hW).obj X).toComma = F.obj X
                                          @[simp]
                                          theorem CategoryTheory.MorphismProperty.Comma.lift_map_hom {A : Type u_1} [Category.{v_1, u_1} A] {B : Type u_2} [Category.{v_2, u_2} B] {T : Type u_3} [Category.{v_3, u_3} T] {L : Functor A T} {R : Functor B T} {P : MorphismProperty T} {Q : MorphismProperty A} {W : MorphismProperty B} [Q.IsMultiplicative] [W.IsMultiplicative] {C : Type u_4} [Category.{v_4, u_4} C] (F : Functor C (Comma L R)) (hP : βˆ€ (X : C), P (F.obj X).hom) (hQ : βˆ€ {X Y : C} (f : X ⟢ Y), Q (F.map f).left) (hW : βˆ€ {X Y : C} (f : X ⟢ Y), W (F.map f).right) {X Y : C} (f : X ⟢ Y) :
                                          Hom.hom ((lift F hP hQ hW).map f) = F.map f
                                          def CategoryTheory.MorphismProperty.Comma.mapLeft {A : Type u_1} [Category.{v_1, u_1} A] {B : Type u_2} [Category.{v_2, u_2} B] {T : Type u_3} [Category.{v_3, u_3} T] (R : Functor B T) {P : MorphismProperty T} {Q : MorphismProperty A} {W : MorphismProperty B} [Q.IsMultiplicative] [W.IsMultiplicative] {L₁ Lβ‚‚ : Functor A T} (l : L₁ ⟢ Lβ‚‚) (hl : βˆ€ (X : MorphismProperty.Comma Lβ‚‚ R P Q W), P (CategoryStruct.comp (l.app X.left) X.hom)) :
                                          Functor (MorphismProperty.Comma Lβ‚‚ R P Q W) (MorphismProperty.Comma L₁ R P Q W)

                                          A natural transformation L₁ ⟢ Lβ‚‚ induces a functor P.Comma Lβ‚‚ R Q W β₯€ P.Comma L₁ R Q W.

                                          Instances For
                                            @[simp]
                                            theorem CategoryTheory.MorphismProperty.Comma.mapLeft_map_left {A : Type u_1} [Category.{v_1, u_1} A] {B : Type u_2} [Category.{v_2, u_2} B] {T : Type u_3} [Category.{v_3, u_3} T] (R : Functor B T) {P : MorphismProperty T} {Q : MorphismProperty A} {W : MorphismProperty B} [Q.IsMultiplicative] [W.IsMultiplicative] {L₁ Lβ‚‚ : Functor A T} (l : L₁ ⟢ Lβ‚‚) (hl : βˆ€ (X : MorphismProperty.Comma Lβ‚‚ R P Q W), P (CategoryStruct.comp (l.app X.left) X.hom)) {X Y : MorphismProperty.Comma Lβ‚‚ R P Q W} (f : X ⟢ Y) :
                                            ((mapLeft R l hl).map f).left = (Hom.hom f).left
                                            @[simp]
                                            theorem CategoryTheory.MorphismProperty.Comma.mapLeft_obj_hom {A : Type u_1} [Category.{v_1, u_1} A] {B : Type u_2} [Category.{v_2, u_2} B] {T : Type u_3} [Category.{v_3, u_3} T] (R : Functor B T) {P : MorphismProperty T} {Q : MorphismProperty A} {W : MorphismProperty B} [Q.IsMultiplicative] [W.IsMultiplicative] {L₁ Lβ‚‚ : Functor A T} (l : L₁ ⟢ Lβ‚‚) (hl : βˆ€ (X : MorphismProperty.Comma Lβ‚‚ R P Q W), P (CategoryStruct.comp (l.app X.left) X.hom)) (X : MorphismProperty.Comma Lβ‚‚ R P Q W) :
                                            ((mapLeft R l hl).obj X).hom = CategoryStruct.comp (l.app X.left) X.hom
                                            @[simp]
                                            theorem CategoryTheory.MorphismProperty.Comma.mapLeft_obj_left {A : Type u_1} [Category.{v_1, u_1} A] {B : Type u_2} [Category.{v_2, u_2} B] {T : Type u_3} [Category.{v_3, u_3} T] (R : Functor B T) {P : MorphismProperty T} {Q : MorphismProperty A} {W : MorphismProperty B} [Q.IsMultiplicative] [W.IsMultiplicative] {L₁ Lβ‚‚ : Functor A T} (l : L₁ ⟢ Lβ‚‚) (hl : βˆ€ (X : MorphismProperty.Comma Lβ‚‚ R P Q W), P (CategoryStruct.comp (l.app X.left) X.hom)) (X : MorphismProperty.Comma Lβ‚‚ R P Q W) :
                                            ((mapLeft R l hl).obj X).left = X.left
                                            @[simp]
                                            theorem CategoryTheory.MorphismProperty.Comma.mapLeft_map_right {A : Type u_1} [Category.{v_1, u_1} A] {B : Type u_2} [Category.{v_2, u_2} B] {T : Type u_3} [Category.{v_3, u_3} T] (R : Functor B T) {P : MorphismProperty T} {Q : MorphismProperty A} {W : MorphismProperty B} [Q.IsMultiplicative] [W.IsMultiplicative] {L₁ Lβ‚‚ : Functor A T} (l : L₁ ⟢ Lβ‚‚) (hl : βˆ€ (X : MorphismProperty.Comma Lβ‚‚ R P Q W), P (CategoryStruct.comp (l.app X.left) X.hom)) {X Y : MorphismProperty.Comma Lβ‚‚ R P Q W} (f : X ⟢ Y) :
                                            ((mapLeft R l hl).map f).right = (Hom.hom f).right
                                            @[simp]
                                            theorem CategoryTheory.MorphismProperty.Comma.mapLeft_obj_right {A : Type u_1} [Category.{v_1, u_1} A] {B : Type u_2} [Category.{v_2, u_2} B] {T : Type u_3} [Category.{v_3, u_3} T] (R : Functor B T) {P : MorphismProperty T} {Q : MorphismProperty A} {W : MorphismProperty B} [Q.IsMultiplicative] [W.IsMultiplicative] {L₁ Lβ‚‚ : Functor A T} (l : L₁ ⟢ Lβ‚‚) (hl : βˆ€ (X : MorphismProperty.Comma Lβ‚‚ R P Q W), P (CategoryStruct.comp (l.app X.left) X.hom)) (X : MorphismProperty.Comma Lβ‚‚ R P Q W) :
                                            ((mapLeft R l hl).obj X).right = X.right

                                            The functor P.Comma L R Q W β₯€ P.Comma L R Q W induced by the identity natural transformation on L is naturally isomorphic to the identity functor.

                                            Instances For
                                              def CategoryTheory.MorphismProperty.Comma.mapLeftComp {A : Type u_1} [Category.{v_1, u_1} A] {B : Type u_2} [Category.{v_2, u_2} B] {T : Type u_3} [Category.{v_3, u_3} T] (R : Functor B T) {P : MorphismProperty T} {Q : MorphismProperty A} {W : MorphismProperty B} [Q.IsMultiplicative] [W.IsMultiplicative] {L₁ Lβ‚‚ L₃ : Functor A T} [Q.RespectsIso] [W.RespectsIso] (l : L₁ ⟢ Lβ‚‚) (l' : Lβ‚‚ ⟢ L₃) (hl : βˆ€ (X : MorphismProperty.Comma Lβ‚‚ R P Q W), P (CategoryStruct.comp (l.app X.left) X.hom)) (hl' : βˆ€ (X : MorphismProperty.Comma L₃ R P Q W), P (CategoryStruct.comp (l'.app X.left) X.hom)) (hll' : βˆ€ (X : MorphismProperty.Comma L₃ R P Q W), P (CategoryStruct.comp ((CategoryStruct.comp l l').app X.left) X.hom)) :
                                              mapLeft R (CategoryStruct.comp l l') hll' β‰… (mapLeft R l' hl').comp (mapLeft R l hl)

                                              The functor P.Comma L₁ R Q W β₯€ P.Comma L₃ R Q W induced by the composition of two natural transformations l : L₁ ⟢ Lβ‚‚ and l' : Lβ‚‚ ⟢ L₃ is naturally isomorphic to the composition of the two functors induced by these natural transformations.

                                              Instances For
                                                @[simp]
                                                theorem CategoryTheory.MorphismProperty.Comma.mapLeftComp_inv_app_left {A : Type u_1} [Category.{v_1, u_1} A] {B : Type u_2} [Category.{v_2, u_2} B] {T : Type u_3} [Category.{v_3, u_3} T] (R : Functor B T) {P : MorphismProperty T} {Q : MorphismProperty A} {W : MorphismProperty B} [Q.IsMultiplicative] [W.IsMultiplicative] {L₁ Lβ‚‚ L₃ : Functor A T} [Q.RespectsIso] [W.RespectsIso] (l : L₁ ⟢ Lβ‚‚) (l' : Lβ‚‚ ⟢ L₃) (hl : βˆ€ (X : MorphismProperty.Comma Lβ‚‚ R P Q W), P (CategoryStruct.comp (l.app X.left) X.hom)) (hl' : βˆ€ (X : MorphismProperty.Comma L₃ R P Q W), P (CategoryStruct.comp (l'.app X.left) X.hom)) (hll' : βˆ€ (X : MorphismProperty.Comma L₃ R P Q W), P (CategoryStruct.comp ((CategoryStruct.comp l l').app X.left) X.hom)) (X : MorphismProperty.Comma L₃ R P Q W) :
                                                ((mapLeftComp R l l' hl hl' hll').inv.app X).left = CategoryStruct.id X.left
                                                @[simp]
                                                theorem CategoryTheory.MorphismProperty.Comma.mapLeftComp_hom_app_right {A : Type u_1} [Category.{v_1, u_1} A] {B : Type u_2} [Category.{v_2, u_2} B] {T : Type u_3} [Category.{v_3, u_3} T] (R : Functor B T) {P : MorphismProperty T} {Q : MorphismProperty A} {W : MorphismProperty B} [Q.IsMultiplicative] [W.IsMultiplicative] {L₁ Lβ‚‚ L₃ : Functor A T} [Q.RespectsIso] [W.RespectsIso] (l : L₁ ⟢ Lβ‚‚) (l' : Lβ‚‚ ⟢ L₃) (hl : βˆ€ (X : MorphismProperty.Comma Lβ‚‚ R P Q W), P (CategoryStruct.comp (l.app X.left) X.hom)) (hl' : βˆ€ (X : MorphismProperty.Comma L₃ R P Q W), P (CategoryStruct.comp (l'.app X.left) X.hom)) (hll' : βˆ€ (X : MorphismProperty.Comma L₃ R P Q W), P (CategoryStruct.comp ((CategoryStruct.comp l l').app X.left) X.hom)) (X : MorphismProperty.Comma L₃ R P Q W) :
                                                ((mapLeftComp R l l' hl hl' hll').hom.app X).right = CategoryStruct.id X.right
                                                @[simp]
                                                theorem CategoryTheory.MorphismProperty.Comma.mapLeftComp_inv_app_right {A : Type u_1} [Category.{v_1, u_1} A] {B : Type u_2} [Category.{v_2, u_2} B] {T : Type u_3} [Category.{v_3, u_3} T] (R : Functor B T) {P : MorphismProperty T} {Q : MorphismProperty A} {W : MorphismProperty B} [Q.IsMultiplicative] [W.IsMultiplicative] {L₁ Lβ‚‚ L₃ : Functor A T} [Q.RespectsIso] [W.RespectsIso] (l : L₁ ⟢ Lβ‚‚) (l' : Lβ‚‚ ⟢ L₃) (hl : βˆ€ (X : MorphismProperty.Comma Lβ‚‚ R P Q W), P (CategoryStruct.comp (l.app X.left) X.hom)) (hl' : βˆ€ (X : MorphismProperty.Comma L₃ R P Q W), P (CategoryStruct.comp (l'.app X.left) X.hom)) (hll' : βˆ€ (X : MorphismProperty.Comma L₃ R P Q W), P (CategoryStruct.comp ((CategoryStruct.comp l l').app X.left) X.hom)) (X : MorphismProperty.Comma L₃ R P Q W) :
                                                ((mapLeftComp R l l' hl hl' hll').inv.app X).right = CategoryStruct.id X.right
                                                @[simp]
                                                theorem CategoryTheory.MorphismProperty.Comma.mapLeftComp_hom_app_left {A : Type u_1} [Category.{v_1, u_1} A] {B : Type u_2} [Category.{v_2, u_2} B] {T : Type u_3} [Category.{v_3, u_3} T] (R : Functor B T) {P : MorphismProperty T} {Q : MorphismProperty A} {W : MorphismProperty B} [Q.IsMultiplicative] [W.IsMultiplicative] {L₁ Lβ‚‚ L₃ : Functor A T} [Q.RespectsIso] [W.RespectsIso] (l : L₁ ⟢ Lβ‚‚) (l' : Lβ‚‚ ⟢ L₃) (hl : βˆ€ (X : MorphismProperty.Comma Lβ‚‚ R P Q W), P (CategoryStruct.comp (l.app X.left) X.hom)) (hl' : βˆ€ (X : MorphismProperty.Comma L₃ R P Q W), P (CategoryStruct.comp (l'.app X.left) X.hom)) (hll' : βˆ€ (X : MorphismProperty.Comma L₃ R P Q W), P (CategoryStruct.comp ((CategoryStruct.comp l l').app X.left) X.hom)) (X : MorphismProperty.Comma L₃ R P Q W) :
                                                ((mapLeftComp R l l' hl hl' hll').hom.app X).left = CategoryStruct.id X.left
                                                def CategoryTheory.MorphismProperty.Comma.mapLeftEq {A : Type u_1} [Category.{v_1, u_1} A] {B : Type u_2} [Category.{v_2, u_2} B] {T : Type u_3} [Category.{v_3, u_3} T] (R : Functor B T) {P : MorphismProperty T} {Q : MorphismProperty A} {W : MorphismProperty B} [Q.IsMultiplicative] [W.IsMultiplicative] {L₁ Lβ‚‚ : Functor A T} [Q.RespectsIso] [W.RespectsIso] (l l' : L₁ ⟢ Lβ‚‚) (h : l = l') (hl : βˆ€ (X : MorphismProperty.Comma Lβ‚‚ R P Q W), P (CategoryStruct.comp (l.app X.left) X.hom)) :
                                                mapLeft R l hl β‰… mapLeft R l' β‹―

                                                Two equal natural transformations L₁ ⟢ Lβ‚‚ yield naturally isomorphic functors P.Comma L₁ R Q W β₯€ P.Comma Lβ‚‚ R Q W.

                                                Instances For
                                                  @[simp]
                                                  theorem CategoryTheory.MorphismProperty.Comma.mapLeftEq_inv_app_left {A : Type u_1} [Category.{v_1, u_1} A] {B : Type u_2} [Category.{v_2, u_2} B] {T : Type u_3} [Category.{v_3, u_3} T] (R : Functor B T) {P : MorphismProperty T} {Q : MorphismProperty A} {W : MorphismProperty B} [Q.IsMultiplicative] [W.IsMultiplicative] {L₁ Lβ‚‚ : Functor A T} [Q.RespectsIso] [W.RespectsIso] (l l' : L₁ ⟢ Lβ‚‚) (h : l = l') (hl : βˆ€ (X : MorphismProperty.Comma Lβ‚‚ R P Q W), P (CategoryStruct.comp (l.app X.left) X.hom)) (X : MorphismProperty.Comma Lβ‚‚ R P Q W) :
                                                  ((mapLeftEq R l l' h hl).inv.app X).left = CategoryStruct.id X.left
                                                  @[simp]
                                                  theorem CategoryTheory.MorphismProperty.Comma.mapLeftEq_hom_app_left {A : Type u_1} [Category.{v_1, u_1} A] {B : Type u_2} [Category.{v_2, u_2} B] {T : Type u_3} [Category.{v_3, u_3} T] (R : Functor B T) {P : MorphismProperty T} {Q : MorphismProperty A} {W : MorphismProperty B} [Q.IsMultiplicative] [W.IsMultiplicative] {L₁ Lβ‚‚ : Functor A T} [Q.RespectsIso] [W.RespectsIso] (l l' : L₁ ⟢ Lβ‚‚) (h : l = l') (hl : βˆ€ (X : MorphismProperty.Comma Lβ‚‚ R P Q W), P (CategoryStruct.comp (l.app X.left) X.hom)) (X : MorphismProperty.Comma Lβ‚‚ R P Q W) :
                                                  ((mapLeftEq R l l' h hl).hom.app X).left = CategoryStruct.id X.left
                                                  @[simp]
                                                  theorem CategoryTheory.MorphismProperty.Comma.mapLeftEq_inv_app_right {A : Type u_1} [Category.{v_1, u_1} A] {B : Type u_2} [Category.{v_2, u_2} B] {T : Type u_3} [Category.{v_3, u_3} T] (R : Functor B T) {P : MorphismProperty T} {Q : MorphismProperty A} {W : MorphismProperty B} [Q.IsMultiplicative] [W.IsMultiplicative] {L₁ Lβ‚‚ : Functor A T} [Q.RespectsIso] [W.RespectsIso] (l l' : L₁ ⟢ Lβ‚‚) (h : l = l') (hl : βˆ€ (X : MorphismProperty.Comma Lβ‚‚ R P Q W), P (CategoryStruct.comp (l.app X.left) X.hom)) (X : MorphismProperty.Comma Lβ‚‚ R P Q W) :
                                                  @[simp]
                                                  theorem CategoryTheory.MorphismProperty.Comma.mapLeftEq_hom_app_right {A : Type u_1} [Category.{v_1, u_1} A] {B : Type u_2} [Category.{v_2, u_2} B] {T : Type u_3} [Category.{v_3, u_3} T] (R : Functor B T) {P : MorphismProperty T} {Q : MorphismProperty A} {W : MorphismProperty B} [Q.IsMultiplicative] [W.IsMultiplicative] {L₁ Lβ‚‚ : Functor A T} [Q.RespectsIso] [W.RespectsIso] (l l' : L₁ ⟢ Lβ‚‚) (h : l = l') (hl : βˆ€ (X : MorphismProperty.Comma Lβ‚‚ R P Q W), P (CategoryStruct.comp (l.app X.left) X.hom)) (X : MorphismProperty.Comma Lβ‚‚ R P Q W) :

                                                  A natural isomorphism L₁ β‰… Lβ‚‚ induces an equivalence of categories P.Comma L₁ R Q W β‰Œ P.Comma Lβ‚‚ R Q W.

                                                  Instances For
                                                    @[simp]
                                                    theorem CategoryTheory.MorphismProperty.Comma.mapLeftIso_functor_map_left {A : Type u_1} [Category.{v_1, u_1} A] {B : Type u_2} [Category.{v_2, u_2} B] {T : Type u_3} [Category.{v_3, u_3} T] (R : Functor B T) {P : MorphismProperty T} {Q : MorphismProperty A} {W : MorphismProperty B} [Q.IsMultiplicative] [W.IsMultiplicative] {L₁ Lβ‚‚ : Functor A T} [P.RespectsIso] [Q.RespectsIso] [W.RespectsIso] (e : L₁ β‰… Lβ‚‚) {X Y : MorphismProperty.Comma L₁ R P Q W} (f : X ⟢ Y) :
                                                    @[simp]
                                                    theorem CategoryTheory.MorphismProperty.Comma.mapLeftIso_inverse_map_left {A : Type u_1} [Category.{v_1, u_1} A] {B : Type u_2} [Category.{v_2, u_2} B] {T : Type u_3} [Category.{v_3, u_3} T] (R : Functor B T) {P : MorphismProperty T} {Q : MorphismProperty A} {W : MorphismProperty B} [Q.IsMultiplicative] [W.IsMultiplicative] {L₁ Lβ‚‚ : Functor A T} [P.RespectsIso] [Q.RespectsIso] [W.RespectsIso] (e : L₁ β‰… Lβ‚‚) {X Y : MorphismProperty.Comma Lβ‚‚ R P Q W} (f : X ⟢ Y) :
                                                    def CategoryTheory.MorphismProperty.Comma.mapRight {A : Type u_1} [Category.{v_1, u_1} A] {B : Type u_2} [Category.{v_2, u_2} B] {T : Type u_3} [Category.{v_3, u_3} T] (L : Functor A T) {P : MorphismProperty T} {Q : MorphismProperty A} {W : MorphismProperty B} [Q.IsMultiplicative] [W.IsMultiplicative] {R₁ Rβ‚‚ : Functor B T} (r : R₁ ⟢ Rβ‚‚) (hr : βˆ€ (X : MorphismProperty.Comma L R₁ P Q W), P (CategoryStruct.comp X.hom (r.app X.right))) :
                                                    Functor (MorphismProperty.Comma L R₁ P Q W) (MorphismProperty.Comma L Rβ‚‚ P Q W)

                                                    A natural transformation R₁ ⟢ Rβ‚‚ induces a functor P.Comma L R₁ Q W β₯€ P.Comma L Rβ‚‚ Q W.

                                                    Instances For
                                                      @[simp]
                                                      theorem CategoryTheory.MorphismProperty.Comma.mapRight_map_left {A : Type u_1} [Category.{v_1, u_1} A] {B : Type u_2} [Category.{v_2, u_2} B] {T : Type u_3} [Category.{v_3, u_3} T] (L : Functor A T) {P : MorphismProperty T} {Q : MorphismProperty A} {W : MorphismProperty B} [Q.IsMultiplicative] [W.IsMultiplicative] {R₁ Rβ‚‚ : Functor B T} (r : R₁ ⟢ Rβ‚‚) (hr : βˆ€ (X : MorphismProperty.Comma L R₁ P Q W), P (CategoryStruct.comp X.hom (r.app X.right))) {X Y : MorphismProperty.Comma L R₁ P Q W} (f : X ⟢ Y) :
                                                      ((mapRight L r hr).map f).left = (Hom.hom f).left
                                                      @[simp]
                                                      theorem CategoryTheory.MorphismProperty.Comma.mapRight_obj_hom {A : Type u_1} [Category.{v_1, u_1} A] {B : Type u_2} [Category.{v_2, u_2} B] {T : Type u_3} [Category.{v_3, u_3} T] (L : Functor A T) {P : MorphismProperty T} {Q : MorphismProperty A} {W : MorphismProperty B} [Q.IsMultiplicative] [W.IsMultiplicative] {R₁ Rβ‚‚ : Functor B T} (r : R₁ ⟢ Rβ‚‚) (hr : βˆ€ (X : MorphismProperty.Comma L R₁ P Q W), P (CategoryStruct.comp X.hom (r.app X.right))) (X : MorphismProperty.Comma L R₁ P Q W) :
                                                      @[simp]
                                                      theorem CategoryTheory.MorphismProperty.Comma.mapRight_obj_right {A : Type u_1} [Category.{v_1, u_1} A] {B : Type u_2} [Category.{v_2, u_2} B] {T : Type u_3} [Category.{v_3, u_3} T] (L : Functor A T) {P : MorphismProperty T} {Q : MorphismProperty A} {W : MorphismProperty B} [Q.IsMultiplicative] [W.IsMultiplicative] {R₁ Rβ‚‚ : Functor B T} (r : R₁ ⟢ Rβ‚‚) (hr : βˆ€ (X : MorphismProperty.Comma L R₁ P Q W), P (CategoryStruct.comp X.hom (r.app X.right))) (X : MorphismProperty.Comma L R₁ P Q W) :
                                                      ((mapRight L r hr).obj X).right = X.right
                                                      @[simp]
                                                      theorem CategoryTheory.MorphismProperty.Comma.mapRight_map_right {A : Type u_1} [Category.{v_1, u_1} A] {B : Type u_2} [Category.{v_2, u_2} B] {T : Type u_3} [Category.{v_3, u_3} T] (L : Functor A T) {P : MorphismProperty T} {Q : MorphismProperty A} {W : MorphismProperty B} [Q.IsMultiplicative] [W.IsMultiplicative] {R₁ Rβ‚‚ : Functor B T} (r : R₁ ⟢ Rβ‚‚) (hr : βˆ€ (X : MorphismProperty.Comma L R₁ P Q W), P (CategoryStruct.comp X.hom (r.app X.right))) {X Y : MorphismProperty.Comma L R₁ P Q W} (f : X ⟢ Y) :
                                                      ((mapRight L r hr).map f).right = (Hom.hom f).right
                                                      @[simp]
                                                      theorem CategoryTheory.MorphismProperty.Comma.mapRight_obj_left {A : Type u_1} [Category.{v_1, u_1} A] {B : Type u_2} [Category.{v_2, u_2} B] {T : Type u_3} [Category.{v_3, u_3} T] (L : Functor A T) {P : MorphismProperty T} {Q : MorphismProperty A} {W : MorphismProperty B} [Q.IsMultiplicative] [W.IsMultiplicative] {R₁ Rβ‚‚ : Functor B T} (r : R₁ ⟢ Rβ‚‚) (hr : βˆ€ (X : MorphismProperty.Comma L R₁ P Q W), P (CategoryStruct.comp X.hom (r.app X.right))) (X : MorphismProperty.Comma L R₁ P Q W) :
                                                      ((mapRight L r hr).obj X).left = X.left

                                                      The functor P.Comma L R Q W β₯€ P.Comma L R Q W induced by the identity natural transformation on R is naturally isomorphic to the identity functor.

                                                      Instances For
                                                        def CategoryTheory.MorphismProperty.Comma.mapRightComp {A : Type u_1} [Category.{v_1, u_1} A] {B : Type u_2} [Category.{v_2, u_2} B] {T : Type u_3} [Category.{v_3, u_3} T] (L : Functor A T) {P : MorphismProperty T} {Q : MorphismProperty A} {W : MorphismProperty B} [Q.IsMultiplicative] [W.IsMultiplicative] {R₁ Rβ‚‚ R₃ : Functor B T} [Q.RespectsIso] [W.RespectsIso] (r : R₁ ⟢ Rβ‚‚) (r' : Rβ‚‚ ⟢ R₃) (hr : βˆ€ (X : MorphismProperty.Comma L R₁ P Q W), P (CategoryStruct.comp X.hom (r.app X.right))) (hr' : βˆ€ (X : MorphismProperty.Comma L Rβ‚‚ P Q W), P (CategoryStruct.comp X.hom (r'.app X.right))) (hrr' : βˆ€ (X : MorphismProperty.Comma L R₁ P Q W), P (CategoryStruct.comp X.hom ((CategoryStruct.comp r r').app X.right))) :
                                                        mapRight L (CategoryStruct.comp r r') hrr' β‰… (mapRight L r hr).comp (mapRight L r' hr')

                                                        The functor P.Comma L R₁ Q W β₯€ P.Comma L R₃ Q W induced by the composition of the natural transformations r : R₁ ⟢ Rβ‚‚ and r' : Rβ‚‚ ⟢ R₃ is naturally isomorphic to the composition of the functors induced by these natural transformations.

                                                        Instances For
                                                          @[simp]
                                                          theorem CategoryTheory.MorphismProperty.Comma.mapRightComp_inv_app_left {A : Type u_1} [Category.{v_1, u_1} A] {B : Type u_2} [Category.{v_2, u_2} B] {T : Type u_3} [Category.{v_3, u_3} T] (L : Functor A T) {P : MorphismProperty T} {Q : MorphismProperty A} {W : MorphismProperty B} [Q.IsMultiplicative] [W.IsMultiplicative] {R₁ Rβ‚‚ R₃ : Functor B T} [Q.RespectsIso] [W.RespectsIso] (r : R₁ ⟢ Rβ‚‚) (r' : Rβ‚‚ ⟢ R₃) (hr : βˆ€ (X : MorphismProperty.Comma L R₁ P Q W), P (CategoryStruct.comp X.hom (r.app X.right))) (hr' : βˆ€ (X : MorphismProperty.Comma L Rβ‚‚ P Q W), P (CategoryStruct.comp X.hom (r'.app X.right))) (hrr' : βˆ€ (X : MorphismProperty.Comma L R₁ P Q W), P (CategoryStruct.comp X.hom ((CategoryStruct.comp r r').app X.right))) (X : MorphismProperty.Comma L R₁ P Q W) :
                                                          ((mapRightComp L r r' hr hr' hrr').inv.app X).left = CategoryStruct.id X.left
                                                          @[simp]
                                                          theorem CategoryTheory.MorphismProperty.Comma.mapRightComp_inv_app_right {A : Type u_1} [Category.{v_1, u_1} A] {B : Type u_2} [Category.{v_2, u_2} B] {T : Type u_3} [Category.{v_3, u_3} T] (L : Functor A T) {P : MorphismProperty T} {Q : MorphismProperty A} {W : MorphismProperty B} [Q.IsMultiplicative] [W.IsMultiplicative] {R₁ Rβ‚‚ R₃ : Functor B T} [Q.RespectsIso] [W.RespectsIso] (r : R₁ ⟢ Rβ‚‚) (r' : Rβ‚‚ ⟢ R₃) (hr : βˆ€ (X : MorphismProperty.Comma L R₁ P Q W), P (CategoryStruct.comp X.hom (r.app X.right))) (hr' : βˆ€ (X : MorphismProperty.Comma L Rβ‚‚ P Q W), P (CategoryStruct.comp X.hom (r'.app X.right))) (hrr' : βˆ€ (X : MorphismProperty.Comma L R₁ P Q W), P (CategoryStruct.comp X.hom ((CategoryStruct.comp r r').app X.right))) (X : MorphismProperty.Comma L R₁ P Q W) :
                                                          ((mapRightComp L r r' hr hr' hrr').inv.app X).right = CategoryStruct.id X.right
                                                          @[simp]
                                                          theorem CategoryTheory.MorphismProperty.Comma.mapRightComp_hom_app_left {A : Type u_1} [Category.{v_1, u_1} A] {B : Type u_2} [Category.{v_2, u_2} B] {T : Type u_3} [Category.{v_3, u_3} T] (L : Functor A T) {P : MorphismProperty T} {Q : MorphismProperty A} {W : MorphismProperty B} [Q.IsMultiplicative] [W.IsMultiplicative] {R₁ Rβ‚‚ R₃ : Functor B T} [Q.RespectsIso] [W.RespectsIso] (r : R₁ ⟢ Rβ‚‚) (r' : Rβ‚‚ ⟢ R₃) (hr : βˆ€ (X : MorphismProperty.Comma L R₁ P Q W), P (CategoryStruct.comp X.hom (r.app X.right))) (hr' : βˆ€ (X : MorphismProperty.Comma L Rβ‚‚ P Q W), P (CategoryStruct.comp X.hom (r'.app X.right))) (hrr' : βˆ€ (X : MorphismProperty.Comma L R₁ P Q W), P (CategoryStruct.comp X.hom ((CategoryStruct.comp r r').app X.right))) (X : MorphismProperty.Comma L R₁ P Q W) :
                                                          ((mapRightComp L r r' hr hr' hrr').hom.app X).left = CategoryStruct.id X.left
                                                          @[simp]
                                                          theorem CategoryTheory.MorphismProperty.Comma.mapRightComp_hom_app_right {A : Type u_1} [Category.{v_1, u_1} A] {B : Type u_2} [Category.{v_2, u_2} B] {T : Type u_3} [Category.{v_3, u_3} T] (L : Functor A T) {P : MorphismProperty T} {Q : MorphismProperty A} {W : MorphismProperty B} [Q.IsMultiplicative] [W.IsMultiplicative] {R₁ Rβ‚‚ R₃ : Functor B T} [Q.RespectsIso] [W.RespectsIso] (r : R₁ ⟢ Rβ‚‚) (r' : Rβ‚‚ ⟢ R₃) (hr : βˆ€ (X : MorphismProperty.Comma L R₁ P Q W), P (CategoryStruct.comp X.hom (r.app X.right))) (hr' : βˆ€ (X : MorphismProperty.Comma L Rβ‚‚ P Q W), P (CategoryStruct.comp X.hom (r'.app X.right))) (hrr' : βˆ€ (X : MorphismProperty.Comma L R₁ P Q W), P (CategoryStruct.comp X.hom ((CategoryStruct.comp r r').app X.right))) (X : MorphismProperty.Comma L R₁ P Q W) :
                                                          ((mapRightComp L r r' hr hr' hrr').hom.app X).right = CategoryStruct.id X.right
                                                          def CategoryTheory.MorphismProperty.Comma.mapRightEq {A : Type u_1} [Category.{v_1, u_1} A] {B : Type u_2} [Category.{v_2, u_2} B] {T : Type u_3} [Category.{v_3, u_3} T] (L : Functor A T) {P : MorphismProperty T} {Q : MorphismProperty A} {W : MorphismProperty B} [Q.IsMultiplicative] [W.IsMultiplicative] {R₁ Rβ‚‚ : Functor B T} [Q.RespectsIso] [W.RespectsIso] (r r' : R₁ ⟢ Rβ‚‚) (h : r = r') (hr : βˆ€ (X : MorphismProperty.Comma L R₁ P Q W), P (CategoryStruct.comp X.hom (r.app X.right))) :
                                                          mapRight L r hr β‰… mapRight L r' β‹―

                                                          Two equal natural transformations R₁ ⟢ Rβ‚‚ yield naturally isomorphic functors P.Comma L R₁ Q W β₯€ P.Comma L Rβ‚‚ Q W.

                                                          Instances For
                                                            @[simp]
                                                            theorem CategoryTheory.MorphismProperty.Comma.mapRightEq_hom_app_left {A : Type u_1} [Category.{v_1, u_1} A] {B : Type u_2} [Category.{v_2, u_2} B] {T : Type u_3} [Category.{v_3, u_3} T] (L : Functor A T) {P : MorphismProperty T} {Q : MorphismProperty A} {W : MorphismProperty B} [Q.IsMultiplicative] [W.IsMultiplicative] {R₁ Rβ‚‚ : Functor B T} [Q.RespectsIso] [W.RespectsIso] (r r' : R₁ ⟢ Rβ‚‚) (h : r = r') (hr : βˆ€ (X : MorphismProperty.Comma L R₁ P Q W), P (CategoryStruct.comp X.hom (r.app X.right))) (X : MorphismProperty.Comma L R₁ P Q W) :
                                                            @[simp]
                                                            theorem CategoryTheory.MorphismProperty.Comma.mapRightEq_inv_app_right {A : Type u_1} [Category.{v_1, u_1} A] {B : Type u_2} [Category.{v_2, u_2} B] {T : Type u_3} [Category.{v_3, u_3} T] (L : Functor A T) {P : MorphismProperty T} {Q : MorphismProperty A} {W : MorphismProperty B} [Q.IsMultiplicative] [W.IsMultiplicative] {R₁ Rβ‚‚ : Functor B T} [Q.RespectsIso] [W.RespectsIso] (r r' : R₁ ⟢ Rβ‚‚) (h : r = r') (hr : βˆ€ (X : MorphismProperty.Comma L R₁ P Q W), P (CategoryStruct.comp X.hom (r.app X.right))) (X : MorphismProperty.Comma L R₁ P Q W) :
                                                            @[simp]
                                                            theorem CategoryTheory.MorphismProperty.Comma.mapRightEq_hom_app_right {A : Type u_1} [Category.{v_1, u_1} A] {B : Type u_2} [Category.{v_2, u_2} B] {T : Type u_3} [Category.{v_3, u_3} T] (L : Functor A T) {P : MorphismProperty T} {Q : MorphismProperty A} {W : MorphismProperty B} [Q.IsMultiplicative] [W.IsMultiplicative] {R₁ Rβ‚‚ : Functor B T} [Q.RespectsIso] [W.RespectsIso] (r r' : R₁ ⟢ Rβ‚‚) (h : r = r') (hr : βˆ€ (X : MorphismProperty.Comma L R₁ P Q W), P (CategoryStruct.comp X.hom (r.app X.right))) (X : MorphismProperty.Comma L R₁ P Q W) :
                                                            @[simp]
                                                            theorem CategoryTheory.MorphismProperty.Comma.mapRightEq_inv_app_left {A : Type u_1} [Category.{v_1, u_1} A] {B : Type u_2} [Category.{v_2, u_2} B] {T : Type u_3} [Category.{v_3, u_3} T] (L : Functor A T) {P : MorphismProperty T} {Q : MorphismProperty A} {W : MorphismProperty B} [Q.IsMultiplicative] [W.IsMultiplicative] {R₁ Rβ‚‚ : Functor B T} [Q.RespectsIso] [W.RespectsIso] (r r' : R₁ ⟢ Rβ‚‚) (h : r = r') (hr : βˆ€ (X : MorphismProperty.Comma L R₁ P Q W), P (CategoryStruct.comp X.hom (r.app X.right))) (X : MorphismProperty.Comma L R₁ P Q W) :

                                                            A natural isomorphism R₁ β‰… Rβ‚‚ induces an equivalence of categories P.Comma L R₁ Q W β‰Œ P.Comma L Rβ‚‚ Q W.

                                                            Instances For
                                                              @[reducible, inline]
                                                              abbrev CategoryTheory.MorphismProperty.Over {T : Type u_1} [Category.{v_1, u_1} T] (P Q : MorphismProperty T) (X : T) :
                                                              Type (max v_1 u_1)

                                                              Given a morphism property P on a category C and an object X : C, this is the subcategory of Over X defined by P where morphisms satisfy Q.

                                                              Instances For
                                                                @[reducible, inline]

                                                                The forgetful functor from the full subcategory of Over X defined by P to Over X.

                                                                Instances For

                                                                  Occasionally useful for rewriting in the backwards direction.

                                                                  def CategoryTheory.MorphismProperty.Over.Hom.mk {T : Type u_1} [Category.{v_1, u_1} T] {P Q : MorphismProperty T} {X : T} [Q.IsMultiplicative] {A B : P.Over Q X} (f : A.toComma ⟢ B.toComma) (hf : Q f.left) :
                                                                  A ⟢ B

                                                                  Construct a morphism in P.Over Q X from a morphism in Over.X.

                                                                  Instances For
                                                                    @[simp]
                                                                    theorem CategoryTheory.MorphismProperty.Over.Hom.mk_hom {T : Type u_1} [Category.{v_1, u_1} T] {P Q : MorphismProperty T} {X : T} [Q.IsMultiplicative] {A B : P.Over Q X} (f : A.toComma ⟢ B.toComma) (hf : Q f.left) :
                                                                    Comma.Hom.hom (mk f hf) = f
                                                                    def CategoryTheory.MorphismProperty.Over.mk {T : Type u_1} [Category.{v_1, u_1} T] {P : MorphismProperty T} (Q : MorphismProperty T) {X A : T} (f : A ⟢ X) (hf : P f) :
                                                                    P.Over Q X

                                                                    Make an object of P.Over Q X from a morphism f : A ⟢ X and a proof of P f.

                                                                    Instances For
                                                                      @[simp]
                                                                      theorem CategoryTheory.MorphismProperty.Over.mk_hom {T : Type u_1} [Category.{v_1, u_1} T] {P : MorphismProperty T} (Q : MorphismProperty T) {X A : T} (f : A ⟢ X) (hf : P f) :
                                                                      (Over.mk Q f hf).hom = f
                                                                      @[simp]
                                                                      theorem CategoryTheory.MorphismProperty.Over.mk_left {T : Type u_1} [Category.{v_1, u_1} T] {P : MorphismProperty T} (Q : MorphismProperty T) {X A : T} (f : A ⟢ X) (hf : P f) :
                                                                      (Over.mk Q f hf).left = A
                                                                      def CategoryTheory.MorphismProperty.Over.homMk {T : Type u_1} [Category.{v_1, u_1} T] {P Q : MorphismProperty T} {X : T} [Q.IsMultiplicative] {A B : P.Over Q X} (f : A.left ⟢ B.left) (w : CategoryStruct.comp f B.hom = A.hom := by cat_disch) (hf : Q f := by trivial) :
                                                                      A ⟢ B

                                                                      Make a morphism in P.Over Q X from a morphism in T with compatibilities.

                                                                      Instances For
                                                                        @[simp]
                                                                        theorem CategoryTheory.MorphismProperty.Over.homMk_hom {T : Type u_1} [Category.{v_1, u_1} T] {P Q : MorphismProperty T} {X : T} [Q.IsMultiplicative] {A B : P.Over Q X} (f : A.left ⟢ B.left) (w : CategoryStruct.comp f B.hom = A.hom := by cat_disch) (hf : Q f := by trivial) :
                                                                        def CategoryTheory.MorphismProperty.Over.isoMk {T : Type u_1} [Category.{v_1, u_1} T] {P Q : MorphismProperty T} {X : T} [Q.IsMultiplicative] [Q.RespectsIso] {A B : P.Over Q X} (f : A.left β‰… B.left) (w : CategoryStruct.comp f.hom B.hom = A.hom := by cat_disch) :
                                                                        A β‰… B

                                                                        Make an isomorphism in P.Over Q X from an isomorphism in T with compatibilities.

                                                                        Instances For
                                                                          @[simp]
                                                                          theorem CategoryTheory.MorphismProperty.Over.isoMk_hom_left {T : Type u_1} [Category.{v_1, u_1} T] {P Q : MorphismProperty T} {X : T} [Q.IsMultiplicative] [Q.RespectsIso] {A B : P.Over Q X} (f : A.left β‰… B.left) (w : CategoryStruct.comp f.hom B.hom = A.hom := by cat_disch) :
                                                                          @[simp]
                                                                          theorem CategoryTheory.MorphismProperty.Over.isoMk_inv_left {T : Type u_1} [Category.{v_1, u_1} T] {P Q : MorphismProperty T} {X : T} [Q.IsMultiplicative] [Q.RespectsIso] {A B : P.Over Q X} (f : A.left β‰… B.left) (w : CategoryStruct.comp f.hom B.hom = A.hom := by cat_disch) :
                                                                          theorem CategoryTheory.MorphismProperty.Over.Hom.ext {T : Type u_1} [Category.{v_1, u_1} T] {P Q : MorphismProperty T} {X : T} [Q.IsMultiplicative] {A B : P.Over Q X} {f g : A ⟢ B} (h : f.left = g.left) :
                                                                          f = g
                                                                          theorem CategoryTheory.MorphismProperty.Over.Hom.ext_iff {T : Type u_1} [Category.{v_1, u_1} T] {P Q : MorphismProperty T} {X : T} [Q.IsMultiplicative] {A B : P.Over Q X} {f g : A ⟢ B} :
                                                                          f = g ↔ f.left = g.left
                                                                          @[reducible, inline]
                                                                          abbrev CategoryTheory.MorphismProperty.Over.changeProp {T : Type u_1} [Category.{v_1, u_1} T] {P Q : MorphismProperty T} (X : T) [Q.IsMultiplicative] {P' Q' : MorphismProperty T} [Q'.IsMultiplicative] (hPP' : P ≀ P') (hQQ' : Q ≀ Q') :
                                                                          Functor (P.Over Q X) (P'.Over Q' X)

                                                                          The natural inclusion induced by implications of morphism properties.

                                                                          Instances For
                                                                            @[simp]
                                                                            theorem CategoryTheory.MorphismProperty.Over.changeProp_obj_left {T : Type u_1} [Category.{v_1, u_1} T] {P Q : MorphismProperty T} {X : T} [Q.IsMultiplicative] {P' Q' : MorphismProperty T} [Q'.IsMultiplicative] (hPP' : P ≀ P') (hQQ' : Q ≀ Q') (Y : P.Over Q X) :
                                                                            ((changeProp X hPP' hQQ').obj Y).left = Y.left
                                                                            @[simp]
                                                                            theorem CategoryTheory.MorphismProperty.Over.changeProp_obj_hom {T : Type u_1} [Category.{v_1, u_1} T] {P Q : MorphismProperty T} {X : T} [Q.IsMultiplicative] {P' Q' : MorphismProperty T} [Q'.IsMultiplicative] (hPP' : P ≀ P') (hQQ' : Q ≀ Q') (Y : P.Over Q X) :
                                                                            ((changeProp X hPP' hQQ').obj Y).hom = Y.hom
                                                                            @[reducible, inline]
                                                                            abbrev CategoryTheory.MorphismProperty.Under {T : Type u_1} [Category.{v_1, u_1} T] (P Q : MorphismProperty T) (X : T) :
                                                                            Type (max v_1 u_1)

                                                                            Given a morphism property P on a category C and an object X : C, this is the subcategory of Under X defined by P where morphisms satisfy Q.

                                                                            Instances For
                                                                              @[reducible, inline]

                                                                              The forgetful functor from the full subcategory of Under X defined by P to Under X.

                                                                              Instances For

                                                                                Occasionally useful for rewriting in the backwards direction.

                                                                                def CategoryTheory.MorphismProperty.Under.Hom.mk {T : Type u_1} [Category.{v_1, u_1} T] {P Q : MorphismProperty T} {X : T} [Q.IsMultiplicative] {A B : P.Under Q X} (f : A.toComma ⟢ B.toComma) (hf : Q f.right) :
                                                                                A ⟢ B

                                                                                Construct a morphism in P.Under Q X from a morphism in Under.X.

                                                                                Instances For
                                                                                  def CategoryTheory.MorphismProperty.Under.mk {T : Type u_1} [Category.{v_1, u_1} T] {P : MorphismProperty T} (Q : MorphismProperty T) {X A : T} (f : X ⟢ A) (hf : P f) :
                                                                                  P.Under Q X

                                                                                  Make an object of P.Under Q X from a morphism f : A ⟢ X and a proof of P f.

                                                                                  Instances For
                                                                                    @[simp]
                                                                                    theorem CategoryTheory.MorphismProperty.Under.mk_hom {T : Type u_1} [Category.{v_1, u_1} T] {P : MorphismProperty T} (Q : MorphismProperty T) {X A : T} (f : X ⟢ A) (hf : P f) :
                                                                                    (Under.mk Q f hf).hom = f
                                                                                    @[simp]
                                                                                    theorem CategoryTheory.MorphismProperty.Under.mk_left {T : Type u_1} [Category.{v_1, u_1} T] {P : MorphismProperty T} (Q : MorphismProperty T) {X A : T} (f : X ⟢ A) (hf : P f) :
                                                                                    (Under.mk Q f hf).left = { as := PUnit.unit }
                                                                                    def CategoryTheory.MorphismProperty.Under.homMk {T : Type u_1} [Category.{v_1, u_1} T] {P Q : MorphismProperty T} {X : T} [Q.IsMultiplicative] {A B : P.Under Q X} (f : A.right ⟢ B.right) (w : CategoryStruct.comp A.hom f = B.hom := by cat_disch) (hf : Q f := by trivial) :
                                                                                    A ⟢ B

                                                                                    Make a morphism in P.Under Q X from a morphism in T with compatibilities.

                                                                                    Instances For
                                                                                      @[simp]
                                                                                      theorem CategoryTheory.MorphismProperty.Under.homMk_hom {T : Type u_1} [Category.{v_1, u_1} T] {P Q : MorphismProperty T} {X : T} [Q.IsMultiplicative] {A B : P.Under Q X} (f : A.right ⟢ B.right) (w : CategoryStruct.comp A.hom f = B.hom := by cat_disch) (hf : Q f := by trivial) :
                                                                                      def CategoryTheory.MorphismProperty.Under.isoMk {T : Type u_1} [Category.{v_1, u_1} T] {P Q : MorphismProperty T} {X : T} [Q.IsMultiplicative] [Q.RespectsIso] {A B : P.Under Q X} (f : A.right β‰… B.right) (w : CategoryStruct.comp A.hom f.hom = B.hom := by cat_disch) :
                                                                                      A β‰… B

                                                                                      Make an isomorphism in P.Under Q X from an isomorphism in T with compatibilities.

                                                                                      Instances For
                                                                                        theorem CategoryTheory.MorphismProperty.Under.Hom.ext {T : Type u_1} [Category.{v_1, u_1} T] {P Q : MorphismProperty T} {X : T} [Q.IsMultiplicative] {A B : P.Under Q X} {f g : A ⟢ B} (h : f.right = g.right) :
                                                                                        f = g
                                                                                        theorem CategoryTheory.MorphismProperty.Under.Hom.ext_iff {T : Type u_1} [Category.{v_1, u_1} T] {P Q : MorphismProperty T} {X : T} [Q.IsMultiplicative] {A B : P.Under Q X} {f g : A ⟢ B} :
                                                                                        f = g ↔ f.right = g.right
                                                                                        @[reducible, inline]
                                                                                        abbrev CategoryTheory.MorphismProperty.CostructuredArrow {C : Type u_1} {D : Type u_2} [Category.{u_3, u_1} C] [Category.{u_4, u_2} D] (P : MorphismProperty D) (Q : MorphismProperty C) (F : Functor C D) (X : D) :
                                                                                        Type (max u_1 u_4)

                                                                                        Given a morphism property P on a category C and an object X : C, this is the subcategory of CostructuredArrow F X defined by P where morphisms satisfy Q.

                                                                                        Instances For
                                                                                          def CategoryTheory.MorphismProperty.CostructuredArrow.mk {C : Type u_1} {D : Type u_2} [Category.{u_3, u_1} C] [Category.{u_4, u_2} D] {P : MorphismProperty D} (Q : MorphismProperty C) {F : Functor C D} {X : D} {A : C} (f : F.obj A ⟢ X) (hf : P f) :

                                                                                          Construct an object of P.CostructuredArrow Q F X from a morphism F.obj A ⟢ X.

                                                                                          Instances For
                                                                                            @[simp]
                                                                                            theorem CategoryTheory.MorphismProperty.CostructuredArrow.mk_hom {C : Type u_1} {D : Type u_2} [Category.{u_3, u_1} C] [Category.{u_4, u_2} D] {P : MorphismProperty D} (Q : MorphismProperty C) {F : Functor C D} {X : D} {A : C} (f : F.obj A ⟢ X) (hf : P f) :
                                                                                            @[simp]
                                                                                            theorem CategoryTheory.MorphismProperty.CostructuredArrow.mk_left {C : Type u_1} {D : Type u_2} [Category.{u_3, u_1} C] [Category.{u_4, u_2} D] {P : MorphismProperty D} (Q : MorphismProperty C) {F : Functor C D} {X : D} {A : C} (f : F.obj A ⟢ X) (hf : P f) :
                                                                                            def CategoryTheory.MorphismProperty.CostructuredArrow.homMk {C : Type u_1} {D : Type u_2} [Category.{u_3, u_1} C] [Category.{u_4, u_2} D] {P : MorphismProperty D} {Q : MorphismProperty C} [Q.IsMultiplicative] {F : Functor C D} {X : D} {A B : P.CostructuredArrow Q F X} (f : A.left ⟢ B.left) (hf : Q f) (w : CategoryStruct.comp (F.map f) B.hom = A.hom := by cat_disch) :
                                                                                            A ⟢ B

                                                                                            Construct a morphism in P.CostructuredArrow Q F X by giving a morphism on the underlying objects of C.

                                                                                            Instances For
                                                                                              @[simp]
                                                                                              theorem CategoryTheory.MorphismProperty.CostructuredArrow.homMk_left {C : Type u_1} {D : Type u_2} [Category.{u_3, u_1} C] [Category.{u_4, u_2} D] {P : MorphismProperty D} {Q : MorphismProperty C} [Q.IsMultiplicative] {F : Functor C D} {X : D} {A B : P.CostructuredArrow Q F X} (f : A.left ⟢ B.left) (hf : Q f) (w : CategoryStruct.comp (F.map f) B.hom = A.hom := by cat_disch) :
                                                                                              (homMk f hf w).left = f
                                                                                              theorem CategoryTheory.MorphismProperty.CostructuredArrow.Hom.ext {C : Type u_1} {D : Type u_2} [Category.{u_3, u_1} C] [Category.{u_4, u_2} D] {P : MorphismProperty D} {Q : MorphismProperty C} [Q.IsMultiplicative] {F : Functor C D} {X : D} {A B : P.CostructuredArrow Q F X} {f g : A ⟢ B} (h : f.left = g.left) :
                                                                                              f = g
                                                                                              @[reducible, inline]

                                                                                              The forgetful functor from the subcategory P.CostructuredArrow Q F X.

                                                                                              Instances For

                                                                                                Reinterpreting an F-costructured arrow F.obj A ⟢ X as an arrow over X.

                                                                                                Instances For
                                                                                                  @[simp]
                                                                                                  theorem CategoryTheory.MorphismProperty.CostructuredArrow.toOver_map {C : Type u_1} {D : Type u_2} [Category.{u_3, u_1} C] [Category.{u_4, u_2} D] (P : MorphismProperty D) (F : Functor C D) (X : D) {X✝ Y✝ : P.CostructuredArrow ⊀ F X} (f : X✝ ⟢ Y✝) :
                                                                                                  (CostructuredArrow.toOver P F X).map f = Over.homMk (F.map f.left) β‹― β‹―