proposition: Lemma Left_rKleisli_is_functor {C: precategory_data} {D : precategory} {J : functor C D} (R: RelMonad J) : is_functor (Left_rKleisli_functor_data R).
proof: Proof. split. - intro a. unfold Left_rKleisli_functor_data; simpl. rewrite functor_id. apply id_left. - intros a b c f g. unfold Left_rKleisli_functor_data; simpl. unfold compose at 3; simpl. rewrite functor_comp. do 2 (rewrite <- assoc). apply cancel_precomposition. apply pathsinv0. apply (r_eta_r_bind R). Defined.
imports: UniMath.Foundations.PartD UniMath.Foundations.Propositions UniMath.Foundations.Sets UniMath.MoreFoundations.Tactics UniMath.MoreFoundations.PartA UniMath.CategoryTheory.Core.Categories UniMath.CategoryTheory.Core.Isos UniMath.CategoryTheory.Core.NaturalTransformations UniMath.CategoryTheory.Core.Univalence UniMath.CategoryTheory.FunctorCategory UniMath.CategoryTheory.Core.Functors UniMath.CategoryTheory.Adjunctions.Core