Reflexive coequalizers #
This file deals with reflexive pairs, which are pairs of morphisms with a common section.
A reflexive coequalizer is a coequalizer of such a pair. These kind of 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.
Main definitions #
IsReflexivePair
is the predicate that f and g have a common section.WalkingReflexivePair
is the diagram indexing pairs with a common section.- A
reflexiveCofork
is a cocone on a diagram indexed byWalkingReflexivePair
. WalkingReflexivePair.inclusionWalkingReflexivePair
is the inclustion functor fromWalkingParallelPair
toWalkingReflexivePair
. It acts on reflexive pairs as forgetting the common section.HasReflexiveCoequalizers
is the predicate that a category has all colimits of reflexive pairs.reflexiveCoequalizerIsoCoequalizer
: an isomorphism promoting the coequalizer of a reflexive pair to the colimit of a diagram out of the walking reflexive pair.
Main statements #
IsKernelPair.isReflexivePair
: A kernel pair is a reflexive pairWalkingParallelPair.inclusionWalkingReflexivePair_final
: The inclusion functor is final.hasReflexiveCoequalizers_iff
: A category has coequalizers of reflexive pairs if and only iff it has all colimits of shapeWalkingReflexivePair
.
TODO #
- If
C
has binary coproducts and reflexive coequalizers, then it has all coequalizers. - If
T
is a monad on cocomplete categoryC
, thenAlgebra 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. - Bundle the reflexive pairs of kernel pairs and of adjunction as functors out of the walking reflexive pair.
The pair f g : A ⟶ B
is reflexive if there is a morphism B ⟶ A
which is a section for both.
- common_section' : ∃ (s : B ⟶ A), CategoryTheory.CategoryStruct.comp s f = CategoryTheory.CategoryStruct.id B ∧ CategoryTheory.CategoryStruct.comp s g = CategoryTheory.CategoryStruct.id B
Instances
The pair f g : A ⟶ B
is coreflexive if there is a morphism B ⟶ A
which is a retraction for both.
- common_retraction' : ∃ (s : B ⟶ A), CategoryTheory.CategoryStruct.comp f s = CategoryTheory.CategoryStruct.id A ∧ CategoryTheory.CategoryStruct.comp g s = CategoryTheory.CategoryStruct.id A
Instances
Get the common section for a reflexive pair.
Equations
- CategoryTheory.commonSection f g = ⋯.choose
Instances For
Get the common retraction for a coreflexive pair.
Equations
- CategoryTheory.commonRetraction f g = ⋯.choose
Instances For
If f,g
is a kernel pair for some morphism q
, then it is reflexive.
If f,g
is reflexive, then g,f
is reflexive.
If f,g
is coreflexive, then g,f
is coreflexive.
For an adjunction F ⊣ G
with counit ε
, the pair (FGε_B, ε_FGB)
is reflexive.
C
has reflexive coequalizers if it has coequalizers for every reflexive pair.
- has_coeq ⦃A B : C⦄ (f g : A ⟶ B) [CategoryTheory.IsReflexivePair f g] : CategoryTheory.Limits.HasCoequalizer f g
Instances
C
has coreflexive equalizers if it has equalizers for every coreflexive pair.
- has_eq ⦃A B : C⦄ (f g : A ⟶ B) [CategoryTheory.IsCoreflexivePair f g] : CategoryTheory.Limits.HasEqualizer f g
Instances
If C
has coequalizers, then it has reflexive coequalizers.
If C
has equalizers, then it has coreflexive equalizers.
The type of objects for the diagram indexing reflexive (co)equalizers
Instances For
Equations
- CategoryTheory.Limits.instDecidableEqWalkingReflexivePair x✝ y✝ = if h : x✝.toCtorIdx = y✝.toCtorIdx then isTrue ⋯ else isFalse ⋯
The type of morphisms for the diagram indexing reflexive (co)equalizers
- left : CategoryTheory.Limits.WalkingReflexivePair.one.Hom CategoryTheory.Limits.WalkingReflexivePair.zero
- right : CategoryTheory.Limits.WalkingReflexivePair.one.Hom CategoryTheory.Limits.WalkingReflexivePair.zero
- reflexion : CategoryTheory.Limits.WalkingReflexivePair.zero.Hom CategoryTheory.Limits.WalkingReflexivePair.one
- leftCompReflexion : CategoryTheory.Limits.WalkingReflexivePair.one.Hom CategoryTheory.Limits.WalkingReflexivePair.one
- rightCompReflexion : CategoryTheory.Limits.WalkingReflexivePair.one.Hom CategoryTheory.Limits.WalkingReflexivePair.one
- id (X : CategoryTheory.Limits.WalkingReflexivePair) : X.Hom X
Instances For
Equations
- CategoryTheory.Limits.WalkingReflexivePair.instDecidableEqHom = CategoryTheory.Limits.WalkingReflexivePair.decEqHom✝
Composition of morphisms in the diagram indexing reflexive (co)equalizers
Equations
- One or more equations did not get rendered due to their size.
- (CategoryTheory.Limits.WalkingReflexivePair.Hom.id x✝²).comp x✝ = x✝
- x✝.comp (CategoryTheory.Limits.WalkingReflexivePair.Hom.id x✝¹) = x✝
- CategoryTheory.Limits.WalkingReflexivePair.Hom.reflexion.comp CategoryTheory.Limits.WalkingReflexivePair.Hom.rightCompReflexion = CategoryTheory.Limits.WalkingReflexivePair.Hom.reflexion
- CategoryTheory.Limits.WalkingReflexivePair.Hom.reflexion.comp CategoryTheory.Limits.WalkingReflexivePair.Hom.leftCompReflexion = CategoryTheory.Limits.WalkingReflexivePair.Hom.reflexion
- CategoryTheory.Limits.WalkingReflexivePair.Hom.left.comp CategoryTheory.Limits.WalkingReflexivePair.Hom.reflexion = CategoryTheory.Limits.WalkingReflexivePair.Hom.leftCompReflexion
- CategoryTheory.Limits.WalkingReflexivePair.Hom.right.comp CategoryTheory.Limits.WalkingReflexivePair.Hom.reflexion = CategoryTheory.Limits.WalkingReflexivePair.Hom.rightCompReflexion
- CategoryTheory.Limits.WalkingReflexivePair.Hom.rightCompReflexion.comp CategoryTheory.Limits.WalkingReflexivePair.Hom.right = CategoryTheory.Limits.WalkingReflexivePair.Hom.right
- CategoryTheory.Limits.WalkingReflexivePair.Hom.rightCompReflexion.comp CategoryTheory.Limits.WalkingReflexivePair.Hom.left = CategoryTheory.Limits.WalkingReflexivePair.Hom.right
- CategoryTheory.Limits.WalkingReflexivePair.Hom.leftCompReflexion.comp CategoryTheory.Limits.WalkingReflexivePair.Hom.left = CategoryTheory.Limits.WalkingReflexivePair.Hom.left
- CategoryTheory.Limits.WalkingReflexivePair.Hom.leftCompReflexion.comp CategoryTheory.Limits.WalkingReflexivePair.Hom.right = CategoryTheory.Limits.WalkingReflexivePair.Hom.left
Instances For
Equations
- One or more equations did not get rendered due to their size.
The inclusion functor forgetting the common section
Equations
- One or more equations did not get rendered due to their size.
Instances For
The inclusion functor is a final functor
Bundle the data of a parallel pair along with a common section as a functor out of the walking reflexive pair
Equations
- One or more equations did not get rendered due to their size.
Instances For
(Noncomputably) bundle the data of a reflexive pair as a functor out of the walking reflexive pair
Equations
Instances For
The natural isomorphism between the diagram obtained by forgetting the reflexion of
ofIsReflexivePair f g
and the original parallel pair.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A constructor for natural transformations between functors from WalkingReflexivePair
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Constructor for natural isomorphisms between functors out of WalkingReflexivePair
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Every functor out of WalkingReflexivePair
is isomorphic to the reflexivePair
given by
its components
Equations
- One or more equations did not get rendered due to their size.
Instances For
A reflexivePair
composed with a functor is isomorphic to the reflexivePair
obtained by
applying the functor at each map.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Any functor out of the WalkingReflexivePair yields a reflexive pair
A ReflexiveCofork
is a cocone over a WalkingReflexivePair
-shaped diagram.
Instances For
The tail morphism of a reflexive cofork.
Equations
- G.π = G.ι.app CategoryTheory.Limits.WalkingReflexivePair.zero
Instances For
Constructor for ReflexiveCofork
Equations
- One or more equations did not get rendered due to their size.
Instances For
The underlying Cofork
of a ReflexiveCofork
.
Equations
- G.toCofork = CategoryTheory.Limits.Cofork.ofπ G.π ⋯
Instances For
Forgetting the reflexion yields an equivalence between cocones over a bundled reflexive pair and coforks on the underlying parallel pair.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The equivalence between reflexive coforks and coforks sends a reflexive cofork to its underlying cofork.
Equations
Instances For
A reflexive cofork is a colimit cocone if and only if the underlying cofork is.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The colimit of a functor out of the walking reflexive pair is the same as the colimit of the underlying parallel pair.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The coequalizer of a reflexive pair can be promoted to the colimit of a diagram out of the walking reflexive pair
Equations
- CategoryTheory.Limits.colimitOfIsReflexivePairIsoCoequalizer = CategoryTheory.Limits.reflexiveCoequalizerIsoCoequalizer (CategoryTheory.Limits.ofIsReflexivePair f g)
Instances For
A category has coequalizers of reflexive pairs if and only if it has all colimits indexed by the walking reflexive pair.