proposition: Proposition monad_to_hset_struct_adj_lift_unique : isaprop (∑ f' : monad_free_alg X --> YY, η M X · # (underlying_of_hset_struct monad_to_hset_struct) f' = f).
proof: Proof. use invproofirrelevance. intros φ₁ φ₂. use subtypePath. { intro. apply homset_property. } use eq_mor_hset_struct. cbn ; intro x. pose (eqtohomot (@Monad_law2 _ M X) x) as p. cbn in p. rewrite <- p ; clear p. pose (eqtohomot (pr21 φ₁) (# M (η M X) x)) as p. cbn in p. rewrite p ; clear p. pose (eqtohomot (pr21 φ₂) (# M (η M X) x)) as p. cbn in p. rewrite p ; clear p. apply maponpaths. refine (!(eqtohomot (functor_comp M (η M X) (pr11 φ₁)) x) @ _). refine (_ @ eqtohomot (functor_comp M (η M X) (pr11 φ₂)) x). apply maponpaths_2. exact (pr2 φ₁ @ !(pr2 φ₂)). 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.BinCoproducts UniMath.CategoryTheory.Limits.Equalizers UniMath.CategoryTheory.Limits.Coequalizers UniMath.CategoryTheory.Limits.Products UniMath.CategoryTheory.Limits.Preservation UniMath.CategoryTheory.DisplayedCats.Core UniMath.CategoryTheory.DisplayedCats.Structures.CartesianStructure UniMath.CategoryTheory.DisplayedCats.Structures.StructureLimitsAndColimits UniMath.CategoryTheory.Monads.Monads