File: Mathlib/CategoryTheory/Limits/Shapes/StrongEpi.lean

full_name: CategoryTheory.StrongEpi
code: /-- A strong epimorphism `f` is an epimorphism which has the left lifting property
with respect to monomorphisms. -/
class StrongEpi (f : P ⟶ Q) : Prop where
  /-- The epimorphism condition on `f` -/
  epi : Epi f
  /-- The left lifting property with respect to all monomorphism -/
  llp : ∀ ⦃X Y : C⦄ (z : X ⟶ Y) [Mono z], HasLiftingProperty f z
goal: Prop

full_name: CategoryTheory.StrongEpi.llp
code: /-- A strong epimorphism `f` is an epimorphism which has the left lifting property
with respect to monomorphisms. -/
class StrongEpi (f : P ⟶ Q) : Prop where
  /-- The epimorphism condition on `f` -/
  epi : Epi f
  /-- The left lifting property with respect to all monomorphism -/
  llp : ∀ ⦃X Y : C⦄ (z : X ⟶ Y) [Mono z], HasLiftingProperty f z
goal: CategoryTheory.HasLiftingProperty f z

full_name: CategoryTheory.StrongEpi.epi
code: /-- A strong epimorphism `f` is an epimorphism which has the left lifting property
with respect to monomorphisms. -/
class StrongEpi (f : P ⟶ Q) : Prop where
  /-- The epimorphism condition on `f` -/
  epi : Epi f
  /-- The left lifting property with respect to all monomorphism -/
  llp : ∀ ⦃X Y : C⦄ (z : X ⟶ Y) [Mono z], HasLiftingProperty f z
goal: CategoryTheory.Epi f

full_name: CategoryTheory.StrongEpi.mk'
code: theorem StrongEpi.mk' {f : P ⟶ Q} [Epi f]
    (hf : ∀ (X Y : C) (z : X ⟶ Y)
      (_ : Mono z) (u : P ⟶ X) (v : Q ⟶ Y) (sq : CommSq u f z v), sq.HasLift) :
    StrongEpi f 
goal: CategoryTheory.StrongEpi f

full_name: CategoryTheory.StrongMono.mono
code: /-- A strong monomorphism `f` is a monomorphism which has the right lifting property
with respect to epimorphisms. -/
class StrongMono (f : P ⟶ Q) : Prop where
  /-- The monomorphism condition on `f` -/
  mono : Mono f
  /-- The right lifting property with respect to all epimorphisms -/
  rlp : ∀ ⦃X Y : C⦄ (z : X ⟶ Y) [Epi z], HasLiftingProperty z f
goal: CategoryTheory.Mono f

full_name: CategoryTheory.StrongMono
code: /-- A strong monomorphism `f` is a monomorphism which has the right lifting property
with respect to epimorphisms. -/
class StrongMono (f : P ⟶ Q) : Prop where
  /-- The monomorphism condition on `f` -/
  mono : Mono f
  /-- The right lifting property with respect to all epimorphisms -/
  rlp : ∀ ⦃X Y : C⦄ (z : X ⟶ Y) [Epi z], HasLiftingProperty z f
goal: Prop

full_name: CategoryTheory.StrongMono.rlp
code: /-- A strong monomorphism `f` is a monomorphism which has the right lifting property
with respect to epimorphisms. -/
class StrongMono (f : P ⟶ Q) : Prop where
  /-- The monomorphism condition on `f` -/
  mono : Mono f
  /-- The right lifting property with respect to all epimorphisms -/
  rlp : ∀ ⦃X Y : C⦄ (z : X ⟶ Y) [Epi z], HasLiftingProperty z f
goal: CategoryTheory.HasLiftingProperty z f

full_name: CategoryTheory.StrongMono.mk'
code: theorem StrongMono.mk' {f : P ⟶ Q} [Mono f]
    (hf : ∀ (X Y : C) (z : X ⟶ Y) (_ : Epi z) (u : X ⟶ P)
      (v : Y ⟶ Q) (sq : CommSq u z f v), sq.HasLift) : StrongMono f 
goal: CategoryTheory.StrongMono f

full_name: CategoryTheory.epi_of_strongEpi
code: instance (priority := 100) epi_of_strongEpi (f : P ⟶ Q) [StrongEpi f] : Epi f 
goal: CategoryTheory.Epi f

full_name: CategoryTheory.mono_of_strongMono
code: instance (priority := 100) mono_of_strongMono (f : P ⟶ Q) [StrongMono f] : Mono f 
goal: CategoryTheory.Mono f

full_name: CategoryTheory.strongEpi_comp
code: /-- The composition of two strong epimorphisms is a strong epimorphism. -/
theorem strongEpi_comp [StrongEpi f] [StrongEpi g] : StrongEpi (f ≫ g) 
goal: CategoryTheory.StrongEpi (CategoryTheory.CategoryStruct.comp f g)

full_name: CategoryTheory.strongMono_comp
code: /-- The composition of two strong monomorphisms is a strong monomorphism. -/
theorem strongMono_comp [StrongMono f] [StrongMono g] : StrongMono (f ≫ g) 
goal: CategoryTheory.StrongMono (CategoryTheory.CategoryStruct.comp f g)

full_name: CategoryTheory.strongEpi_of_strongEpi
code: /-- If `f ≫ g` is a strong epimorphism, then so is `g`. -/
theorem strongEpi_of_strongEpi [StrongEpi (f ≫ g)] : StrongEpi g 
goal: CategoryTheory.StrongEpi g

