Lemma disp_lhs_left_invert_cell {a b : C} {f g h : a --> b} {x : f ==> g} {y : g ==> h} {z : f ==> h} {inv_x : is_invertible_2cell x} {aa : D a} {bb : D b} {ff : aa -->[f] bb} {gg : aa -->[g] bb} {hh : aa -->[h] bb} (xx : ff ==>[x] gg) (yy : gg ==>[y] hh) (zz : ff ==>[z] hh) (inv_xx : is_disp_invertible_2cell inv_x xx) (q : x • y = z) (p := rhs_left_inv_cell _ _ _ inv_x q : y = inv_x^-1 • z) (pp : yy = transportb (λ x, _ ==>[x] _) p (disp_inv_cell ((xx,,inv_xx):disp_invertible_2cell (x,,inv_x) ff gg) •• zz)) : xx •• yy = transportb (λ x, _ ==>[x] _) q zz. Proof. etrans. { apply maponpaths. apply pp. } etrans. { apply disp_mor_transportf_prewhisker. } etrans. { apply maponpaths. apply disp_vassocr. } etrans. { apply (transport_f_f (λ x, _ ==>[x] _)). } etrans. { apply maponpaths. apply maponpaths_2. apply (disp_vcomp_rinv ((xx,,inv_xx):disp_invertible_2cell (x,,inv_x) _ _)). } etrans. { apply maponpaths. apply disp_mor_transportf_postwhisker. } etrans. { unfold transportb. apply (transport_f_f (λ x, _ ==>[x] _)). } etrans. { apply maponpaths. apply disp_id2_left. } etrans. { unfold transportb. apply (transport_f_f (λ x, _ ==>[x] _)). } unfold transportb. apply maponpaths_2. apply cellset_property. Qed.
Require Import UniMath.Foundations.All. Require Import UniMath.MoreFoundations.All. Require Import UniMath.CategoryTheory.Core.Categories. Require Import UniMath.CategoryTheory.DisplayedCats.Core. Require Import UniMath.CategoryTheory.DisplayedCats.Total. Require Import UniMath.Bicategories.Core.Bicat. Import Bicat.Notations. Require Import UniMath.Bicategories.Core.Invertible_2cells. Require Import UniMath.Bicategories.Core.BicategoryLaws. Require Import UniMath.Bicategories.Core.Unitors. Require Import UniMath.Bicategories.Morphisms.Adjunctions. Require Import UniMath.Bicategories.Core.Univalence.