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. 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.
Require Import UniMath.Foundations.PartD. Require Import UniMath.Foundations.Propositions. Require Import UniMath.Foundations.Sets. Require Import UniMath.MoreFoundations.Tactics. Require Import UniMath.MoreFoundations.PartA. Require Import UniMath.CategoryTheory.Core.Categories. Require Import UniMath.CategoryTheory.Core.Isos. Require Import UniMath.CategoryTheory.Core.NaturalTransformations. Require Import UniMath.CategoryTheory.Core.Univalence. Require Import UniMath.CategoryTheory.FunctorCategory. Require Import UniMath.CategoryTheory.Core.Functors. Require Import UniMath.CategoryTheory.Adjunctions.Core.