Lemma is_nat_trans_etainv (T : Monad C) : is_nat_trans T (kleisli_functor_data (kleislify T)) (eta_arrow T). Proof. intros a b f. simpl. unfold eta_arrow. rewrite id_right. rewrite id_left. unfold map, bind, η. simpl. unfold Monads.bind, Monads.η, Monads.μ. rewrite functor_comp. rewrite <- assoc. set (H := Monad_law2 (T := T) b). progress simpl in H. unfold Monads.η, Monads.μ in H. etrans. 2: { apply cancel_precomposition. apply pathsinv0. apply H. } now rewrite id_right. Defined.
Require Import UniMath.Foundations.PartD. Require Import UniMath.Foundations.Propositions. Require Import UniMath.Foundations.Sets. Require Import UniMath.MoreFoundations.Tactics. Require Import UniMath.CategoryTheory.Core.Categories. Require Import UniMath.CategoryTheory.Core.Isos. Require Import UniMath.CategoryTheory.Core.Functors. Require Import UniMath.CategoryTheory.Core.NaturalTransformations. Require Import UniMath.CategoryTheory.whiskering. Require Import UniMath.CategoryTheory.Limits.Terminal. Require Import UniMath.CategoryTheory.Limits.BinCoproducts. Require Import UniMath.CategoryTheory.Monads.Monads. Require Import UniMath.CategoryTheory.Monads.KTriples. Require Import UniMath.CategoryTheory.catiso. Require Import UniMath.CategoryTheory.Adjunctions.Core. Require Import UniMath.CategoryTheory.Equivalences.Core. Require Import UniMath.CategoryTheory.Equivalences.FullyFaithful.