Proposition comp_square_between_companions : comp_ver_globular_square γ₁ γ₂ = id_h_square_bicat v₁. Proof. unfold γ₁, γ₂, square_between_companions. unfold comp_ver_globular_square. etrans. { do 2 apply maponpaths. etrans. { do 3 apply maponpaths. refine (!_). apply runitor_v_comp_square''. } etrans. { apply maponpaths_2. do 2 apply maponpaths. refine (!_). apply lunitor_v_comp_square''. } rewrite !rwhisker_lwhisker_square. rewrite <- !lwhisker_hcomp_square. do 2 apply maponpaths. rewrite <- !rwhisker_lwhisker_square. rewrite <- !rwhisker_hcomp_square. do 2 apply maponpaths. rewrite !lrwhisker_hcomp_square. rewrite lassociator_v_comp_square''. rewrite !rwhisker_lwhisker_square. rewrite <- lwhisker_hcomp_square. apply maponpaths. rewrite <- !rwhisker_square_comp. etrans. { do 2 apply maponpaths_2. rewrite <- lunitor_triangle. rewrite !vassocr. rewrite rassociator_lassociator. rewrite id2_left. rewrite vcomp_runitor. rewrite !vassocl. etrans. { apply maponpaths. rewrite !vassocr. rewrite lunitor_linvunitor. apply id2_left. } apply runitor_rinvunitor. } rewrite rwhisker_square_id. rewrite !double_bicat_interchange. rewrite are_companions_right'. rewrite <- !id_h_square_bicat_id. rewrite lunitor_h_comp_square'. rewrite runitor_h_comp_square'. rewrite <- !dwhisker_vcomp_square. apply maponpaths. rewrite !dwhisker_uwhisker_square. rewrite <- uwhisker_vcomp_square. rewrite !dwhisker_uwhisker_square. rewrite <- uwhisker_vcomp_square. apply maponpaths. rewrite !ud_whisker_vcomp_square. etrans. { apply maponpaths_2. rewrite <- !dwhisker_square_comp. rewrite rinvunitor_runitor. rewrite linvunitor_lunitor. rewrite !dwhisker_square_id. apply runitor_v_comp_square'. } rewrite l_rwhisker_v_comp_square. rewrite l_lwhisker_v_comp_square. do 2 apply maponpaths. apply are_companions_left'. } rewrite <- !rwhisker_lwhisker_square. rewrite <- !rwhisker_uwhisker_square. rewrite <- !rwhisker_dwhisker_square. rewrite <- !rwhisker_uwhisker_square. rewrite <- !rwhisker_lwhisker_square. rewrite <- !rwhisker_dwhisker_square. rewrite <- !rwhisker_uwhisker_square. rewrite <- !rwhisker_square_comp. etrans. { apply maponpaths_2. etrans. { apply maponpaths. rewrite !vassocr. rewrite vcomp_runitor. rewrite runitor_rinvunitor. apply id2_left. } apply rinvunitor_runitor. } rewrite rwhisker_square_id. rewrite dwhisker_uwhisker_square. rewrite !lwhisker_uwhisker_square. rewrite dwhisker_uwhisker_square. rewrite <- uwhisker_square_comp. rewrite linvunitor_lunitor. rewrite uwhisker_square_id. rewrite !lwhisker_dwhisker_square. rewrite <- !lwhisker_square_comp. rewrite <- !dwhisker_square_comp. rewrite lunitor_runitor_identity. rewrite rinvunitor_runitor. rewrite dwhisker_square_id. etrans. { apply maponpaths_2. rewrite !vassocl. etrans. { do 2 apply maponpaths. rewrite !vassocr. rewrite runitor_rwhisker. rewrite vcomp_lunitor. apply idpath. } etrans. { apply maponpaths. rewrite !vassocr. rewrite linvunitor_lunitor. apply id2_left. } apply linvunitor_lunitor. } apply lwhisker_square_id. Qed.
Require Import UniMath.MoreFoundations.All. Require Import UniMath.CategoryTheory.Core.Prelude. Require Import UniMath.Bicategories.Core.Bicat. Import Bicat.Notations. Require Import UniMath.Bicategories.Core.Unitors. Require Import UniMath.Bicategories.Core.Invertible_2cells. Require Import UniMath.Bicategories.Core.Univalence. Require Import UniMath.Bicategories.Core.BicategoryLaws. Require Import UniMath.Bicategories.Morphisms.Adjunctions. Require Import UniMath.Bicategories.DoubleCategories.DoubleBicat.VerityDoubleBicat. Require Import UniMath.Bicategories.DoubleCategories.DoubleBicat.DerivedLaws. Require Import UniMath.Bicategories.DoubleCategories.DoubleBicat.CellsAndSquares. Require Import UniMath.Bicategories.DoubleCategories.DoubleBicat.UnderlyingCats. Require Import UniMath.Bicategories.DoubleCategories.DoubleBicat.LocalUnivalence. Require Import UniMath.Bicategories.DoubleCategories.DoubleBicat.CompanionPairs.