# Definitions and basic properties of normal monomorphisms and epimorphisms. #

A normal monomorphism is a morphism that is the kernel of some other morphism.

We give the construction NormalMono → RegularMono (CategoryTheory.NormalMono.regularMono) as well as the dual construction for normal epimorphisms. We show equivalences reflect normal monomorphisms (CategoryTheory.equivalenceReflectsNormalMono), and that the pullback of a normal monomorphism is normal (CategoryTheory.normalOfIsPullbackSndOfNormal).

We also define classes NormalMonoCategory and NormalEpiCategory for classes in which every monomorphism or epimorphism is normal, and deduce that these categories are RegularMonoCategorys resp. RegularEpiCategorys.

class CategoryTheory.NormalMono {C : Type u₁} [] {X : C} {Y : C} (f : X Y) :
Type (max u₁ v₁)

A normal monomorphism is a morphism which is the kernel of some morphism.

• Z : C

A normal monomorphism is a morphism which is the kernel of some morphism.

• g :

A normal monomorphism is a morphism which is the kernel of some morphism.

• w : CategoryTheory.CategoryStruct.comp f CategoryTheory.NormalMono.g = 0

A normal monomorphism is a morphism which is the kernel of some morphism.

• A normal monomorphism is a morphism which is the kernel of some morphism.

Instances
theorem CategoryTheory.NormalMono.w {C : Type u₁} [] {X : C} {Y : C} {f : X Y} [self : ] :
CategoryTheory.CategoryStruct.comp f CategoryTheory.NormalMono.g = 0

A normal monomorphism is a morphism which is the kernel of some morphism.

def CategoryTheory.equivalenceReflectsNormalMono {C : Type u₁} [] {D : Type u₂} [] (F : ) [F.IsEquivalence] {X : C} {Y : C} {f : X Y} (hf : CategoryTheory.NormalMono (F.map f)) :

If F is an equivalence and F.map f is a normal mono, then f is a normal mono.

Equations
• One or more equations did not get rendered due to their size.
Instances For
@[instance 100]
instance CategoryTheory.NormalMono.regularMono {C : Type u₁} [] {X : C} {Y : C} (f : X Y) [I : ] :

Every normal monomorphism is a regular monomorphism.

