Lemma etainv_data_laws (T : Monad C) : @Monad_Mor_laws C T (@unkleislify C (@kleislify C T)) (etainv_data T). Proof. split; simpl; intros. - unfold eta_arrow. rewrite id_right. unfold map, μ, Monads.μ, bind. simpl. unfold Monads.bind, η, Monads.μ. simpl. unfold Monads.η. do 2 rewrite id_left. rewrite functor_id, id_left. rewrite <- assoc. set (H := Monad_law3 (T := T) a). progress simpl in H. unfold Monads.μ in H. etrans. 2: { apply cancel_precomposition. apply H. } rewrite assoc. rewrite <- functor_comp. set (H1 := Monad_law1 (T := T) a). progress simpl in H1. unfold Monads.η, Monads.μ in H1. etrans. 2: { apply cancel_postcomposition. apply maponpaths. apply pathsinv0. eapply H1. } now rewrite functor_id, id_left. - apply 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.