Library UniMath.Bicategories.DisplayedBicats.DisplayedUniversalArrowOnCat
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.Univalence.
Require Import UniMath.CategoryTheory.Core.Functors.
Require Import UniMath.CategoryTheory.Core.NaturalTransformations.
Require Import UniMath.CategoryTheory.Adjunctions.Core.
Require Import UniMath.CategoryTheory.Equivalences.Core.
Require Import UniMath.CategoryTheory.Equivalences.CompositesAndInverses.
Require Import UniMath.CategoryTheory.FunctorCategory.
Require Import UniMath.CategoryTheory.Adjunctions.Core.
Require Import UniMath.CategoryTheory.Equivalences.Core.
Require Import UniMath.CategoryTheory.Equivalences.FullyFaithful.
Require Import UniMath.CategoryTheory.DisplayedCats.Core.
Require Import UniMath.CategoryTheory.DisplayedCats.Functors.
Require Import UniMath.CategoryTheory.DisplayedCats.Total.
Require Import UniMath.CategoryTheory.DisplayedCats.NaturalTransformations.
Require Import UniMath.CategoryTheory.DisplayedCats.Isos.
Require Import UniMath.CategoryTheory.DisplayedCats.Adjunctions.
Require Import UniMath.CategoryTheory.DisplayedCats.Equivalences.
Require Import UniMath.CategoryTheory.DisplayedCats.TotalAdjunction.
Require Import UniMath.CategoryTheory.WeakEquivalences.
Require Import UniMath.CategoryTheory.limits.terminal.
Require Import UniMath.CategoryTheory.limits.Preservation.
Require Import UniMath.Bicategories.Core.Bicat. Import Bicat.Notations.
Require Import UniMath.Bicategories.Core.Invertible_2cells.
Require Import UniMath.Bicategories.Core.Examples.BicatOfUnivCats.
Require Import UniMath.Bicategories.Core.Examples.BicatOfCats.
Require Import UniMath.Bicategories.Core.Univalence.
Require Import UniMath.Bicategories.DisplayedBicats.DispBicat.
Require Import UniMath.Bicategories.DisplayedBicats.DispPseudofunctor.
Require Import UniMath.Bicategories.PseudoFunctors.Display.PseudoFunctorBicat.
Require Import UniMath.Bicategories.PseudoFunctors.PseudoFunctor.
Require Import UniMath.Bicategories.Transformations.PseudoTransformation.
Require Import UniMath.Bicategories.PseudoFunctors.Biadjunction.
Require Import UniMath.Bicategories.Modifications.Modification.
Require Import UniMath.Bicategories.PseudoFunctors.UniversalArrow.
Import PseudoFunctor.Notations.
Require Import UniMath.Bicategories.DisplayedBicats.DispBiadjunction.
Require Import UniMath.Bicategories.DisplayedBicats.DispInvertibles.
Import DispBicat.Notations.
Require Import UniMath.Bicategories.DisplayedBicats.DisplayedUniversalArrow.
Require Import UniMath.Bicategories.PseudoFunctors.Examples.BicatOfCatToUnivCat.
Require Import UniMath.Bicategories.DisplayedBicats.Examples.DispBicatOnCatToUniv.
Require Import UniMath.Bicategories.DisplayedBicats.Examples.CategoriesWithStructure.
Local Open Scope cat.
Section LocallyContr.
Let UnivCat := bicat_of_univ_cats.
Let Cat := bicat_of_cats.
Let R := univ_cats_to_cats.
Context (D : disp_bicat Cat)
(HD : disp_2cells_iscontr D)
(LUR : left_universal_arrow R).
Let D' := (disp_bicat_on_cat_to_univ_cat D).
Let RR := (disp_psfunctor_on_cat_to_univ_cat D
(disp_2cells_isaprop_from_disp_2cells_iscontr _ HD)).
Let LL0 := λ C, (pr1 (pr1 LUR C)).
Context (LL : ∏ C : category, D C → D (LL0 C)).
Context (ηη : ∏ (C : category) (CC : D C), CC -->[ (pr12 LUR) C] LL C CC).
Context (extension_preserve_structure :
∏ (C1 : category) (CC1 : pr1 D C1) (C2 : univalent_category) (CC2 : D (pr1 C2))
(F : C1 ⟶ pr1 C2),
CC1 -->[F] CC2 → LL C1 CC1 -->[ right_adjoint ((pr22 LUR) C1 C2) F] CC2).
Definition make_disp_left_universal_arrow_if_contr_CAT
: disp_left_universal_arrow LUR RR.
Show proof.
use make_disp_univ_arrow_if_contr.
- exact (disp_2cells_iscontr_disp_bicat_on_cat_to_univ_cat _ HD).
- exact HD.
- exact LL.
- exact ηη.
- exact extension_preserve_structure.
- exact (disp_2cells_iscontr_disp_bicat_on_cat_to_univ_cat _ HD).
- exact HD.
- exact LL.
- exact ηη.
- exact extension_preserve_structure.
End LocallyContr.
Section LocallyContrWeakEquivalences.
Let UnivCat := bicat_of_univ_cats.
Let Cat := bicat_of_cats.
Let R := univ_cats_to_cats.
Context (D : disp_bicat Cat)
(HD : disp_2cells_iscontr D)
(LUR : left_universal_arrow R).
Let D' := (disp_bicat_on_cat_to_univ_cat D).
Let RR := (disp_psfunctor_on_cat_to_univ_cat D (disp_2cells_isaprop_from_disp_2cells_iscontr _ HD)).
Let LL0 := λ C, (pr1 (pr1 LUR C)).
Let η := (pr12 LUR).
Context (η_weak_equiv : ∏ C : category, is_weak_equiv (η C)).
Context (weak_equiv_preserve_struct
: ∏ (C1 C2 : category) (H : is_univalent C2) (F : C1 ⟶ C2),
is_weak_equiv F -> D C1 -> D C2).
Context (η_preserves_structs : ∏ (C : category) (CC : D C),
CC -->[η C] weak_equiv_preserve_struct C (LL0 C) (pr2 (pr1 LUR C))
(η C) (η_weak_equiv C) CC).
Context (extension_preserves_struct
: ∏ (C1 : category) (C2 C3 : univalent_category)
(F : C1 ⟶ C3) (G : C1 ⟶ C2) (H : C2 ⟶ C3)
(n : nat_z_iso (G ∙ H) F)
(CC1 : D C1) (CC2 : D (pr1 C2)) (CC3 : D (pr1 C3)),
is_weak_equiv G -> CC1 -->[ F ] CC3 -> CC2 -->[ H ] CC3).
Definition make_disp_left_universal_arrow_if_contr_CAT_from_weak_equiv
: disp_left_universal_arrow LUR RR.
Show proof.
use make_disp_left_universal_arrow_if_contr_CAT.
- intros C CC.
use (weak_equiv_preserve_struct _ _ _ (η C)).
+ apply (pr1 LUR C).
+ apply η_weak_equiv.
+ exact CC.
- exact η_preserves_structs.
- intros C1 CC1 C2 CC2 F FF.
use (extension_preserves_struct C1 (LL0 C1) C2 F (η C1) _ _ CC1).
+ set (t := counit_nat_z_iso_from_adj_equivalence_of_cats (pr22 LUR C1 C2)).
set (tg := nat_z_iso_pointwise_z_iso t F).
exact (nat_z_iso_from_z_iso (homset_property _) tg).
+ apply η_weak_equiv.
+ exact FF.
- intros C CC.
use (weak_equiv_preserve_struct _ _ _ (η C)).
+ apply (pr1 LUR C).
+ apply η_weak_equiv.
+ exact CC.
- exact η_preserves_structs.
- intros C1 CC1 C2 CC2 F FF.
use (extension_preserves_struct C1 (LL0 C1) C2 F (η C1) _ _ CC1).
+ set (t := counit_nat_z_iso_from_adj_equivalence_of_cats (pr22 LUR C1 C2)).
set (tg := nat_z_iso_pointwise_z_iso t F).
exact (nat_z_iso_from_z_iso (homset_property _) tg).
+ apply η_weak_equiv.
+ exact FF.
End LocallyContrWeakEquivalences.