Definition pair_is_disp_invertible_2cell {a b : C} {f : a --> b} {g : a --> b} (x : invertible_2cell f g) {aa : disp_dirprod_bicat a} {bb : disp_dirprod_bicat b} {ff : aa -->[ f ] bb} {gg : aa -->[ g ] bb} (xx : ff ==>[ x ] gg) : is_disp_invertible_2cell x (pr1 xx) × is_disp_invertible_2cell x (pr2 xx) → is_disp_invertible_2cell x xx. Proof. intros H. induction H as [H1 H2]. use tpair. - split. + exact (disp_inv_cell (_ ,, H1)). + exact (disp_inv_cell (_ ,, H2)). - split. + refine (total2_paths2 (disp_vcomp_rinv (_ ,, H1)) (disp_vcomp_rinv (_ ,, H2)) @ _). refine (!(transportb_dirprod (f ==> f) (λ α, _ ==>[α] _) (λ α, _ ==>[α] _) (_ ,, (_ ,, _)) (_ ,, (_ ,, _)) (vcomp_rinv x) )). * exact (transportb (λ z, _ ==>[z] _) (vcomp_rinv _) (disp_id2 _)). * exact (transportb (λ z, _ ==>[z] _) (vcomp_rinv _) (disp_id2 _)). + refine (total2_paths2 (disp_vcomp_linv (_ ,, H1)) (disp_vcomp_linv (_ ,, H2)) @ _). refine (!(transportb_dirprod (g ==> g) (λ α, _ ==>[α] _) (λ α, _ ==>[α] _) (_ ,, (_ ,, _)) (_ ,, (_ ,, _)) (vcomp_linv x) )). * exact (transportb (λ z, _ ==>[z] _) (vcomp_linv _) (disp_id2 _)). * exact (transportb (λ z, _ ==>[z] _) (vcomp_linv _) (disp_id2 _)). Defined.
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.Constructions. Require Import UniMath.Bicategories.Core.Bicat. Import Bicat.Notations. Require Import UniMath.Bicategories.Core.Examples.Initial. Require Import UniMath.Bicategories.Core.Examples.Final. Require Import UniMath.Bicategories.DisplayedBicats.DispBicat. Import DispBicat.Notations. Require Import UniMath.Bicategories.Core.Univalence. Require Import UniMath.Bicategories.DisplayedBicats.DispInvertibles. Require Import UniMath.Bicategories.DisplayedBicats.DispAdjunctions. Require Import UniMath.Bicategories.DisplayedBicats.DispUnivalence.