Definition pr1_internal_opcleaving : internal_sopfib_opcleaving (π₁ : b₁ ⊗ b₂ --> b₁). Proof. intros a f g α. refine (⟨ g , f · π₂ ⟩ ,, (prod_1cell_eta _ f)^-1 • ⟪ α , id2 _ ⟫ ,, inv_of_invertible_2cell (prod_1cell_pr1 _ g _) ,, _ ,, _). - apply invertible_to_opcartesian. rewrite <- rwhisker_vcomp. use is_invertible_2cell_vcomp. + is_iso. + rewrite prod_2cell_pr2. is_iso. apply prod_1cell_pr2. - abstract (unfold prod_1cell_eta_map ; rewrite <- !rwhisker_vcomp ; rewrite prod_2cell_pr1 ; cbn ; etrans ; [ apply maponpaths_2 ; apply binprod_ump_2cell_pr1 | ] ; rewrite !vassocr ; rewrite vcomp_linv ; rewrite id2_left ; apply idpath). Defined.
Require Import UniMath.Foundations.All. Require Import UniMath.MoreFoundations.All. Require Import UniMath.CategoryTheory.Core.Categories. Require Import UniMath.Bicategories.Core.Bicat. Import Bicat.Notations. Require Import UniMath.Bicategories.Core.Invertible_2cells. Require Import UniMath.Bicategories.Morphisms.InternalStreetFibration. Require Import UniMath.Bicategories.Morphisms.InternalStreetOpFibration. Require Import UniMath.Bicategories.Limits.Products. Import Products.Notations.