Monadicity theorems #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
We prove monadicity theorems which can establish a given functor is monadic. In particular, we show three versions of Beck's monadicity theorem, and the reflexive (crude) monadicity theorem:
G
is a monadic right adjoint if it has a right adjoint, and:
D
has,G
preserves and reflectsG
-split coequalizers, seecategory_theory.monad.monadic_of_has_preserves_reflects_G_split_coequalizers
G
createsG
-split coequalizers, seecategory_theory.monad.monadic_of_creates_G_split_coequalizers
(The converse of this is also shown, seecategory_theory.monad.creates_G_split_coequalizers_of_monadic
)D
has andG
preservesG
-split coequalizers, andG
reflects isomorphisms, seecategory_theory.monad.monadic_of_has_preserves_G_split_coequalizers_of_reflects_isomorphisms
D
has andG
preserves reflexive coequalizers, andG
reflects isomorphisms, seecategory_theory.monad.monadic_of_has_preserves_reflexive_coequalizers_of_reflects_isomorphisms
Tags #
Beck, monadicity, descent
TODO #
Dualise to show comonadicity theorems.
The "main pair" for an algebra (A, α)
is the pair of morphisms (F α, ε_FA)
. It is always a
reflexive pair, and will be used to construct the left adjoint to the comparison functor and show it
is an equivalence.
The "main pair" for an algebra (A, α)
is the pair of morphisms (F α, ε_FA)
. It is always a
G
-split pair, and will be used to construct the left adjoint to the comparison functor and show it
is an equivalence.
The object function for the left adjoint to the comparison functor.
We have a bijection of homsets which will be used to construct the left adjoint to the comparison functor.
Equations
- category_theory.monad.monadicity_internal.comparison_left_adjoint_hom_equiv A B = ((category_theory.limits.cofork.is_colimit.hom_iso (category_theory.limits.colimit.is_colimit (category_theory.limits.parallel_pair ((category_theory.left_adjoint G).map A.a) ((category_theory.adjunction.of_right_adjoint G).counit.app ((category_theory.left_adjoint G).obj A.A)))) B).trans (((category_theory.adjunction.of_right_adjoint G).hom_equiv A.A B).subtype_equiv _)).trans {to_fun := λ (g : {g // G.map ((category_theory.left_adjoint G).map g) ≫ G.map ((category_theory.adjunction.of_right_adjoint G).counit.app B) = A.a ≫ g}), {f := ↑g, h' := _}, inv_fun := λ (f : A ⟶ (category_theory.monad.comparison (category_theory.adjunction.of_right_adjoint G)).obj B), ⟨f.f, _⟩, left_inv := _, right_inv := _}
Construct the adjunction to the comparison functor.
Equations
- category_theory.monad.monadicity_internal.left_adjoint_comparison = category_theory.adjunction.left_adjoint_of_equiv (λ (A : (category_theory.adjunction.of_right_adjoint G).to_monad.algebra) (B : D), category_theory.monad.monadicity_internal.comparison_left_adjoint_hom_equiv A B) category_theory.monad.monadicity_internal.left_adjoint_comparison._proof_1
Provided we have the appropriate coequalizers, we have an adjunction to the comparison functor.
Equations
- category_theory.monad.monadicity_internal.comparison_adjunction = category_theory.adjunction.adjunction_of_equiv_left (λ (A : (category_theory.adjunction.of_right_adjoint G).to_monad.algebra) (B : D), category_theory.monad.monadicity_internal.comparison_left_adjoint_hom_equiv A B) category_theory.monad.monadicity_internal.comparison_adjunction._proof_4
This is a cofork which is helpful for establishing monadicity: the morphism from the Beck coequalizer to this cofork is the unit for the adjunction on the comparison functor.
The cofork which describes the counit of the adjunction: the morphism from the coequalizer of this pair to this morphism is the counit.
The unit cofork is a colimit provided G
preserves it.
Equations
- category_theory.monad.monadicity_internal.unit_colimit_of_preserves_coequalizer A = category_theory.limits.is_colimit_of_has_coequalizer_of_preserves_colimit G ((category_theory.left_adjoint G).map A.a) ((category_theory.adjunction.of_right_adjoint G).counit.app ((category_theory.left_adjoint G).obj A.A))
The counit cofork is a colimit provided G
reflects it.
If G
is monadic, it creates colimits of G
-split pairs. This is the "boring" direction of Beck's
monadicity theorem, the converse is given in monadic_of_creates_G_split_coequalizers
.
To show G
is a monadic right adjoint, we can show it preserves and reflects G
-split
coequalizers, and C
has them.
Equations
- category_theory.monad.monadic_of_has_preserves_reflects_G_split_coequalizers G = let L : (category_theory.adjunction.of_right_adjoint G).to_monad.algebra ⥤ D := category_theory.monad.monadicity_internal.left_adjoint_comparison, i : category_theory.is_right_adjoint (category_theory.monad.comparison (category_theory.adjunction.of_right_adjoint G)) := {left := category_theory.monad.monadicity_internal.left_adjoint_comparison _, adj := category_theory.monad.monadicity_internal.comparison_adjunction _} in {to_is_right_adjoint := _inst_3, eqv := let this : ∀ (X : (category_theory.adjunction.of_right_adjoint G).to_monad.algebra), category_theory.is_iso ((category_theory.adjunction.of_right_adjoint (category_theory.monad.comparison (category_theory.adjunction.of_right_adjoint G))).unit.app X) := _, this : ∀ (Y : D), category_theory.is_iso ((category_theory.adjunction.of_right_adjoint (category_theory.monad.comparison (category_theory.adjunction.of_right_adjoint G))).counit.app Y) := _ in category_theory.adjunction.is_right_adjoint_to_is_equivalence}
Beck's monadicity theorem. If G
has a right adjoint and creates coequalizers of G
-split pairs,
then it is monadic.
This is the converse of creates_G_split_of_monadic
.
Equations
- category_theory.monad.monadic_of_creates_G_split_coequalizers G = let _inst : ∀ ⦃A B : D⦄ (f g : A ⟶ B) [_inst_6 : G.is_split_pair f g], category_theory.limits.has_colimit (category_theory.limits.parallel_pair f g ⋙ G) := _ in category_theory.monad.monadic_of_has_preserves_reflects_G_split_coequalizers G
An alternate version of Beck's monadicity theorem. If G
reflects isomorphisms, preserves
coequalizers of G
-split pairs and C
has coequalizers of G
-split pairs, then it is monadic.
Reflexive (crude) monadicity theorem. If G
has a right adjoint, D
has and G
preserves
reflexive coequalizers and G
reflects isomorphisms, then G
is monadic.
Equations
- category_theory.monad.monadic_of_has_preserves_reflexive_coequalizers_of_reflects_isomorphisms G = let L : (category_theory.adjunction.of_right_adjoint G).to_monad.algebra ⥤ D := category_theory.monad.monadicity_internal.left_adjoint_comparison, i : category_theory.is_right_adjoint (category_theory.monad.comparison (category_theory.adjunction.of_right_adjoint G)) := {left := category_theory.monad.monadicity_internal.left_adjoint_comparison _, adj := category_theory.monad.monadicity_internal.comparison_adjunction _} in {to_is_right_adjoint := _inst_3, eqv := let this : ∀ (X : (category_theory.adjunction.of_right_adjoint G).to_monad.algebra), category_theory.is_iso ((category_theory.adjunction.of_right_adjoint (category_theory.monad.comparison (category_theory.adjunction.of_right_adjoint G))).unit.app X) := _, this : ∀ (Y : D), category_theory.is_iso ((category_theory.adjunction.of_right_adjoint (category_theory.monad.comparison (category_theory.adjunction.of_right_adjoint G))).counit.app Y) := _ in category_theory.adjunction.is_right_adjoint_to_is_equivalence}