Proposition linvunitor_square {C : double_cat} {x₁ x₂ y₁ y₂ : C} {v₁ : x₁ -->v x₂} {v₂ : y₁ -->v y₂} {h₁ : x₁ -->h y₁} {h₂ : x₂ -->h y₂} (s : square v₁ v₂ h₁ h₂) : linvunitor_h h₁ ⋆v (id_h_square _ ⋆h s) = transportf_square (id_v_right _ @ !(id_v_left _)) (id_v_right _ @ !(id_v_left _)) (s ⋆v linvunitor_h h₂). Proof. refine (!(square_id_right_v' _) @ _). rewrite <- lunitor_linvunitor_h'. rewrite transportf_square_postwhisker. rewrite transportf_f_square. etrans. { apply maponpaths. apply square_assoc_v. } unfold transportb_square. rewrite transportf_f_square. etrans. { apply maponpaths. apply maponpaths_2. refine (!_). apply square_assoc_v'. } rewrite transportf_square_prewhisker. rewrite transportf_f_square. rewrite lunitor_square. unfold transportb_square. rewrite transportf_square_postwhisker. rewrite transportf_square_prewhisker. rewrite transportf_f_square. etrans. { apply maponpaths. apply maponpaths_2. apply square_assoc_v. } unfold transportb_square. rewrite transportf_square_prewhisker. rewrite transportf_f_square. rewrite linvunitor_lunitor_h. unfold transportb_square. rewrite !transportf_square_prewhisker. rewrite transportf_f_square. rewrite square_id_left_v. unfold transportb_square. rewrite transportf_square_prewhisker. rewrite transportf_f_square. use transportf_square_eq. apply idpath. 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.Core.DoubleCats. Require Import UniMath.Bicategories.DoubleCategories.Core.UnivalentDoubleCats.