Equations
• = { Z := , left := CategoryTheory.NormalMono.g, right := 0, w := , isLimit := CategoryTheory.NormalMono.isLimit }
def CategoryTheory.NormalMono.lift' {C : Type u₁} [] {X : C} {Y : C} {W : C} (f : X Y) [hf : ] (k : W Y) (h : CategoryTheory.CategoryStruct.comp k CategoryTheory.NormalMono.g = 0) :
{ l : W X // }

If f is a normal mono, then any map k : W ⟶ Y such that k ≫ normal_mono.g = 0 induces a morphism l : W ⟶ X such that l ≫ f = k.

Equations
Instances For
def CategoryTheory.normalOfIsPullbackSndOfNormal {C : Type u₁} [] {P : C} {Q : C} {R : C} {S : C} {f : P Q} {g : P R} {h : Q S} {k : R S} [hn : ] (comm : ) (t : ) :

The second leg of a pullback cone is a normal monomorphism if the right component is too.

See also pullback.sndOfMono for the basic monomorphism version, and normalOfIsPullbackFstOfNormal for the flipped version.

Equations
• One or more equations did not get rendered due to their size.
Instances For
def CategoryTheory.normalOfIsPullbackFstOfNormal {C : Type u₁} [] {P : C} {Q : C} {R : C} {S : C} {f : P Q} {g : P R} {h : Q S} {k : R S} (comm : ) (t : ) :

The first leg of a pullback cone is a normal monomorphism if the left component is too.

See also pullback.fstOfMono for the basic monomorphism version, and normalOfIsPullbackSndOfNormal for the flipped version.

Equations
Instances For
class CategoryTheory.NormalMonoCategory (C : Type u₁) [] :
Type (max u₁ v₁)

A normal mono category is a category in which every monomorphism is normal.

• normalMonoOfMono : {X Y : C} → (f : X Y) → [inst : ] →

A normal mono category is a category in which every monomorphism is normal.

Instances
def CategoryTheory.normalMonoOfMono {C : Type u₁} [] {X : C} {Y : C} (f : X Y) :

In a category in which every monomorphism is normal, we can express every monomorphism as a kernel. This is not an instance because it would create an instance loop.

Equations
Instances For
@[instance 100]
Equations
• CategoryTheory.regularMonoCategoryOfNormalMonoCategory = { regularMonoOfMono := fun {X Y : C} (f : X Y) (x : ) => inferInstance }
class CategoryTheory.NormalEpi {C : Type u₁} [] {X : C} {Y : C} (f : X Y) :
Type (max u₁ v₁)

A normal epimorphism is a morphism which is the cokernel of some morphism.

• W : C

A normal epimorphism is a morphism which is the cokernel of some morphism.

• g :

A normal epimorphism is a morphism which is the cokernel of some morphism.

• w : CategoryTheory.CategoryStruct.comp CategoryTheory.NormalEpi.g f = 0

A normal epimorphism is a morphism which is the cokernel of some morphism.

• isColimit :

A normal epimorphism is a morphism which is the cokernel of some morphism.

Instances
theorem CategoryTheory.NormalEpi.w {C : Type u₁} [] {X : C} {Y : C} {f : X Y} [self : ] :
CategoryTheory.CategoryStruct.comp CategoryTheory.NormalEpi.g f = 0

A normal epimorphism is a morphism which is the cokernel of some morphism.

def CategoryTheory.equivalenceReflectsNormalEpi {C : Type u₁} [] {D : Type u₂} [] (F : ) [F.IsEquivalence] {X : C} {Y : C} {f : X Y} (hf : CategoryTheory.NormalEpi (F.map f)) :

If F is an equivalence and F.map f is a normal epi, then f is a normal epi.

Equations
• One or more equations did not get rendered due to their size.
Instances For
@[instance 100]
instance CategoryTheory.NormalEpi.regularEpi {C : Type u₁} [] {X : C} {Y : C} (f : X Y) [I : ] :

Every normal epimorphism is a regular epimorphism.

Equations
• = { W := , left := CategoryTheory.NormalEpi.g, right := 0, w := , isColimit := CategoryTheory.NormalEpi.isColimit }
def CategoryTheory.NormalEpi.desc' {C : Type u₁} [] {X : C} {Y : C} {W : C} (f : X Y) [nef : ] (k : X W) (h : CategoryTheory.CategoryStruct.comp CategoryTheory.NormalEpi.g k = 0) :
{ l : Y W // }

If f is a normal epi, then every morphism k : X ⟶ W satisfying NormalEpi.g ≫ k = 0 induces l : Y ⟶ W such that f ≫ l = k.

Equations
Instances For
def CategoryTheory.normalOfIsPushoutSndOfNormal {C : Type u₁} [] {P : C} {Q : C} {R : C} {S : C} {f : P Q} {g : P R} {h : Q S} {k : R S} [gn : ] (comm : ) :

The second leg of a pushout cocone is a normal epimorphism if the right component is too.

See also pushout.sndOfEpi for the basic epimorphism version, and normalOfIsPushoutFstOfNormal for the flipped version.

Equations
• One or more equations did not get rendered due to their size.
Instances For
def CategoryTheory.normalOfIsPushoutFstOfNormal {C : Type u₁} [] {P : C} {Q : C} {R : C} {S : C} {f : P Q} {g : P R} {h : Q S} {k : R S} (comm : ) :

The first leg of a pushout cocone is a normal epimorphism if the left component is too.

See also pushout.fstOfEpi for the basic epimorphism version, and normalOfIsPushoutSndOfNormal for the flipped version.

Equations
Instances For
def CategoryTheory.normalEpiOfNormalMonoUnop {C : Type u₁} [] {X : Cᵒᵖ} {Y : Cᵒᵖ} (f : X Y) (m : ) :

A normal mono becomes a normal epi in the opposite category.

Equations
• One or more equations did not get rendered due to their size.
Instances For
def CategoryTheory.normalMonoOfNormalEpiUnop {C : Type u₁} [] {X : Cᵒᵖ} {Y : Cᵒᵖ} (f : X Y) (m : CategoryTheory.NormalEpi f.unop) :

A normal epi becomes a normal mono in the opposite category.

Equations
• One or more equations did not get rendered due to their size.
Instances For
class CategoryTheory.NormalEpiCategory (C : Type u₁) [] :
Type (max u₁ v₁)

A normal epi category is a category in which every epimorphism is normal.

• normalEpiOfEpi : {X Y : C} → (f : X Y) → [inst : ] →

A normal epi category is a category in which every epimorphism is normal.

Instances
def CategoryTheory.normalEpiOfEpi {C : Type u₁} [] {X : C} {Y : C} (f : X Y) :

In a category in which every epimorphism is normal, we can express every epimorphism as a kernel. This is not an instance because it would create an instance loop.

Equations
Instances For
@[instance 100]
Equations
• CategoryTheory.regularEpiCategoryOfNormalEpiCategory = { regularEpiOfEpi := fun {X Y : C} (f : X Y) (x : ) => inferInstance }