File: Mathlib/CategoryTheory/Functor/EpiMono.lean

full_name: CategoryTheory.Functor.PreservesMonomorphisms.preserves
code: /-- A functor preserves monomorphisms if it maps monomorphisms to monomorphisms. -/
class PreservesMonomorphisms (F : C ⥤ D) : Prop where
  /-- A functor preserves monomorphisms if it maps monomorphisms to monomorphisms. -/
  preserves : ∀ {X Y : C} (f : X ⟶ Y) [Mono f], Mono (F.map f)
goal: CategoryTheory.Mono (F.map f)

full_name: CategoryTheory.Functor.PreservesMonomorphisms
code: /-- A functor preserves monomorphisms if it maps monomorphisms to monomorphisms. -/
class PreservesMonomorphisms (F : C ⥤ D) : Prop where
  /-- A functor preserves monomorphisms if it maps monomorphisms to monomorphisms. -/
  preserves : ∀ {X Y : C} (f : X ⟶ Y) [Mono f], Mono (F.map f)
goal: Prop

full_name: CategoryTheory.Functor.map_mono
code: instance map_mono (F : C ⥤ D) [PreservesMonomorphisms F] {X Y : C} (f : X ⟶ Y) [Mono f] :
    Mono (F.map f) 
goal: CategoryTheory.Mono (F.map f)

full_name: CategoryTheory.Functor.PreservesEpimorphisms
code: /-- A functor preserves epimorphisms if it maps epimorphisms to epimorphisms. -/
class PreservesEpimorphisms (F : C ⥤ D) : Prop where
  /-- A functor preserves epimorphisms if it maps epimorphisms to epimorphisms. -/
  preserves : ∀ {X Y : C} (f : X ⟶ Y) [Epi f], Epi (F.map f)
goal: Prop

full_name: CategoryTheory.Functor.PreservesEpimorphisms.preserves
code: /-- A functor preserves epimorphisms if it maps epimorphisms to epimorphisms. -/
class PreservesEpimorphisms (F : C ⥤ D) : Prop where
  /-- A functor preserves epimorphisms if it maps epimorphisms to epimorphisms. -/
  preserves : ∀ {X Y : C} (f : X ⟶ Y) [Epi f], Epi (F.map f)
goal: CategoryTheory.Epi (F.map f)

full_name: CategoryTheory.Functor.map_epi
code: instance map_epi (F : C ⥤ D) [PreservesEpimorphisms F] {X Y : C} (f : X ⟶ Y) [Epi f] :
    Epi (F.map f) 
goal: CategoryTheory.Epi (F.map f)

full_name: CategoryTheory.Functor.ReflectsMonomorphisms.reflects
code: /-- A functor reflects monomorphisms if morphisms that are mapped to monomorphisms are themselves
    monomorphisms. -/
class ReflectsMonomorphisms (F : C ⥤ D) : Prop where
   /-- A functor reflects monomorphisms if morphisms that are mapped to monomorphisms are themselves
    monomorphisms. -/
  reflects : ∀ {X Y : C} (f : X ⟶ Y), Mono (F.map f) → Mono f
goal: CategoryTheory.Mono (F.map f) → CategoryTheory.Mono f

full_name: CategoryTheory.Functor.ReflectsMonomorphisms
code: /-- A functor reflects monomorphisms if morphisms that are mapped to monomorphisms are themselves
    monomorphisms. -/
class ReflectsMonomorphisms (F : C ⥤ D) : Prop where
   /-- A functor reflects monomorphisms if morphisms that are mapped to monomorphisms are themselves
    monomorphisms. -/
  reflects : ∀ {X Y : C} (f : X ⟶ Y), Mono (F.map f) → Mono f
goal: Prop

full_name: CategoryTheory.Functor.mono_of_mono_map
code: theorem mono_of_mono_map (F : C ⥤ D) [ReflectsMonomorphisms F] {X Y : C} {f : X ⟶ Y}
    (h : Mono (F.map f)) : Mono f 
goal: CategoryTheory.Mono f

full_name: CategoryTheory.Functor.ReflectsEpimorphisms.reflects
code: /-- A functor reflects epimorphisms if morphisms that are mapped to epimorphisms are themselves
    epimorphisms. -/
