Lean4
/-- Beck's comonadicity theorem. If `F` has a right adjoint and creates equalizers of `F`-cosplit pairs,
then it is comonadic.
This is the converse of `createsFSplitEqualizersOfComonadic`.
-/
def comonadicOfCreatesFSplitEqualizers [CreatesLimitOfIsCosplitPair F] : ComonadicLeftAdjoint F :=
by
have I {A B} (f g : A ⟶ B) [F.IsCosplitPair f g] : HasLimit (parallelPair f g ⋙ F) :=
by
rw [hasLimit_iff_of_iso (diagramIsoParallelPair _)]
exact inferInstanceAs <| HasEqualizer (F.map f) (F.map g)
have : HasEqualizerOfIsCosplitPair F := ⟨fun _ _ => hasLimit_of_created (parallelPair _ _) F⟩
have : PreservesLimitOfIsCosplitPair F := ⟨by intros; infer_instance⟩
have : ReflectsLimitOfIsCosplitPair F := ⟨by intros; infer_instance⟩
exact comonadicOfHasPreservesReflectsFSplitEqualizers adj