proposition: Proposition monad_reflexive_coequalizer_algebra_laws : monad_algebra_laws M monad_reflexive_coequalizer_algebra_mor.
proof: Proof. split. - use (CoequalizerOutsEq Coeq). rewrite id_right. unfold monad_reflexive_coequalizer_algebra_mor. rewrite !assoc. etrans. { apply maponpaths_2. exact (nat_trans_ax (η M) _ _ (CoequalizerArrow Coeq)). } rewrite !assoc'. etrans. { apply maponpaths. apply (CoequalizerCommutes (monad_on_reflexive_coequalizer _ _ _)). } rewrite !assoc. rewrite monad_algebra_unit. apply id_left. - use (CoequalizerOutsEq (monad_on_reflexive_coequalizer_2 HM pf pg)). unfold monad_reflexive_coequalizer_algebra_mor. rewrite !assoc. etrans. { apply maponpaths_2. apply (nat_trans_ax (μ M)). } rewrite !assoc'. etrans. { apply maponpaths. apply (CoequalizerCommutes (monad_on_reflexive_coequalizer _ _ _)). } rewrite !assoc. rewrite monad_algebra_mu. refine (!_). etrans. { apply maponpaths_2. refine (!(functor_comp _ _ _) @ _). apply maponpaths. apply (CoequalizerCommutes (monad_on_reflexive_coequalizer _ _ _)). } rewrite functor_comp. rewrite !assoc'. apply maponpaths. apply (CoequalizerCommutes (monad_on_reflexive_coequalizer _ _ _)). Qed.
imports: UniMath.MoreFoundations.All UniMath.CategoryTheory.Core.Categories UniMath.CategoryTheory.Core.Functors UniMath.CategoryTheory.Core.NaturalTransformations UniMath.CategoryTheory.Adjunctions.Core UniMath.CategoryTheory.Categories.HSET.All UniMath.CategoryTheory.Limits.BinProducts UniMath.CategoryTheory.Limits.Equalizers UniMath.CategoryTheory.Limits.Products UniMath.CategoryTheory.Limits.Coequalizers UniMath.CategoryTheory.Limits.BinCoproducts UniMath.CategoryTheory.Limits.Coproducts UniMath.CategoryTheory.Limits.Preservation UniMath.CategoryTheory.DisplayedCats.Core UniMath.CategoryTheory.DisplayedCats.Structures.CartesianStructure UniMath.CategoryTheory.DisplayedCats.Structures.StructureLimitsAndColimits UniMath.CategoryTheory.DisplayedCats.Examples.AlgebraStructures UniMath.CategoryTheory.Monads.Monads