class ReflectsEpimorphisms (F : C ⥤ D) : Prop where
  /-- A functor reflects epimorphisms if morphisms that are mapped to epimorphisms are themselves
      epimorphisms. -/
  reflects : ∀ {X Y : C} (f : X ⟶ Y), Epi (F.map f) → Epi f
goal: CategoryTheory.Epi (F.map f) → CategoryTheory.Epi f

full_name: CategoryTheory.Functor.ReflectsEpimorphisms
code: /-- A functor reflects epimorphisms if morphisms that are mapped to epimorphisms are themselves
    epimorphisms. -/
class ReflectsEpimorphisms (F : C ⥤ D) : Prop where
  /-- A functor reflects epimorphisms if morphisms that are mapped to epimorphisms are themselves
      epimorphisms. -/
  reflects : ∀ {X Y : C} (f : X ⟶ Y), Epi (F.map f) → Epi f
goal: Prop

full_name: CategoryTheory.Functor.epi_of_epi_map
code: theorem epi_of_epi_map (F : C ⥤ D) [ReflectsEpimorphisms F] {X Y : C} {f : X ⟶ Y}
    (h : Epi (F.map f)) : Epi f 
goal: CategoryTheory.Epi f

full_name: CategoryTheory.Functor.preservesMonomorphisms_comp
code: instance preservesMonomorphisms_comp (F : C ⥤ D) (G : D ⥤ E) [PreservesMonomorphisms F]
    [PreservesMonomorphisms G] : PreservesMonomorphisms (F ⋙ G) 
goal: (F ⋙ G).PreservesMonomorphisms

full_name: CategoryTheory.Functor.preservesEpimorphisms_comp
code: instance preservesEpimorphisms_comp (F : C ⥤ D) (G : D ⥤ E) [PreservesEpimorphisms F]
    [PreservesEpimorphisms G] : PreservesEpimorphisms (F ⋙ G) 
goal: (F ⋙ G).PreservesEpimorphisms

full_name: CategoryTheory.Functor.reflectsMonomorphisms_comp
code: instance reflectsMonomorphisms_comp (F : C ⥤ D) (G : D ⥤ E) [ReflectsMonomorphisms F]
    [ReflectsMonomorphisms G] : ReflectsMonomorphisms (F ⋙ G) 
goal: (F ⋙ G).ReflectsMonomorphisms

full_name: CategoryTheory.Functor.reflectsEpimorphisms_comp
code: instance reflectsEpimorphisms_comp (F : C ⥤ D) (G : D ⥤ E) [ReflectsEpimorphisms F]
    [ReflectsEpimorphisms G] : ReflectsEpimorphisms (F ⋙ G) 
goal: (F ⋙ G).ReflectsEpimorphisms

full_name: CategoryTheory.Functor.preservesEpimorphisms_of_preserves_of_reflects
code: theorem preservesEpimorphisms_of_preserves_of_reflects (F : C ⥤ D) (G : D ⥤ E)
    [PreservesEpimorphisms (F ⋙ G)] [ReflectsEpimorphisms G] : PreservesEpimorphisms F 
goal: F.PreservesEpimorphisms

full_name: CategoryTheory.Functor.preservesMonomorphisms_of_preserves_of_reflects
code: theorem preservesMonomorphisms_of_preserves_of_reflects (F : C ⥤ D) (G : D ⥤ E)
    [PreservesMonomorphisms (F ⋙ G)] [ReflectsMonomorphisms G] : PreservesMonomorphisms F 
goal: F.PreservesMonomorphisms

full_name: CategoryTheory.Functor.reflectsEpimorphisms_of_preserves_of_reflects
code: theorem reflectsEpimorphisms_of_preserves_of_reflects (F : C ⥤ D) (G : D ⥤ E)
    [PreservesEpimorphisms G] [ReflectsEpimorphisms (F ⋙ G)] : ReflectsEpimorphisms F 
goal: F.ReflectsEpimorphisms

full_name: CategoryTheory.Functor.reflectsMonomorphisms_of_preserves_of_reflects
code: theorem reflectsMonomorphisms_of_preserves_of_reflects (F : C ⥤ D) (G : D ⥤ E)
    [PreservesMonomorphisms G] [ReflectsMonomorphisms (F ⋙ G)] : ReflectsMonomorphisms F 
goal: F.ReflectsMonomorphisms

