proposition: Proposition mon_lassociator_pr1 (x y z : M) : mon_lassociator x y z · semi_cart_tensor_pr1 M_cart _ _ = semi_cart_tensor_pr1 M_cart _ _ · semi_cart_tensor_pr1 M_cart _ _.
proof: Proof. unfold semi_cart_tensor_pr1. rewrite !assoc. apply maponpaths_2. refine (_ @ id_left _). rewrite <- mon_lassociator_rassociator. rewrite !assoc'. apply maponpaths. refine (!_). rewrite !assoc. rewrite <- tensor_id_id. rewrite <- tensor_rassociator. rewrite !assoc'. etrans. { apply maponpaths. rewrite !assoc. rewrite mon_runitor_triangle. apply idpath. } rewrite <- !tensor_comp_id_l. apply maponpaths. apply (semi_cart_to_unit_eq M_cart). Qed.
imports: UniMath.Foundations.All UniMath.MoreFoundations.All UniMath.CategoryTheory.Core.Categories UniMath.CategoryTheory.Core.Isos UniMath.CategoryTheory.Core.Functors UniMath.CategoryTheory.Core.NaturalTransformations UniMath.CategoryTheory.Adjunctions.Core UniMath.CategoryTheory.Monoidal.WhiskeredBifunctors UniMath.CategoryTheory.Monoidal.Categories UniMath.CategoryTheory.Monoidal.Structure.Symmetric UniMath.CategoryTheory.Limits.Terminal UniMath.CategoryTheory.Limits.BinProducts UniMath.CategoryTheory.Limits.Initial UniMath.CategoryTheory.Limits.BinCoproducts