File: Mathlib/CategoryTheory/ConcreteCategory/EpiMono.lean

full_name: CategoryTheory.ConcreteCategory.mono_of_injective
code: /-- In any concrete category, injective morphisms are monomorphisms. -/
theorem mono_of_injective {X Y : C} (f : X ⟶ Y) (i : Function.Injective f) :
    Mono f 
goal: CategoryTheory.Mono f

full_name: CategoryTheory.ConcreteCategory.forget₂_preservesMonomorphisms
code: instance forget₂_preservesMonomorphisms (C : Type u) (D : Type u')
    [Category.{v} C] [ConcreteCategory.{w} C] [Category.{v'} D] [ConcreteCategory.{w} D]
    [HasForget₂ C D] [(forget C).PreservesMonomorphisms] :
    (forget₂ C D).PreservesMonomorphisms 
goal: (CategoryTheory.forget₂ C D).PreservesMonomorphisms

full_name: CategoryTheory.ConcreteCategory.forget₂_preservesEpimorphisms
code: instance forget₂_preservesEpimorphisms (C : Type u) (D : Type u')
    [Category.{v} C] [ConcreteCategory.{w} C] [Category.{v'} D] [ConcreteCategory.{w} D]
    [HasForget₂ C D] [(forget C).PreservesEpimorphisms] :
    (forget₂ C D).PreservesEpimorphisms 
goal: (CategoryTheory.forget₂ C D).PreservesEpimorphisms

full_name: CategoryTheory.ConcreteCategory.surjective_le_epimorphisms
code: lemma surjective_le_epimorphisms :
    MorphismProperty.surjective C ≤ epimorphisms C 
goal: CategoryTheory.MorphismProperty.surjective C ≤ CategoryTheory.MorphismProperty.epimorphisms C

full_name: CategoryTheory.ConcreteCategory.injective_le_monomorphisms
code: lemma injective_le_monomorphisms :
    MorphismProperty.injective C ≤ monomorphisms C 
goal: CategoryTheory.MorphismProperty.injective C ≤ CategoryTheory.MorphismProperty.monomorphisms C

full_name: CategoryTheory.ConcreteCategory.surjective_eq_epimorphisms_iff
code: lemma surjective_eq_epimorphisms_iff :
    MorphismProperty.surjective C = epimorphisms C ↔ (forget C).PreservesEpimorphisms 
goal: CategoryTheory.MorphismProperty.surjective C = CategoryTheory.MorphismProperty.epimorphisms C ↔
  (CategoryTheory.forget C).PreservesEpimorphisms

full_name: CategoryTheory.ConcreteCategory.injective_eq_monomorphisms_iff
code: lemma injective_eq_monomorphisms_iff :
    MorphismProperty.injective C = monomorphisms C ↔ (forget C).PreservesMonomorphisms 
goal: CategoryTheory.MorphismProperty.injective C = CategoryTheory.MorphismProperty.monomorphisms C ↔
  (CategoryTheory.forget C).PreservesMonomorphisms

full_name: CategoryTheory.ConcreteCategory.injective_eq_monomorphisms
code: lemma injective_eq_monomorphisms [(forget C).PreservesMonomorphisms] :
    MorphismProperty.injective C = monomorphisms C 
goal: CategoryTheory.MorphismProperty.injective C = CategoryTheory.MorphismProperty.monomorphisms C

full_name: CategoryTheory.ConcreteCategory.surjective_eq_epimorphisms
code: lemma surjective_eq_epimorphisms [(forget C).PreservesEpimorphisms] :
    MorphismProperty.surjective C = epimorphisms C 
goal: CategoryTheory.MorphismProperty.surjective C = CategoryTheory.MorphismProperty.epimorphisms C

full_name: CategoryTheory.ConcreteCategory.functorialSurjectiveInjectiveFactorizationData
code: /-- A concrete category with strong epi mono factorizations and such that
the forget functor preserves mono and epi admits functorial surjective/injective
factorizations. -/
noncomputable def functorialSurjectiveInjectiveFactorizationData :
    FunctorialSurjectiveInjectiveFactorizationData C 
goal: CategoryTheory.ConcreteCategory.FunctorialSurjectiveInjectiveFactorizationData C

full_name: CategoryTheory.ConcreteCategory.instHasFunctorialSurjectiveInjectiveFactorization
code: instance (priority := 100) : HasFunctorialSurjectiveInjectiveFactorization C 
goal: CategoryTheory.ConcreteCategory.HasFunctorialSurjectiveInjectiveFactorization C

full_name: CategoryTheory.ConcreteCategory.injective_of_mono_of_preservesPullback
code: theorem injective_of_mono_of_preservesPullback {X Y : C} (f : X ⟶ Y) [Mono f]
    [PreservesLimitsOfShape WalkingCospan (forget C)] : Function.Injective f 
goal: Function.Injective ⇑f

full_name: CategoryTheory.ConcreteCategory.mono_iff_injective_of_preservesPullback
code: theorem mono_iff_injective_of_preservesPullback {X Y : C} (f : X ⟶ Y)
    [PreservesLimitsOfShape WalkingCospan (forget C)] : Mono f ↔ Function.Injective f 
goal: CategoryTheory.Mono f ↔ Function.Injective ⇑f

full_name: CategoryTheory.ConcreteCategory.epi_of_surjective
code: /-- In any concrete category, surjective morphisms are epimorphisms. -/
theorem epi_of_surjective {X Y : C} (f : X ⟶ Y) (s : Function.Surjective f) :
    Epi f 
goal: CategoryTheory.Epi f

full_name: CategoryTheory.ConcreteCategory.surjective_of_epi_of_preservesPushout
code: theorem surjective_of_epi_of_preservesPushout {X Y : C} (f : X ⟶ Y) [Epi f]
    [PreservesColimitsOfShape WalkingSpan (forget C)] : Function.Surjective f 
goal: Function.Surjective ⇑f

full_name: CategoryTheory.ConcreteCategory.epi_iff_surjective_of_preservesPushout
code: theorem epi_iff_surjective_of_preservesPushout {X Y : C} (f : X ⟶ Y)
    [PreservesColimitsOfShape WalkingSpan (forget C)] : Epi f ↔ Function.Surjective f 
goal: CategoryTheory.Epi f ↔ Function.Surjective ⇑f

full_name: CategoryTheory.ConcreteCategory.bijective_of_isIso
code: theorem bijective_of_isIso {X Y : C} (f : X ⟶ Y) [IsIso f] :
    Function.Bijective ((forget C).map f) 
goal: Function.Bijective ((CategoryTheory.forget C).map f)

full_name: CategoryTheory.ConcreteCategory.isIso_iff_bijective
code: /-- If the forgetful functor of a concrete category reflects isomorphisms, being an isomorphism
is equivalent to being bijective. -/
theorem isIso_iff_bijective [(forget C).ReflectsIsomorphisms]
    {X Y : C} (f : X ⟶ Y) : IsIso f ↔ Function.Bijective ((forget C).map f) 
goal: CategoryTheory.IsIso f ↔ Function.Bijective ((CategoryTheory.forget C).map f)