Definition pseudomonic_invertible {B : bicat} {a b : B} {f₁ f₂ : a --> b} (β : f₁ ==> f₂) (Hβ : is_invertible_2cell β) (Hf₁ : pseudomonic_1cell f₁) : pseudomonic_1cell f₂. Proof. use make_pseudomonic. - apply (faithful_invertible β Hβ). apply pseudomonic_1cell_faithful. exact Hf₁. - intros z g₁ g₂ αf Hαf. simple refine (_ ,, _ ,, _). + refine (pseudomonic_1cell_inv_map Hf₁ ((_ ◃ β) • αf • (_ ◃ Hβ^-1)) _). is_iso. + apply is_invertible_2cell_pseudomonic_1cell_inv_map. + abstract (simpl ; use (vcomp_lcancel (_ ◃ β)) ; [ is_iso | ] ; rewrite <- vcomp_whisker ; rewrite pseudomonic_1cell_inv_map_eq ; rewrite !vassocl ; rewrite lwhisker_vcomp ; rewrite vcomp_linv ; rewrite lwhisker_id2 ; rewrite id2_right ; apply idpath). Defined.
Require Import UniMath.Foundations.All. Require Import UniMath.MoreFoundations.All. Require Import UniMath.CategoryTheory.Core.Categories. Require Import UniMath.CategoryTheory.Core.Functors. Require Import UniMath.Bicategories.Core.Bicat. Import Bicat.Notations. Require Import UniMath.Bicategories.Core.Invertible_2cells. Require Import UniMath.Bicategories.Core.Unitors. Require Import UniMath.Bicategories.Core.BicategoryLaws. Require Import UniMath.Bicategories.Core.EquivToAdjequiv. Require Import UniMath.Bicategories.Morphisms.Adjunctions. Require Import UniMath.Bicategories.Morphisms.FullyFaithful. Require Import UniMath.Bicategories.Morphisms.DiscreteMorphisms. Require Import UniMath.Bicategories.Morphisms.InternalStreetFibration. Section InvertibleFromInternalSFib. End InvertibleFromInternalSFib.