Library UniMath.Bicategories.ComprehensionCat.Universes.CompCatTypes.Constant
Require Import UniMath.MoreFoundations.All.
Require Import UniMath.CategoryTheory.Core.Prelude.
Require Import UniMath.CategoryTheory.Limits.Initial.
Require Import UniMath.CategoryTheory.Limits.StrictInitial.
Require Import UniMath.CategoryTheory.Limits.Terminal.
Require Import UniMath.CategoryTheory.Limits.BinProducts.
Require Import UniMath.CategoryTheory.Limits.BinCoproducts.
Require Import UniMath.CategoryTheory.Limits.Equalizers.
Require Import UniMath.CategoryTheory.Limits.Pullbacks.
Require Import UniMath.CategoryTheory.Limits.Preservation.
Require Import UniMath.CategoryTheory.DisplayedCats.Core.
Require Import UniMath.CategoryTheory.DisplayedCats.Functors.
Require Import UniMath.CategoryTheory.DisplayedCats.Isos.
Require Import UniMath.CategoryTheory.DisplayedCats.Fiber.
Require Import UniMath.CategoryTheory.DisplayedCats.Fibrations.
Require Import UniMath.CategoryTheory.DisplayedCats.Univalence.
Require Import UniMath.CategoryTheory.DisplayedCats.Codomain.
Require Import UniMath.CategoryTheory.DisplayedCats.Codomain.FiberCod.
Require Import UniMath.CategoryTheory.Monics.
Require Import UniMath.CategoryTheory.SubobjectClassifier.SubobjectClassifier.
Require Import UniMath.CategoryTheory.SubobjectClassifier.PreservesSubobjectClassifier.
Require Import UniMath.CategoryTheory.SubobjectClassifier.SubobjectClassifierIso.
Require Import UniMath.CategoryTheory.Arithmetic.ParameterizedNNO.
Require Import UniMath.Bicategories.Core.Bicat.
Import Bicat.Notations.
Require Import UniMath.Bicategories.Core.Examples.StructuredCategories.
Require Import UniMath.Bicategories.ComprehensionCat.BicatOfCompCat.
Require Import UniMath.Bicategories.ComprehensionCat.DFLCompCat.
Require Import UniMath.Bicategories.ComprehensionCat.CompCatNotations.
Require Import UniMath.Bicategories.ComprehensionCat.DFLCompCatNotations.
Require Import UniMath.Bicategories.ComprehensionCat.HPropMono.
Require Import UniMath.Bicategories.ComprehensionCat.ComprehensionPreservation.
Require Import UniMath.Bicategories.ComprehensionCat.Biequivalence.DFLCompCatToFinLim.
Require Import UniMath.Bicategories.ComprehensionCat.Biequivalence.LocalProperty.
Require Import UniMath.Bicategories.ComprehensionCat.Universes.CompCatUniv.CompCatOb.
Require Import UniMath.Bicategories.ComprehensionCat.Universes.CompCatUniv.UniverseType.
Require Import UniMath.Bicategories.ComprehensionCat.Universes.CompCatUniv.DFLCompCatUniv.
Require Import UniMath.Bicategories.ComprehensionCat.Universes.CompCatUnivProps.
Require Import UniMath.Bicategories.ComprehensionCat.LocalProperty.LocalProperties.
Require Import UniMath.Bicategories.ComprehensionCat.LocalProperty.Examples.
Require Import UniMath.Bicategories.ComprehensionCat.LocalProperty.DFLCompCatExamples.
Local Open Scope cat.
Local Open Scope comp_cat.
Section TypesInCompCatUniv.
Context (C : dfl_full_comp_cat_with_univ).
Let el : comp_cat_univ_type (dfl_full_comp_cat_ob C)
:= dfl_full_comp_cat_el C.
Require Import UniMath.CategoryTheory.Core.Prelude.
Require Import UniMath.CategoryTheory.Limits.Initial.
Require Import UniMath.CategoryTheory.Limits.StrictInitial.
Require Import UniMath.CategoryTheory.Limits.Terminal.
Require Import UniMath.CategoryTheory.Limits.BinProducts.
Require Import UniMath.CategoryTheory.Limits.BinCoproducts.
Require Import UniMath.CategoryTheory.Limits.Equalizers.
Require Import UniMath.CategoryTheory.Limits.Pullbacks.
Require Import UniMath.CategoryTheory.Limits.Preservation.
Require Import UniMath.CategoryTheory.DisplayedCats.Core.
Require Import UniMath.CategoryTheory.DisplayedCats.Functors.
Require Import UniMath.CategoryTheory.DisplayedCats.Isos.
Require Import UniMath.CategoryTheory.DisplayedCats.Fiber.
Require Import UniMath.CategoryTheory.DisplayedCats.Fibrations.
Require Import UniMath.CategoryTheory.DisplayedCats.Univalence.
Require Import UniMath.CategoryTheory.DisplayedCats.Codomain.
Require Import UniMath.CategoryTheory.DisplayedCats.Codomain.FiberCod.
Require Import UniMath.CategoryTheory.Monics.
Require Import UniMath.CategoryTheory.SubobjectClassifier.SubobjectClassifier.
Require Import UniMath.CategoryTheory.SubobjectClassifier.PreservesSubobjectClassifier.
Require Import UniMath.CategoryTheory.SubobjectClassifier.SubobjectClassifierIso.
Require Import UniMath.CategoryTheory.Arithmetic.ParameterizedNNO.
Require Import UniMath.Bicategories.Core.Bicat.
Import Bicat.Notations.
Require Import UniMath.Bicategories.Core.Examples.StructuredCategories.
Require Import UniMath.Bicategories.ComprehensionCat.BicatOfCompCat.
Require Import UniMath.Bicategories.ComprehensionCat.DFLCompCat.
Require Import UniMath.Bicategories.ComprehensionCat.CompCatNotations.
Require Import UniMath.Bicategories.ComprehensionCat.DFLCompCatNotations.
Require Import UniMath.Bicategories.ComprehensionCat.HPropMono.
Require Import UniMath.Bicategories.ComprehensionCat.ComprehensionPreservation.
Require Import UniMath.Bicategories.ComprehensionCat.Biequivalence.DFLCompCatToFinLim.
Require Import UniMath.Bicategories.ComprehensionCat.Biequivalence.LocalProperty.
Require Import UniMath.Bicategories.ComprehensionCat.Universes.CompCatUniv.CompCatOb.
Require Import UniMath.Bicategories.ComprehensionCat.Universes.CompCatUniv.UniverseType.
Require Import UniMath.Bicategories.ComprehensionCat.Universes.CompCatUniv.DFLCompCatUniv.
Require Import UniMath.Bicategories.ComprehensionCat.Universes.CompCatUnivProps.
Require Import UniMath.Bicategories.ComprehensionCat.LocalProperty.LocalProperties.
Require Import UniMath.Bicategories.ComprehensionCat.LocalProperty.Examples.
Require Import UniMath.Bicategories.ComprehensionCat.LocalProperty.DFLCompCatExamples.
Local Open Scope cat.
Local Open Scope comp_cat.
Section TypesInCompCatUniv.
Context (C : dfl_full_comp_cat_with_univ).
Let el : comp_cat_univ_type (dfl_full_comp_cat_ob C)
:= dfl_full_comp_cat_el C.
Section FixAType.
Context {A : ty ([] : C)}.
Definition type_in_comp_cat_univ
: UU
:= ∑ (a : tm [] (comp_cat_univ [])),
z_iso ([] & comp_cat_univ_el el a) ([] & A).
Proposition isaset_type_in_comp_cat_univ
: isaset type_in_comp_cat_univ.
Show proof.
Definition make_type_in_comp_cat_univ
(a : tm [] (comp_cat_univ []))
(f : z_iso ([] & comp_cat_univ_el el a) ([] & A))
: type_in_comp_cat_univ
:= a ,, f.
Definition type_in_comp_cat_univ_code
(a : type_in_comp_cat_univ)
: tm [] (comp_cat_univ [])
:= pr1 a.
Definition type_in_comp_cat_univ_z_iso
(a : type_in_comp_cat_univ)
: z_iso ([] & comp_cat_univ_el el (type_in_comp_cat_univ_code a)) ([] & A)
:= pr2 a.
Definition type_in_comp_cat_univ_z_iso_fiber
(a : type_in_comp_cat_univ)
: z_iso
(C := fiber_category _ _)
(comp_cat_univ_el el (type_in_comp_cat_univ_code a))
A.
Show proof.
Proposition type_in_comp_cat_univ_eq
{a₁ a₂ : type_in_comp_cat_univ}
(p : type_in_comp_cat_univ_code a₁ = type_in_comp_cat_univ_code a₂)
(q : comp_cat_comp_mor (comp_cat_el_map_on_eq el p)
· type_in_comp_cat_univ_z_iso a₂
=
type_in_comp_cat_univ_z_iso a₁)
: a₁ = a₂.
Show proof.
Arguments type_in_comp_cat_univ A : clear implicits.
Context {A : ty ([] : C)}.
Definition type_in_comp_cat_univ
: UU
:= ∑ (a : tm [] (comp_cat_univ [])),
z_iso ([] & comp_cat_univ_el el a) ([] & A).
Proposition isaset_type_in_comp_cat_univ
: isaset type_in_comp_cat_univ.
Show proof.
Definition make_type_in_comp_cat_univ
(a : tm [] (comp_cat_univ []))
(f : z_iso ([] & comp_cat_univ_el el a) ([] & A))
: type_in_comp_cat_univ
:= a ,, f.
Definition type_in_comp_cat_univ_code
(a : type_in_comp_cat_univ)
: tm [] (comp_cat_univ [])
:= pr1 a.
Definition type_in_comp_cat_univ_z_iso
(a : type_in_comp_cat_univ)
: z_iso ([] & comp_cat_univ_el el (type_in_comp_cat_univ_code a)) ([] & A)
:= pr2 a.
Definition type_in_comp_cat_univ_z_iso_fiber
(a : type_in_comp_cat_univ)
: z_iso
(C := fiber_category _ _)
(comp_cat_univ_el el (type_in_comp_cat_univ_code a))
A.
Show proof.
use cod_iso_to_type_iso.
- exact (type_in_comp_cat_univ_z_iso a).
- abstract
(apply TerminalArrowEq).
- exact (type_in_comp_cat_univ_z_iso a).
- abstract
(apply TerminalArrowEq).
Proposition type_in_comp_cat_univ_eq
{a₁ a₂ : type_in_comp_cat_univ}
(p : type_in_comp_cat_univ_code a₁ = type_in_comp_cat_univ_code a₂)
(q : comp_cat_comp_mor (comp_cat_el_map_on_eq el p)
· type_in_comp_cat_univ_z_iso a₂
=
type_in_comp_cat_univ_z_iso a₁)
: a₁ = a₂.
Show proof.
induction a₁ as [ a₁ f₁ ].
induction a₂ as [ a₂ f₂ ].
cbn in p.
induction p.
apply maponpaths.
use z_iso_eq.
refine (!q @ _) ; cbn.
refine (_ @ id_left _).
apply maponpaths_2.
apply comp_cat_comp_mor_id.
End FixAType.induction a₂ as [ a₂ f₂ ].
cbn in p.
induction p.
apply maponpaths.
use z_iso_eq.
refine (!q @ _) ; cbn.
refine (_ @ id_left _).
apply maponpaths_2.
apply comp_cat_comp_mor_id.
Arguments type_in_comp_cat_univ A : clear implicits.
Definition unit_in_comp_cat_univ
: UU
:= type_in_comp_cat_univ (dfl_full_comp_cat_unit ([] : C)).
Proposition unit_in_comp_cat_univ_eq
{a₁ a₂ : unit_in_comp_cat_univ}
(p : type_in_comp_cat_univ_code a₁ = type_in_comp_cat_univ_code a₂)
: a₁ = a₂.
Show proof.
: UU
:= type_in_comp_cat_univ (dfl_full_comp_cat_unit ([] : C)).
Proposition unit_in_comp_cat_univ_eq
{a₁ a₂ : unit_in_comp_cat_univ}
(p : type_in_comp_cat_univ_code a₁ = type_in_comp_cat_univ_code a₂)
: a₁ = a₂.
Show proof.
induction a₁ as [ a₁ f₁ ].
induction a₂ as [ a₂ f₂ ].
cbn in p.
induction p.
apply maponpaths.
use z_iso_eq.
use (cancel_z_iso
_ _
(dfl_full_comp_cat_extend_unit_z_iso
(C := dfl_full_comp_cat_with_univ_types C)
[])).
apply TerminalArrowEq.
induction a₂ as [ a₂ f₂ ].
cbn in p.
induction p.
apply maponpaths.
use z_iso_eq.
use (cancel_z_iso
_ _
(dfl_full_comp_cat_extend_unit_z_iso
(C := dfl_full_comp_cat_with_univ_types C)
[])).
apply TerminalArrowEq.
Definition empty_in_comp_cat_univ
(I : fiberwise_cat_property
strict_initial_local_property
(dfl_full_comp_cat_with_univ_types C))
: UU
:= type_in_comp_cat_univ
(InitialObject
(strict_initial_to_initial
(fiberwise_cat_property_ob I []))).
Proposition empty_in_comp_cat_univ_eq
{I : fiberwise_cat_property
strict_initial_local_property
(dfl_full_comp_cat_with_univ_types C)}
{a₁ a₂ : empty_in_comp_cat_univ I}
(p : type_in_comp_cat_univ_code a₁ = type_in_comp_cat_univ_code a₂)
: a₁ = a₂.
Show proof.
(I : fiberwise_cat_property
strict_initial_local_property
(dfl_full_comp_cat_with_univ_types C))
: UU
:= type_in_comp_cat_univ
(InitialObject
(strict_initial_to_initial
(fiberwise_cat_property_ob I []))).
Proposition empty_in_comp_cat_univ_eq
{I : fiberwise_cat_property
strict_initial_local_property
(dfl_full_comp_cat_with_univ_types C)}
{a₁ a₂ : empty_in_comp_cat_univ I}
(p : type_in_comp_cat_univ_code a₁ = type_in_comp_cat_univ_code a₂)
: a₁ = a₂.
Show proof.
induction a₁ as [ a₁ f₁ ].
induction a₂ as [ a₂ f₂ ].
cbn in p.
induction p.
apply maponpaths.
use z_iso_eq_inv.
use (InitialArrowEq
(O := make_Initial
_
(preserves_initial_dfl_full_comp_cat_adjequiv_base_functor I _ _))).
apply (strict_initial_to_initial (I [])).
induction a₂ as [ a₂ f₂ ].
cbn in p.
induction p.
apply maponpaths.
use z_iso_eq_inv.
use (InitialArrowEq
(O := make_Initial
_
(preserves_initial_dfl_full_comp_cat_adjequiv_base_functor I _ _))).
apply (strict_initial_to_initial (I [])).
Definition pnno_in_comp_cat_univ
(N : fiberwise_cat_property
parameterized_NNO_local_property
(dfl_full_comp_cat_with_univ_types C))
: UU
:= type_in_comp_cat_univ
(parameterized_NNO_carrier
(fiberwise_cat_property_ob N [])).
(N : fiberwise_cat_property
parameterized_NNO_local_property
(dfl_full_comp_cat_with_univ_types C))
: UU
:= type_in_comp_cat_univ
(parameterized_NNO_carrier
(fiberwise_cat_property_ob N [])).
Definition subobject_classifier_in_comp_cat_univ
(Ω : fiberwise_cat_property
subobject_classifier_local_property
(dfl_full_comp_cat_with_univ_types C))
: UU
:= type_in_comp_cat_univ
(subobject_classifier_object
(fiberwise_cat_property_ob Ω [])).
End TypesInCompCatUniv.
Arguments type_in_comp_cat_univ {C} A.
Arguments type_in_comp_cat_univ_code {C A} a.
Arguments type_in_comp_cat_univ_z_iso {C A} a.
Arguments type_in_comp_cat_univ_z_iso_fiber {C A} a.
(Ω : fiberwise_cat_property
subobject_classifier_local_property
(dfl_full_comp_cat_with_univ_types C))
: UU
:= type_in_comp_cat_univ
(subobject_classifier_object
(fiberwise_cat_property_ob Ω [])).
End TypesInCompCatUniv.
Arguments type_in_comp_cat_univ {C} A.
Arguments type_in_comp_cat_univ_code {C A} a.
Arguments type_in_comp_cat_univ_z_iso {C A} a.
Arguments type_in_comp_cat_univ_z_iso_fiber {C A} a.