Preservation of projective objects #
We define a typeclass Functor.PreservesProjectiveObjects.
We restate the existing result that if F ⊣ G is an adjunction and G preserves epimorphisms,
then F preserves projective objects. We show that the converse is true if the domain of F has
enough projectives.
class CategoryTheory.Functor.PreservesProjectiveObjects {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] (F : Functor C D) :
A functor preserves projective objects if it maps projective objects to projective objects.
- projective_obj {X : C} : Projective X → Projective (F.obj X)
Instances
instance CategoryTheory.Functor.projective_obj {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] (F : Functor C D) [F.PreservesProjectiveObjects] (X : C) [Projective X] :
Projective (F.obj X)
See Functor.projective_obj_of_projective for a variant taking Projective X as an explicit
argument.
theorem CategoryTheory.Functor.projective_obj_of_projective {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] (F : Functor C D) [F.PreservesProjectiveObjects] {X : C} (h : Projective X) :
Projective (F.obj X)
See Functor.projective_obj for a variant taking Projective X as a typeclass argument.
instance CategoryTheory.Functor.preservesProjectiveObjects_comp {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] {E : Type u₃} [Category.{v₃, u₃} E] (F : Functor C D) (G : Functor D E) [F.PreservesProjectiveObjects] [G.PreservesProjectiveObjects] :
theorem CategoryTheory.Functor.preservesProjectiveObjects_of_adjunction_of_preservesEpimorphisms {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] {F : Functor C D} {G : Functor D C} (adj : F ⊣ G) [G.PreservesEpimorphisms] :
@[instance 100]
instance CategoryTheory.Functor.preservesProjectiveObjects_of_isEquivalence {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] {F : Functor C D} [F.IsEquivalence] :
theorem CategoryTheory.Functor.preservesEpimorphisms_of_adjunction_of_preservesProjectiveObjects {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] [EnoughProjectives C] {F : Functor C D} {G : Functor D C} (adj : F ⊣ G) [F.PreservesProjectiveObjects] :