full_name: CategoryTheory.Functor.preservesMonomorphisms.of_iso
code: theorem preservesMonomorphisms.of_iso {F G : C ⥤ D} [PreservesMonomorphisms F] (α : F ≅ G) :
    PreservesMonomorphisms G 
goal: G.PreservesMonomorphisms

full_name: CategoryTheory.Functor.preservesMonomorphisms.iso_iff
code: theorem preservesMonomorphisms.iso_iff {F G : C ⥤ D} (α : F ≅ G) :
    PreservesMonomorphisms F ↔ PreservesMonomorphisms G 
goal: F.PreservesMonomorphisms ↔ G.PreservesMonomorphisms

full_name: CategoryTheory.Functor.preservesEpimorphisms.of_iso
code: theorem preservesEpimorphisms.of_iso {F G : C ⥤ D} [PreservesEpimorphisms F] (α : F ≅ G) :
    PreservesEpimorphisms G 
goal: G.PreservesEpimorphisms

full_name: CategoryTheory.Functor.preservesEpimorphisms.iso_iff
code: theorem preservesEpimorphisms.iso_iff {F G : C ⥤ D} (α : F ≅ G) :
    PreservesEpimorphisms F ↔ PreservesEpimorphisms G 
goal: F.PreservesEpimorphisms ↔ G.PreservesEpimorphisms

full_name: CategoryTheory.Functor.reflectsMonomorphisms.of_iso
code: theorem reflectsMonomorphisms.of_iso {F G : C ⥤ D} [ReflectsMonomorphisms F] (α : F ≅ G) :
    ReflectsMonomorphisms G 
goal: G.ReflectsMonomorphisms

full_name: CategoryTheory.Functor.reflectsMonomorphisms.iso_iff
code: theorem reflectsMonomorphisms.iso_iff {F G : C ⥤ D} (α : F ≅ G) :
    ReflectsMonomorphisms F ↔ ReflectsMonomorphisms G 
goal: F.ReflectsMonomorphisms ↔ G.ReflectsMonomorphisms

full_name: CategoryTheory.Functor.reflectsEpimorphisms.of_iso
code: theorem reflectsEpimorphisms.of_iso {F G : C ⥤ D} [ReflectsEpimorphisms F] (α : F ≅ G) :
    ReflectsEpimorphisms G 
goal: G.ReflectsEpimorphisms

full_name: CategoryTheory.Functor.reflectsEpimorphisms.iso_iff
code: theorem reflectsEpimorphisms.iso_iff {F G : C ⥤ D} (α : F ≅ G) :
    ReflectsEpimorphisms F ↔ ReflectsEpimorphisms G 
goal: F.ReflectsEpimorphisms ↔ G.ReflectsEpimorphisms

full_name: CategoryTheory.Functor.preservesEpimorphsisms_of_adjunction
code: theorem preservesEpimorphsisms_of_adjunction {F : C ⥤ D} {G : D ⥤ C} (adj : F ⊣ G) :
    PreservesEpimorphisms F 
goal: F.PreservesEpimorphisms

full_name: CategoryTheory.Functor.preservesEpimorphisms_of_isLeftAdjoint
code: instance (priority := 100) preservesEpimorphisms_of_isLeftAdjoint (F : C ⥤ D) [IsLeftAdjoint F] :
    PreservesEpimorphisms F 
goal: F.PreservesEpimorphisms

full_name: CategoryTheory.Functor.preservesMonomorphisms_of_adjunction
code: theorem preservesMonomorphisms_of_adjunction {F : C ⥤ D} {G : D ⥤ C} (adj : F ⊣ G) :
    PreservesMonomorphisms G 
goal: G.PreservesMonomorphisms

full_name: CategoryTheory.Functor.preservesMonomorphisms_of_isRightAdjoint
code: instance (priority := 100) preservesMonomorphisms_of_isRightAdjoint (F : C ⥤ D) [IsRightAdjoint F] :
    PreservesMonomorphisms F 
goal: F.PreservesMonomorphisms

full_name: CategoryTheory.Functor.reflectsMonomorphisms_of_faithful
code: instance (priority := 100) reflectsMonomorphisms_of_faithful (F : C ⥤ D) [Faithful F] :
    ReflectsMonomorphisms F 
goal: F.ReflectsMonomorphisms

full_name: CategoryTheory.Functor.reflectsEpimorphisms_of_faithful
code: instance (priority := 100) reflectsEpimorphisms_of_faithful (F : C ⥤ D) [Faithful F] :
    ReflectsEpimorphisms F 
