proposition: Proposition rassociator_square {C : double_cat} {w₁ w₂ x₁ x₂ y₁ y₂ z₁ z₂ : C} {vw : w₁ -->v w₂} {vx : x₁ -->v x₂} {vy : y₁ -->v y₂} {vz : z₁ -->v z₂} {h₁ : w₁ -->h x₁} {h₂ : w₂ -->h x₂} {j₁ : x₁ -->h y₁} {j₂ : x₂ -->h y₂} {k₁ : y₁ -->h z₁} {k₂ : y₂ -->h z₂} (s₁ : square vw vx h₁ h₂) (s₂ : square vx vy j₁ j₂) (s₃ : square vy vz k₁ k₂) : rassociator_h h₁ j₁ k₁ ⋆v (s₁ ⋆h (s₂ ⋆h s₃)) = transportf_square (id_v_right _ @ !(id_v_left _)) (id_v_right _ @ !(id_v_left _)) (((s₁ ⋆h s₂) ⋆h s₃) ⋆v rassociator_h h₂ j₂ k₂).
proof: Proof. refine (!(square_id_right_v' _) @ _ @ square_id_right_v' _). apply maponpaths. rewrite <- !lassociator_rassociator_h'. rewrite !transportf_square_postwhisker. apply maponpaths. refine (square_assoc_v _ _ _ @ _ @ !(square_assoc_v _ _ _)). apply maponpaths. apply maponpaths_2. rewrite transportf_square_prewhisker. refine (!(square_assoc_v' _ _ _) @ _). rewrite <- square_assoc_v'. rewrite transportf_f_square. rewrite lassociator_square. unfold transportb_square. rewrite transportf_square_postwhisker. rewrite transportf_f_square. etrans. { apply maponpaths. apply square_assoc_v. } unfold transportb_square. rewrite transportf_f_square. rewrite !rassociator_lassociator_h. unfold transportb_square. rewrite transportf_square_prewhisker. rewrite transportf_square_postwhisker. rewrite !transportf_f_square. rewrite square_id_left_v. rewrite square_id_right_v. unfold transportb_square. rewrite !transportf_f_square. use transportf_square_eq. apply idpath. Qed.
imports: UniMath.MoreFoundations.All UniMath.CategoryTheory.Core.Prelude UniMath.CategoryTheory.TwoSidedDisplayedCats.TwoSidedDispCat UniMath.CategoryTheory.TwoSidedDisplayedCats.Univalence UniMath.Bicategories.Core.Bicat UniMath.Bicategories.DoubleCategories.Core.DoubleCats UniMath.Bicategories.DoubleCategories.DerivedLaws.TransportLaws UniMath.Bicategories.DoubleCategories.Core.DoubleCats UniMath.Bicategories.DoubleCategories.Core.UnivalentDoubleCats