proposition: Lemma Kleisli_composition_laws {C : category} {T T' T'' : KleisliMonad C} (α : Kleisli_Mor T T') (α' : Kleisli_Mor T' T'') : Kleisli_Mor_laws T T'' (λ a : C, nat_trans_from_kleisli_mor α a · nat_trans_from_kleisli_mor α' a).
proof: Proof. split; intros; simpl. - rewrite assoc. set (H := Kleisli_Mor_η α). rewrite H. apply Kleisli_Mor_η. - pathvia (nat_trans_from_kleisli_mor α a · (nat_trans_from_kleisli_mor α' a · bind T'' ((f · nat_trans_from_kleisli_mor α b) · nat_trans_from_kleisli_mor α' b))). * now repeat rewrite assoc. * rewrite (Kleisli_Mor_bind α'). rewrite assoc. rewrite (Kleisli_Mor_bind α). apply pathsinv0. apply assoc. Defined.
imports: UniMath.Foundations.PartD UniMath.Foundations.Propositions UniMath.Foundations.Sets UniMath.MoreFoundations.Tactics UniMath.CategoryTheory.Core.Categories UniMath.CategoryTheory.Core.Univalence UniMath.CategoryTheory.FunctorCategory UniMath.CategoryTheory.Core.Functors UniMath.CategoryTheory.Core.NaturalTransformations UniMath.CategoryTheory.whiskering UniMath.CategoryTheory.Monads.Monads UniMath.CategoryTheory.Monads.RelativeMonads