# Reflexive coequalizers #

We define reflexive pairs as a pair of morphisms which have a common section. We say a category has reflexive coequalizers if it has coequalizers of all reflexive pairs. Reflexive coequalizers often enjoy nicer properties than general coequalizers, and feature heavily in some versions of the monadicity theorem.

We also give some examples of reflexive pairs: for an adjunction F ⊣ G with counit ε, the pair (FGε_B, ε_FGB) is reflexive. If a pair f,g is a kernel pair for some morphism, then it is reflexive.

# TODO #

• If C has binary coproducts and reflexive coequalizers, then it has all coequalizers.
• If T is a monad on cocomplete category C, then Algebra T is cocomplete iff it has reflexive coequalizers.
• If C is locally cartesian closed and has reflexive coequalizers, then it has images: in fact regular epi (and hence strong epi) images.
class CategoryTheory.IsReflexivePair {C : Type u} {A : C} {B : C} (f : A B) (g : A B) :

The pair f g : A ⟶ B is reflexive if there is a morphism B ⟶ A which is a section for both.

• common_section' :
Instances
theorem CategoryTheory.IsReflexivePair.common_section' {C : Type u} {A : C} {B : C} {f : A B} {g : A B} [self : ] :
theorem CategoryTheory.IsReflexivePair.common_section {C : Type u} {A : C} {B : C} (f : A B) (g : A B) :
class CategoryTheory.IsCoreflexivePair {C : Type u} {A : C} {B : C} (f : A B) (g : A B) :

The pair f g : A ⟶ B is coreflexive if there is a morphism B ⟶ A which is a retraction for both.

• common_retraction' :
Instances
theorem CategoryTheory.IsCoreflexivePair.common_retraction' {C : Type u} {A : C} {B : C} {f : A B} {g : A B} [self : ] :
theorem CategoryTheory.IsCoreflexivePair.common_retraction {C : Type u} {A : C} {B : C} (f : A B) (g : A B) :
theorem CategoryTheory.IsReflexivePair.mk' {C : Type u} {A : C} {B : C} {f : A B} {g : A B} (s : B A) :
theorem CategoryTheory.IsCoreflexivePair.mk' {C : Type u} {A : C} {B : C} {f : A B} {g : A B} (s : B A) :
noncomputable def CategoryTheory.commonSection {C : Type u} {A : C} {B : C} (f : A B) (g : A B) :
B A

Get the common section for a reflexive pair.

Equations
• = .choose
Instances For
@[simp]
theorem CategoryTheory.section_comp_left_assoc {C : Type u} {A : C} {B : C} (f : A B) (g : A B) {Z : C} (h : B Z) :
@[simp]
theorem CategoryTheory.section_comp_left {C : Type u} {A : C} {B : C} (f : A B) (g : A B) :
@[simp]
theorem CategoryTheory.section_comp_right_assoc {C : Type u} {A : C} {B : C} (f : A B) (g : A B) {Z : C} (h : B Z) :
@[simp]
theorem CategoryTheory.section_comp_right {C : Type u} {A : C} {B : C} (f : A B) (g : A B) :
noncomputable def CategoryTheory.commonRetraction {C : Type u} {A : C} {B : C} (f : A B) (g : A B) :
B A

Get the common retraction for a coreflexive pair.

Equations
• = .choose
Instances For
@[simp]
theorem CategoryTheory.left_comp_retraction_assoc {C : Type u} {A : C} {B : C} (f : A B) (g : A B) {Z : C} (h : A Z) :
@[simp]
theorem CategoryTheory.left_comp_retraction {C : Type u} {A : C} {B : C} (f : A B) (g : A B) :
@[simp]
theorem CategoryTheory.right_comp_retraction_assoc {C : Type u} {A : C} {B : C} (f : A B) (g : A B) {Z : C} (h : A Z) :
@[simp]
theorem CategoryTheory.right_comp_retraction {C : Type u} {A : C} {B : C} (f : A B) (g : A B) :
theorem CategoryTheory.IsKernelPair.isReflexivePair {C : Type u} {A : C} {B : C} {R : C} {f : R A} {g : R A} {q : A B} (h : ) :

If f,g is a kernel pair for some morphism q, then it is reflexive.

theorem CategoryTheory.IsReflexivePair.swap {C : Type u} {A : C} {B : C} {f : A B} {g : A B} :

If f,g is reflexive, then g,f is reflexive.

theorem CategoryTheory.IsCoreflexivePair.swap {C : Type u} {A : C} {B : C} {f : A B} {g : A B} :

If f,g is coreflexive, then g,f is coreflexive.

instance CategoryTheory.instIsReflexivePairMapAppCounitObj {C : Type u} {D : Type u₂} [] {F : } {G : } (adj : F G) (B : D) :

For an adjunction F ⊣ G with counit ε, the pair (FGε_B, ε_FGB) is reflexive.

Equations
• =

C has reflexive coequalizers if it has coequalizers for every reflexive pair.

• has_coeq : ∀ ⦃A B : C⦄ (f g : A B) [inst : ],
Instances
theorem CategoryTheory.Limits.HasReflexiveCoequalizers.has_coeq {C : Type u} ⦃A : C ⦃B : C (f : A B) (g : A B) :

C has coreflexive equalizers if it has equalizers for every coreflexive pair.

• has_eq : ∀ ⦃A B : C⦄ (f g : A B) [inst : ],
Instances
theorem CategoryTheory.Limits.HasCoreflexiveEqualizers.has_eq {C : Type u} ⦃A : C ⦃B : C (f : A B) (g : A B) :
theorem CategoryTheory.Limits.hasCoequalizer_of_common_section (C : Type u) {A : C} {B : C} {f : A B} {g : A B} (r : B A) :
theorem CategoryTheory.Limits.hasEqualizer_of_common_retraction (C : Type u) {A : C} {B : C} {f : A B} {g : A B} (r : B A) :
@[instance 100]

If C has coequalizers, then it has reflexive coequalizers.

Equations
• =
@[instance 100]

If C has equalizers, then it has coreflexive equalizers.

Equations
• =