Definition essentially_surjective_is_eso_faithful : is_eso_faithful F. Proof. intros D₁ D₂ G HG H₁ H₂ n₁ n₂ p₁ p₂. use nat_trans_eq. { apply homset_property. } intro y. use (factor_through_squash _ _ (HF y)). - apply homset_property. - intro xx. induction xx as [ x i ]. use (cancel_precomposition_z_iso (functor_on_z_iso H₁ i)). cbn. rewrite !nat_trans_ax. apply maponpaths_2. exact (nat_trans_eq_pointwise p₁ x). Qed. Section EssentiallySurjectiveLift. Context {D₁ D₂ : bicat_of_univ_cats} {G : D₁ --> D₂} (HG : fully_faithful_1cell G) (H₁ : C₁ --> D₁) (H₂ : C₂ --> D₂) (α : invertible_2cell (H₁ · G) (F · H₂)). Let HG' : fully_faithful G := cat_fully_faithful_1cell_is_fully_faithful _ HG. Let α' : nat_z_iso (H₁ ∙ G) (F ∙ H₂) := invertible_2cell_to_nat_z_iso _ _ α. Local Definition isaprop_ob_fiber (y : pr1 C₂) : isaprop (∑ (x : pr1 D₁), z_iso (pr1 G x) (pr1 H₂ y)). Proof. use invproofirrelevance. intros φ₁ φ₂. use total2_paths_f. - apply (isotoid _ (pr2 D₁)). exact (make_z_iso' _ (fully_faithful_reflects_iso_proof _ _ _ HG' _ _ (z_iso_comp (pr2 φ₁) (z_iso_inv_from_z_iso (pr2 φ₂))))). - use subtypePath. { intro. apply isaprop_is_z_isomorphism. } etrans. { apply transportf_z_iso_functors. } rewrite functor_on_inv_from_z_iso. use z_iso_inv_on_right. refine (!_). etrans. { apply maponpaths_2. cbn. rewrite idtoiso_isotoid. apply (homotweqinvweq (make_weq _ (HG' _ _)) _). } rewrite !assoc'. rewrite z_iso_after_z_iso_inv. apply id_right. Qed. Local Definition iscontr_ob_fiber (y : pr1 C₂) : iscontr (∑ (x : pr1 D₁), z_iso (pr1 G x) (pr1 H₂ y)). Proof. use (factor_through_squash _ _ (HF y)). - apply isapropiscontr. - intros z. use iscontraprop1. + exact (isaprop_ob_fiber y). + refine (pr1 H₁ (pr1 z) ,, _). exact (z_iso_comp (nat_z_iso_pointwise_z_iso α' (pr1 z)) (functor_on_z_iso H₂ (pr2 z))). Defined.
Require Import UniMath.Foundations.All. Require Import UniMath.MoreFoundations.All. Require Import UniMath.CategoryTheory.Core.Categories. Require Import UniMath.CategoryTheory.Core.Isos. Require Import UniMath.CategoryTheory.Core.Functors. Require Import UniMath.CategoryTheory.Core.NaturalTransformations. Require Import UniMath.CategoryTheory.Core.Univalence. Require Import UniMath.CategoryTheory.IsoCommaCategory. Require Import UniMath.CategoryTheory.whiskering. Require Import UniMath.CategoryTheory.Categories.StandardCategories. Require Import UniMath.CategoryTheory.Subcategory.Core. Require Import UniMath.CategoryTheory.Subcategory.Full. 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.Univalence. Require Import UniMath.Bicategories.Core.EquivToAdjequiv. Require Import UniMath.Bicategories.Core.Examples.BicatOfUnivCats. Require Import UniMath.Bicategories.Morphisms.Adjunctions. Require Import UniMath.Bicategories.Morphisms.FullyFaithful. Require Import UniMath.Bicategories.Morphisms.Eso. Require Import UniMath.Bicategories.Morphisms.Examples.MorphismsInBicatOfUnivCats. Require Import UniMath.Bicategories.Limits.Pullbacks. Require Import UniMath.Bicategories.Limits.PullbackFunctions. Require Import UniMath.Bicategories.Limits.Examples.BicatOfUnivCatsLimits.