Definition kleisli_nat_trans {C : category} (m : Monad C) : m ∙ kleisli_incl m ⟹ kleisli_incl m. Proof. use make_nat_trans. - intro x. simple refine (_ ,, tt). use make_mor_eilenberg_moore ; cbn. + exact (μ m x). + abstract (refine (!_) ; apply Monad_law3). - abstract (intros x y f ; use eq_mor_kleisli_cat ; cbn ; apply (nat_trans_ax (μ m))). Defined.
Require Import UniMath.Foundations.All. Require Import UniMath.MoreFoundations.All. Require Import UniMath.CategoryTheory.Core.Categories. Require Import UniMath.CategoryTheory.Core.Functors. Require Import UniMath.CategoryTheory.Core.NaturalTransformations. Require Import UniMath.CategoryTheory.Core.Isos. Require Import UniMath.CategoryTheory.Core.Univalence. Require Import UniMath.CategoryTheory.Categories.EilenbergMoore. Require Import UniMath.CategoryTheory.Subcategory.Core. Require Import UniMath.CategoryTheory.Subcategory.Full. Require Import UniMath.CategoryTheory.Monads.Monads. Require Import UniMath.CategoryTheory.Monads.KleisliCategory. Require Import UniMath.CategoryTheory.whiskering. Require Import UniMath.CategoryTheory.PrecompEquivalence.