# mathlibdocumentation

category_theory.limits.shapes.split_coequalizer

# Split coequalizers #

We define what it means for a triple of morphisms f g : X ⟶ Y, π : Y ⟶ Z to be a split coequalizer: there is a section s of π and a section t of g, which additionally satisfy t ≫ f = π ≫ s.

In addition, we show that every split coequalizer is a coequalizer (category_theory.is_split_coequalizer.is_coequalizer) and absolute (category_theory.is_split_coequalizer.map)

A pair f g : X ⟶ Y has a split coequalizer if there is a Z and π : Y ⟶ Z making f,g,π a split coequalizer. A pair f g : X ⟶ Y has a G-split coequalizer if G f, G g has a split coequalizer.

These definitions and constructions are useful in particular for the monadicity theorems.

## TODO #

Dualise to split equalizers.

structure category_theory.is_split_coequalizer {C : Type u} {X Y : C} (f g : X Y) {Z : C} (π : Y Z) :
Type v

A split coequalizer diagram consists of morphisms

  f   π
X ⇉ Y → Z
g


satisfying f ≫ π = g ≫ π together with morphisms

  t   s
X ← Y ← Z


satisfying s ≫ π = 𝟙 Z, t ≫ g = 𝟙 Y and t ≫ f = π ≫ s.

The name "coequalizer" is appropriate, since any split coequalizer is a coequalizer, see category_theory.is_split_coequalizer.is_coequalizer. Split coequalizers are also absolute, since a functor preserves all the structure above.

Instances for category_theory.is_split_coequalizer
theorem category_theory.is_split_coequalizer.condition_assoc {C : Type u} {X Y : C} {f g : X Y} {Z : C} {π : Y Z} (self : π) {X' : C} (f' : Z X') :
f π f' = g π f'
@[simp]
theorem category_theory.is_split_coequalizer.right_section_π_assoc {C : Type u} {X Y : C} {f g : X Y} {Z : C} {π : Y Z} (self : π) {X' : C} (f' : Z X') :
self.right_section π f' = f'
@[simp]
theorem category_theory.is_split_coequalizer.left_section_top_assoc {C : Type u} {X Y : C} {f g : X Y} {Z : C} {π : Y Z} (self : π) {X' : C} (f' : Y X') :
self.left_section f f' = π self.right_section f'
@[simp]
theorem category_theory.is_split_coequalizer.left_section_bottom_assoc {C : Type u} {X Y : C} {f g : X Y} {Z : C} {π : Y Z} (self : π) {X' : C} (f' : Y X') :
self.left_section g f' = f'
def category_theory.is_split_coequalizer.map {C : Type u} {D : Type u₂} {X Y : C} {f g : X Y} {Z : C} {π : Y Z} (q : π) (F : C D) :
(F.map g) (F.map π)

Split coequalizers are absolute: they are preserved by any functor.

Equations
@[simp]
theorem category_theory.is_split_coequalizer.map_left_section {C : Type u} {D : Type u₂} {X Y : C} {f g : X Y} {Z : C} {π : Y Z} (q : π) (F : C D) :
@[simp]
theorem category_theory.is_split_coequalizer.map_right_section {C : Type u} {D : Type u₂} {X Y : C} {f g : X Y} {Z : C} {π : Y Z} (q : π) (F : C D) :
def category_theory.is_split_coequalizer.as_cofork {C : Type u} {X Y : C} {f g : X Y} {Z : C} {h : Y Z} (t : h) :

A split coequalizer clearly induces a cofork.

Equations
@[simp]
theorem category_theory.is_split_coequalizer.as_cofork_X {C : Type u} {X Y : C} {f g : X Y} {Z : C} {h : Y Z} (t : h) :
@[simp]
theorem category_theory.is_split_coequalizer.as_cofork_π {C : Type u} {X Y : C} {f g : X Y} {Z : C} {h : Y Z} (t : h) :
def category_theory.is_split_coequalizer.is_coequalizer {C : Type u} {X Y : C} {f g : X Y} {Z : C} {h : Y Z} (t : h) :

The cofork induced by a split coequalizer is a coequalizer, justifying the name. In some cases it is more convenient to show a given cofork is a coequalizer by showing it is split.

Equations
@[class]
structure category_theory.has_split_coequalizer {C : Type u} {X Y : C} (f g : X Y) :
Prop
• splittable : ∃ {Z : C} (h : Y Z),

The pair f,g is a split pair if there is a h : Y ⟶ Z so that f, g, h forms a split coequalizer in C.

Instances of this typeclass
def category_theory.functor.is_split_pair {C : Type u} {D : Type u₂} (G : C D) {X Y : C} (f g : X Y) :
Prop

The pair f,g is a G-split pair if there is a h : G Y ⟶ Z so that G f, G g, h forms a split coequalizer in D.

noncomputable def category_theory.has_split_coequalizer.coequalizer_of_split {C : Type u} {X Y : C} (f g : X Y)  :
C

Get the coequalizer object from the typeclass is_split_pair.

Equations
noncomputable def category_theory.has_split_coequalizer.coequalizer_π {C : Type u} {X Y : C} (f g : X Y)  :

Get the coequalizer morphism from the typeclass is_split_pair.

Equations
noncomputable def category_theory.has_split_coequalizer.is_split_coequalizer {C : Type u} {X Y : C} (f g : X Y)  :

The coequalizer morphism coequalizer_ι gives a split coequalizer on f,g.

Equations
@[protected, instance]
def category_theory.map_is_split_pair {C : Type u} {D : Type u₂} (G : C D) {X Y : C} (f g : X Y)  :
(G.map g)

If f, g is split, then G f, G g is split.

@[protected, instance]
def category_theory.limits.has_coequalizer_of_has_split_coequalizer {C : Type u} {X Y : C} (f g : X Y)  :

If a pair has a split coequalizer, it has a coequalizer.