Proposition hcomp_r_inj {C : double_cat} {x y z : C} {f : x -->v y} {g : x -->h z} {h : y -->h z} {k : z -->v z} (p : identity_v z = k) {s s' : square f k g h} (q : transportf_square (idpath _) (!p) s ⋆h id_v_square (identity_h _) = transportf_square (idpath _) (!p) s' ⋆h id_v_square (identity_h _)) : s = s'. Proof. induction p ; cbn in q. refine (!(square_id_left_v' _) @ _ @ square_id_left_v' _). apply maponpaths. rewrite <- rinvunitor_runitor_h'. rewrite !transportf_square_prewhisker. apply maponpaths. refine (!(square_assoc_v' _ _ _) @ _ @ square_assoc_v' _ _ _). do 2 apply maponpaths. rewrite <- !runitor_square'. apply maponpaths. apply maponpaths_2. rewrite !id_h_square_id. exact q. Qed.
Require Import UniMath.MoreFoundations.All. Require Import UniMath.CategoryTheory.Core.Prelude. Require Import UniMath.CategoryTheory.TwoSidedDisplayedCats.TwoSidedDispCat. Require Import UniMath.CategoryTheory.TwoSidedDisplayedCats.Univalence. Require Import UniMath.Bicategories.Core.Bicat. Import Bicat.Notations. Require Import UniMath.Bicategories.DoubleCategories.Core.DoubleCats. Require Import UniMath.Bicategories.DoubleCategories.DerivedLaws.TransportLaws. Require Import UniMath.Bicategories.DoubleCategories.DerivedLaws.Variations. Import TransportSquare.