Lemma Kleisli_precat_monad_is_precat {C : category} (T : Monad C) : is_precategory (Kleisli_precat_data_monad T). Proof. apply is_precategory_one_assoc_to_two. split. - split. + intros a b f. unfold identity; unfold compose; cbn. apply η_bind. + intros a b f. unfold identity; unfold compose; cbn. rewrite <- id_right. apply cancel_precomposition. apply bind_η. - intros a b c d f g h. unfold compose; cbn. rewrite <- bind_bind. apply assoc. 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.Adjunctions.Core. Require Import UniMath.CategoryTheory.Monads.Monads. Require Import UniMath.CategoryTheory.whiskering.