full_name: CategoryTheory.strongMono_of_strongMono
code: /-- If `f ≫ g` is a strong monomorphism, then so is `f`. -/
theorem strongMono_of_strongMono [StrongMono (f ≫ g)] : StrongMono f 
goal: CategoryTheory.StrongMono f

full_name: CategoryTheory.strongEpi_of_isIso
code: /-- An isomorphism is in particular a strong epimorphism. -/
instance (priority := 100) strongEpi_of_isIso [IsIso f] : StrongEpi f 
goal: CategoryTheory.StrongEpi f

full_name: CategoryTheory.strongMono_of_isIso
code: /-- An isomorphism is in particular a strong monomorphism. -/
instance (priority := 100) strongMono_of_isIso [IsIso f] : StrongMono f 
goal: CategoryTheory.StrongMono f

full_name: CategoryTheory.StrongEpi.of_arrow_iso
code: theorem StrongEpi.of_arrow_iso {A B A' B' : C} {f : A ⟶ B} {g : A' ⟶ B'}
    (e : Arrow.mk f ≅ Arrow.mk g) [h : StrongEpi f] : StrongEpi g 
goal: CategoryTheory.StrongEpi g

full_name: CategoryTheory.StrongMono.of_arrow_iso
code: theorem StrongMono.of_arrow_iso {A B A' B' : C} {f : A ⟶ B} {g : A' ⟶ B'}
    (e : Arrow.mk f ≅ Arrow.mk g) [h : StrongMono f] : StrongMono g 
goal: CategoryTheory.StrongMono g

full_name: CategoryTheory.StrongEpi.iff_of_arrow_iso
code: theorem StrongEpi.iff_of_arrow_iso {A B A' B' : C} {f : A ⟶ B} {g : A' ⟶ B'}
    (e : Arrow.mk f ≅ Arrow.mk g) : StrongEpi f ↔ StrongEpi g 
goal: CategoryTheory.StrongEpi f ↔ CategoryTheory.StrongEpi g

full_name: CategoryTheory.StrongMono.iff_of_arrow_iso
code: theorem StrongMono.iff_of_arrow_iso {A B A' B' : C} {f : A ⟶ B} {g : A' ⟶ B'}
    (e : Arrow.mk f ≅ Arrow.mk g) : StrongMono f ↔ StrongMono g 
goal: CategoryTheory.StrongMono f ↔ CategoryTheory.StrongMono g

full_name: CategoryTheory.isIso_of_mono_of_strongEpi
code: /-- A strong epimorphism that is a monomorphism is an isomorphism. -/
theorem isIso_of_mono_of_strongEpi (f : P ⟶ Q) [Mono f] [StrongEpi f] : IsIso f 
goal: CategoryTheory.IsIso f

full_name: CategoryTheory.isIso_of_epi_of_strongMono
code: /-- A strong monomorphism that is an epimorphism is an isomorphism. -/
theorem isIso_of_epi_of_strongMono (f : P ⟶ Q) [Epi f] [StrongMono f] : IsIso f 
goal: CategoryTheory.IsIso f

full_name: CategoryTheory.StrongEpiCategory.strongEpi_of_epi
code: /-- A strong epi category is a category in which every epimorphism is strong. -/
class StrongEpiCategory : Prop where
  /-- A strong epi category is a category in which every epimorphism is strong. -/
  strongEpi_of_epi : ∀ {X Y : C} (f : X ⟶ Y) [Epi f], StrongEpi f
goal: CategoryTheory.StrongEpi f

full_name: CategoryTheory.StrongEpiCategory
code: /-- A strong epi category is a category in which every epimorphism is strong. -/
class StrongEpiCategory : Prop where
  /-- A strong epi category is a category in which every epimorphism is strong. -/
  strongEpi_of_epi : ∀ {X Y : C} (f : X ⟶ Y) [Epi f], StrongEpi f
goal: Prop

full_name: CategoryTheory.StrongMonoCategory
code: /-- A strong mono category is a category in which every monomorphism is strong. -/
class StrongMonoCategory : Prop where
  /-- A strong mono category is a category in which every monomorphism is strong. -/
  strongMono_of_mono : ∀ {X Y : C} (f : X ⟶ Y) [Mono f], StrongMono f
goal: Prop

full_name: CategoryTheory.StrongMonoCategory.strongMono_of_mono
code: /-- A strong mono category is a category in which every monomorphism is strong. -/
class StrongMonoCategory : Prop where
  /-- A strong mono category is a category in which every monomorphism is strong. -/
  strongMono_of_mono : ∀ {X Y : C} (f : X ⟶ Y) [Mono f], StrongMono f
goal: CategoryTheory.StrongMono f

full_name: CategoryTheory.strongEpi_of_epi
code: theorem strongEpi_of_epi [StrongEpiCategory C] (f : P ⟶ Q) [Epi f] : StrongEpi f 
goal: CategoryTheory.StrongEpi f

full_name: CategoryTheory.strongMono_of_mono
code: theorem strongMono_of_mono [StrongMonoCategory C] (f : P ⟶ Q) [Mono f] : StrongMono f 
goal: CategoryTheory.StrongMono f

full_name: CategoryTheory.balanced_of_strongEpiCategory
code: instance (priority := 100) balanced_of_strongEpiCategory [StrongEpiCategory C] : Balanced C 
goal: CategoryTheory.Balanced C

full_name: CategoryTheory.balanced_of_strongMonoCategory
code: instance (priority := 100) balanced_of_strongMonoCategory [StrongMonoCategory C] : Balanced C 
goal: CategoryTheory.Balanced C