Lemma etainv_morph_law (T : Monad C) : Monad_Mor_laws (T := T) (T' := (unkleislify (kleislify T))) (etainv_data T). Proof. split; simpl; intro a. - unfold eta_arrow. rewrite id_right. rewrite id_left. unfold Monads.μ, bind, μ, map, μ, bind, map, μ. simpl. unfold Monads.bind, Monad_Kleisli_data; simpl. unfold Monads.μ, η. rewrite functor_comp. cbn. rewrite functor_id. do 2 rewrite id_left. set (H1 := Monad_law2 (T := T) (T a)). unfold Monads.μ, Monads.η in H1. progress simpl in H1. simpl. unfold Monads.η. etrans. 2: { apply cancel_postcomposition. apply pathsinv0. apply H1. } now rewrite 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.