proposition: Proposition REL_comonoid_to_comm : iscomm (pr2 REL_comonoid_to_setwithbinop).
proof: Proof. intros X Y. use funextsec ; intro y ; cbn in y. use hPropUnivalence. - use factor_through_squash_hProp. intros ( x₁ & x₂ & p₁ & p₂ & H ). use hinhpr. refine (x₂ ,, x₁ ,, p₂ ,, p₁ ,, _). assert (q := eqweqmaphProp (!eqtohomot (eqtohomot (commutative_comonoid_is_commutative _ C) y) (x₁ ,, x₂)) H). revert q. use factor_through_squash_hProp. intros [ [ a₁ a₂ ] [ q₁ [ q₂ q₃ ] ] ] ; cbn in q₁, q₂, q₃. induction q₂, q₃. exact q₁. - use factor_through_squash_hProp. intros ( x₁ & x₂ & p₁ & p₂ & H ). use hinhpr. refine (x₂ ,, x₁ ,, p₂ ,, p₁ ,, _). assert (q := eqweqmaphProp (!eqtohomot (eqtohomot (commutative_comonoid_is_commutative _ C) y) (x₁ ,, x₂)) H). revert q. use factor_through_squash_hProp. intros [ [ a₁ a₂ ] [ q₁ [ q₂ q₃ ] ] ] ; cbn in q₁, q₂, q₃. induction q₂, q₃. exact q₁. Qed.
imports: UniMath.MoreFoundations.All UniMath.Algebra.Monoids UniMath.Algebra.Free_Monoids_and_Groups UniMath.CategoryTheory.Core.Prelude UniMath.CategoryTheory.Categories.Rel UniMath.CategoryTheory.Adjunctions.Core UniMath.CategoryTheory.whiskering UniMath.CategoryTheory.Monads.Comonads UniMath.CategoryTheory.Monoidal.Categories UniMath.CategoryTheory.Monoidal.Functors UniMath.CategoryTheory.Monoidal.Adjunctions UniMath.CategoryTheory.Monoidal.FunctorCategories UniMath.CategoryTheory.Monoidal.Displayed.TotalMonoidal UniMath.CategoryTheory.Monoidal.Displayed.Symmetric UniMath.CategoryTheory.Monoidal.Structure.Cartesian UniMath.CategoryTheory.Monoidal.Structure.Symmetric UniMath.CategoryTheory.Monoidal.Structure.Closed UniMath.CategoryTheory.Monoidal.Comonoids.Category UniMath.CategoryTheory.Monoidal.Comonoids.Monoidal UniMath.CategoryTheory.Monoidal.Comonoids.Symmetric UniMath.CategoryTheory.Monoidal.Comonoids.CommComonoidsCartesian UniMath.CategoryTheory.Monoidal.Examples.Relations UniMath.Semantics.LinearLogic.LafontCategory