Proposition monad_to_hset_struct_laws : hset_struct_laws monad_to_hset_struct_data. Proof. repeat split. - intro X. use isaset_total2. + apply homset_property. + intro f. apply isasetaprop. apply isapropdirprod ; apply homset_property. - intros X Y f g h. apply homset_property. - intros X f ; cbn. rewrite (functor_id M). apply idpath. - intros X Y Z fX fY fZ h₁ h₂ Mh₁ Mh₂ ; cbn -[Monad] in *. use funextsec. intro x. rewrite (eqtohomot Mh₁). rewrite (eqtohomot Mh₂). rewrite (eqtohomot (functor_comp M h₁ h₂)). apply idpath. - intros X fX fX' p q. use subtypePath. { intro. apply isapropdirprod ; apply homset_property. } cbn -[Monad] in *. use funextsec. intro x. refine (eqtohomot p x @ _). apply maponpaths. exact (eqtohomot (functor_id M X) x). Qed.
Require Import UniMath.MoreFoundations.All. Require Import UniMath.CategoryTheory.Core.Categories. Require Import UniMath.CategoryTheory.Core.Functors. Require Import UniMath.CategoryTheory.Core.NaturalTransformations. Require Import UniMath.CategoryTheory.Adjunctions.Core. Require Import UniMath.CategoryTheory.Categories.HSET.All. Require Import UniMath.CategoryTheory.Limits.BinProducts. Require Import UniMath.CategoryTheory.Limits.BinCoproducts. Require Import UniMath.CategoryTheory.Limits.Equalizers. Require Import UniMath.CategoryTheory.Limits.Coequalizers. Require Import UniMath.CategoryTheory.Limits.Products. Require Import UniMath.CategoryTheory.Limits.Preservation. Require Import UniMath.CategoryTheory.DisplayedCats.Core. Require Import UniMath.CategoryTheory.DisplayedCats.Structures.CartesianStructure. Require Import UniMath.CategoryTheory.DisplayedCats.Structures.StructureLimitsAndColimits. Require Import UniMath.CategoryTheory.Monads.Monads.