goal: F.ReflectsEpimorphisms

full_name: CategoryTheory.Functor.splitEpiEquiv
code: /-- If `F` is a fully faithful functor, split epimorphisms are preserved and reflected by `F`. -/
noncomputable def splitEpiEquiv [Full F] [Faithful F] : SplitEpi f ≃ SplitEpi (F.map f) 
goal: CategoryTheory.SplitEpi f ≃ CategoryTheory.SplitEpi (F.map f)

full_name: CategoryTheory.Functor.isSplitEpi_iff
code: @[simp]
theorem isSplitEpi_iff [Full F] [Faithful F] : IsSplitEpi (F.map f) ↔ IsSplitEpi f 
goal: CategoryTheory.IsSplitEpi (F.map f) ↔ CategoryTheory.IsSplitEpi f

full_name: CategoryTheory.Functor.splitMonoEquiv
code: /-- If `F` is a fully faithful functor, split monomorphisms are preserved and reflected by `F`. -/
noncomputable def splitMonoEquiv [Full F] [Faithful F] : SplitMono f ≃ SplitMono (F.map f) 
goal: CategoryTheory.SplitMono f ≃ CategoryTheory.SplitMono (F.map f)

full_name: CategoryTheory.Functor.isSplitMono_iff
code: @[simp]
theorem isSplitMono_iff [Full F] [Faithful F] : IsSplitMono (F.map f) ↔ IsSplitMono f 
goal: CategoryTheory.IsSplitMono (F.map f) ↔ CategoryTheory.IsSplitMono f

full_name: CategoryTheory.Functor.epi_map_iff_epi
code: @[simp]
theorem epi_map_iff_epi [hF₁ : PreservesEpimorphisms F] [hF₂ : ReflectsEpimorphisms F] :
    Epi (F.map f) ↔ Epi f 
goal: CategoryTheory.Epi (F.map f) ↔ CategoryTheory.Epi f

full_name: CategoryTheory.Functor.mono_map_iff_mono
code: @[simp]
theorem mono_map_iff_mono [hF₁ : PreservesMonomorphisms F] [hF₂ : ReflectsMonomorphisms F] :
    Mono (F.map f) ↔ Mono f 
goal: CategoryTheory.Mono (F.map f) ↔ CategoryTheory.Mono f

full_name: CategoryTheory.Functor.splitEpiCategoryImpOfIsEquivalence
code: /-- If `F : C ⥤ D` is an equivalence of categories and `C` is a `split_epi_category`,
then `D` also is. -/
theorem splitEpiCategoryImpOfIsEquivalence [IsEquivalence F] [SplitEpiCategory C] :
    SplitEpiCategory D 
goal: CategoryTheory.SplitEpiCategory D

full_name: CategoryTheory.Adjunction.strongEpi_map_of_strongEpi
code: theorem strongEpi_map_of_strongEpi (adj : F ⊣ F') (f : A ⟶ B) [h₁ : F'.PreservesMonomorphisms]
    [h₂ : F.PreservesEpimorphisms] [StrongEpi f] : StrongEpi (F.map f) 
goal: CategoryTheory.StrongEpi (F.map f)

full_name: CategoryTheory.Adjunction.strongEpi_map_of_isEquivalence
code: instance strongEpi_map_of_isEquivalence [F.IsEquivalence] (f : A ⟶ B) [_h : StrongEpi f] :
    StrongEpi (F.map f) 
goal: CategoryTheory.StrongEpi (F.map f)

full_name: CategoryTheory.Adjunction.instMonoCoeEquivHomObjHomEquivOfReflectsMonomorphisms
code: instance (adj : F ⊣ F') {X : C} {Y : D} (f : F.obj X ⟶ Y) [hf : Mono f] [F.ReflectsMonomorphisms] :
    Mono (adj.homEquiv _ _ f) 
goal: CategoryTheory.Mono ((adj.homEquiv X Y) f)

full_name: CategoryTheory.Functor.strongEpi_map_iff_strongEpi_of_isEquivalence
code: @[simp]
theorem strongEpi_map_iff_strongEpi_of_isEquivalence [IsEquivalence F] :
    StrongEpi (F.map f) ↔ StrongEpi f 
goal: CategoryTheory.StrongEpi (F.map f) ↔ CategoryTheory.StrongEpi f