Proposition local_equivalence_twocell_lassociator {w x y z : B₁} (f : F w --> F x) (g : F x --> F y) (h : F y --> F z) : local_equivalence_inv_twocell (lassociator _ _ _) • local_equivalence_inv_onecell_comp (f · g) h • (local_equivalence_inv_onecell_comp f g ▹ _) = local_equivalence_inv_onecell_comp f (g · h) • (_ ◃ local_equivalence_inv_onecell_comp g h) • lassociator _ _ _. Proof. cbn -[psfunctor_comp]. use local_equivalence_eq_two_cell. rewrite <- !lwhisker_vcomp. rewrite <- !rwhisker_vcomp. rewrite !psfunctor_vcomp. rewrite !psfunctor_local_equivalence_inv_twocell. rewrite !vassocl. apply maponpaths. etrans. { apply maponpaths. rewrite !vassocr. rewrite vcomp_linv. rewrite id2_left. rewrite !vassocl. apply idpath. } etrans. { do 4 apply maponpaths. rewrite !vassocr. rewrite local_equivalence_triangle1_inv. rewrite id2_left. rewrite !vassocl. apply idpath. } etrans. { do 3 apply maponpaths. rewrite !vassocr. rewrite psfunctor_rwhisker. rewrite !vassocl. rewrite psfunctor_rwhisker. apply idpath. } etrans. { etrans. { apply maponpaths. rewrite !vassocr. rewrite vcomp_whisker. apply idpath. } rewrite !vassocr. rewrite <- lwhisker_lwhisker. rewrite !vassocl. apply maponpaths. apply maponpaths. rewrite !vassocr. apply maponpaths_2. rewrite !vassocl. rewrite !rwhisker_vcomp. apply maponpaths. rewrite !vassocr. rewrite local_equivalence_counit_natural_alt. rewrite !vassocl. rewrite local_equivalence_triangle1_inv. rewrite id2_right. apply idpath. } rewrite <- !rwhisker_vcomp. rewrite !vassocl. etrans. { apply maponpaths. rewrite !vassocr. rewrite rwhisker_rwhisker. rewrite !vassocl. apply maponpaths. rewrite !vassocr. rewrite <- rwhisker_lwhisker. rewrite !vassocl. apply maponpaths. refine (!_). rewrite !vassocr. apply (psfunctor_lassociator F). } rewrite !vassocr. apply maponpaths_2. rewrite !vassocl. refine (!_). etrans. { do 3 apply maponpaths. rewrite !vassocr. rewrite local_equivalence_triangle1_inv. rewrite id2_left. rewrite !vassocl. apply idpath. } etrans. { do 2 apply maponpaths. rewrite !vassocr. rewrite psfunctor_lwhisker. rewrite !vassocl. apply maponpaths. rewrite psfunctor_lwhisker. apply idpath. } rewrite !vassocr. apply maponpaths_2. rewrite !vassocl. etrans. { apply maponpaths. rewrite !lwhisker_vcomp. apply maponpaths. rewrite !vassocr. rewrite local_equivalence_counit_natural_alt. rewrite !vassocl. rewrite local_equivalence_triangle1_inv. rewrite id2_right. apply idpath. } rewrite <- !lwhisker_vcomp. rewrite !vassocr. apply maponpaths_2. rewrite !vassocl. refine (!_). etrans. { rewrite !vassocr. rewrite <- vcomp_whisker. rewrite !vassocl. apply idpath. } apply maponpaths. rewrite !lwhisker_vcomp. apply maponpaths. rewrite vcomp_whisker. apply idpath. Qed.
Require Import UniMath.Foundations.All. Require Import UniMath.MoreFoundations.All. Require Import UniMath.CategoryTheory.Core.Prelude. Require Import UniMath.CategoryTheory.Equivalences.Core. Require Import UniMath.CategoryTheory.Equivalences.FullyFaithful. Require Import UniMath.Bicategories.Core.Bicat. Import Bicat.Notations. Require Import UniMath.Bicategories.Core.Examples.BicatOfUnivCats. 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.Core.EquivToAdjequiv. Require Import UniMath.Bicategories.DisplayedBicats.DispBicat. Require Import UniMath.Bicategories.PseudoFunctors.Display.PseudoFunctorBicat. Require Import UniMath.Bicategories.PseudoFunctors.PseudoFunctor. Import PseudoFunctor.Notations. Require Import UniMath.Bicategories.PseudoFunctors.Properties.