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. 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.
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.