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
(CategoryTheory.IsSplitCoequalizer.isCoequalizer
) and absolute
(CategoryTheory.IsSplitCoequalizer.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.
This file has been adapted to Mathlib.CategoryTheory.Limits.Shapes.SplitEqualizer
. Please try
to keep them in sync.
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
CategoryTheory.IsSplitCoequalizer.isCoequalizer
.
Split coequalizers are also absolute, since a functor preserves all the structure above.
- rightSection : Z ⟶ Y
A map from the coequalizer to
Y
- leftSection : Y ⟶ X
A map in the opposite direction to
f
andg
- condition : CategoryTheory.CategoryStruct.comp f π = CategoryTheory.CategoryStruct.comp g π
Composition of
π
withf
and withg
agree - rightSection_π : CategoryTheory.CategoryStruct.comp self.rightSection π = CategoryTheory.CategoryStruct.id Z
rightSection
splitsπ
- leftSection_bottom : CategoryTheory.CategoryStruct.comp self.leftSection g = CategoryTheory.CategoryStruct.id Y
leftSection
splitsg
- leftSection_top : CategoryTheory.CategoryStruct.comp self.leftSection f = CategoryTheory.CategoryStruct.comp π self.rightSection
leftSection
composed withf
ispi
composed withrightSection
Instances For
Equations
- One or more equations did not get rendered due to their size.
Split coequalizers are absolute: they are preserved by any functor.
Equations
- q.map F = { rightSection := F.map q.rightSection, leftSection := F.map q.leftSection, condition := ⋯, rightSection_π := ⋯, leftSection_bottom := ⋯, leftSection_top := ⋯ }
Instances For
A split coequalizer clearly induces a cofork.
Equations
- t.asCofork = CategoryTheory.Limits.Cofork.ofπ h ⋯
Instances For
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
- t.isCoequalizer = CategoryTheory.Limits.Cofork.IsColimit.mk' t.asCofork fun (s : CategoryTheory.Limits.Cofork f g) => ⟨CategoryTheory.CategoryStruct.comp t.rightSection s.π, ⋯⟩
Instances For
The pair f,g
is a split pair if there is an h : Y ⟶ Z
so that f, g, h
forms a split
coequalizer in C
.
- splittable : ∃ (Z : C) (h : Y ⟶ Z), Nonempty (CategoryTheory.IsSplitCoequalizer f g h)
There is some split coequalizer
Instances
The pair f,g
is a G
-split pair if there is an h : G Y ⟶ Z
so that G f, G g, h
forms a split
coequalizer in D
.
Equations
- G.IsSplitPair f g = CategoryTheory.HasSplitCoequalizer (G.map f) (G.map g)
Instances For
Get the coequalizer object from the typeclass IsSplitPair
.
Equations
- CategoryTheory.HasSplitCoequalizer.coequalizerOfSplit f g = ⋯.choose
Instances For
Get the coequalizer morphism from the typeclass IsSplitPair
.
Equations
- CategoryTheory.HasSplitCoequalizer.coequalizerπ f g = ⋯.choose
Instances For
The coequalizer morphism coequalizeπ
gives a split coequalizer on f,g
.
Instances For
If f, g
is split, then G f, G g
is split.
If a pair has a split coequalizer, it has a coequalizer.