Library UniMath.Bicategories.ComprehensionCat.Strictify
- "The local universes model: An overlooked coherence construction for dependent type theories" by Lumsdaine and Warren
Require Import UniMath.MoreFoundations.All.
Require Import UniMath.CategoryTheory.Core.Prelude.
Require Import UniMath.CategoryTheory.Adjunctions.Core.
Require Import UniMath.CategoryTheory.DisplayedCats.Core.
Require Import UniMath.CategoryTheory.DisplayedCats.Univalence.
Require Import UniMath.CategoryTheory.DisplayedCats.Fiber.
Require Import UniMath.CategoryTheory.DisplayedCats.Functors.
Require Import UniMath.CategoryTheory.DisplayedCats.Fibrations.
Require Import UniMath.CategoryTheory.DisplayedCats.Fiberwise.DependentProducts.
Require Import UniMath.CategoryTheory.Limits.Terminal.
Require Import UniMath.CategoryTheory.Limits.Pullbacks.
Require UniMath.CategoryTheory.ComprehensionCats.CompCats.
Require UniMath.CategoryTheory.ComprehensionCats.CompCatTypeFormers.
Require UniMath.CategoryTheory.ComprehensionCats.CompCatUniverse.
Require UniMath.CategoryTheory.ComprehensionCats.CwfFromCompCatWithUniv.
Require Import UniMath.CategoryTheory.CategoriesWithFamilies.CatsWithFams.
Require Import UniMath.Bicategories.ComprehensionCat.BicatOfCompCat.
Require Import UniMath.Bicategories.ComprehensionCat.CompCatNotations.
Require Import UniMath.Bicategories.ComprehensionCat.DFLCompCatNotations.
Require Import UniMath.Bicategories.ComprehensionCat.DFLCompCat.
Require Import UniMath.Bicategories.ComprehensionCat.SigmaTypeNotations.
Require Import UniMath.Bicategories.ComprehensionCat.PiTypeNotations.
Require Import UniMath.Bicategories.ComprehensionCat.TypeFormers.PiTypes.
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.CompCatTypes.Constant.
Require Import UniMath.Bicategories.ComprehensionCat.Universes.CompCatTypes.Sigma.
Require Import UniMath.Bicategories.ComprehensionCat.Universes.CompCatTypes.Pi.
Local Open Scope cat.
Local Open Scope comp_cat.
Require Import UniMath.CategoryTheory.Core.Prelude.
Require Import UniMath.CategoryTheory.Adjunctions.Core.
Require Import UniMath.CategoryTheory.DisplayedCats.Core.
Require Import UniMath.CategoryTheory.DisplayedCats.Univalence.
Require Import UniMath.CategoryTheory.DisplayedCats.Fiber.
Require Import UniMath.CategoryTheory.DisplayedCats.Functors.
Require Import UniMath.CategoryTheory.DisplayedCats.Fibrations.
Require Import UniMath.CategoryTheory.DisplayedCats.Fiberwise.DependentProducts.
Require Import UniMath.CategoryTheory.Limits.Terminal.
Require Import UniMath.CategoryTheory.Limits.Pullbacks.
Require UniMath.CategoryTheory.ComprehensionCats.CompCats.
Require UniMath.CategoryTheory.ComprehensionCats.CompCatTypeFormers.
Require UniMath.CategoryTheory.ComprehensionCats.CompCatUniverse.
Require UniMath.CategoryTheory.ComprehensionCats.CwfFromCompCatWithUniv.
Require Import UniMath.CategoryTheory.CategoriesWithFamilies.CatsWithFams.
Require Import UniMath.Bicategories.ComprehensionCat.BicatOfCompCat.
Require Import UniMath.Bicategories.ComprehensionCat.CompCatNotations.
Require Import UniMath.Bicategories.ComprehensionCat.DFLCompCatNotations.
Require Import UniMath.Bicategories.ComprehensionCat.DFLCompCat.
Require Import UniMath.Bicategories.ComprehensionCat.SigmaTypeNotations.
Require Import UniMath.Bicategories.ComprehensionCat.PiTypeNotations.
Require Import UniMath.Bicategories.ComprehensionCat.TypeFormers.PiTypes.
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.CompCatTypes.Constant.
Require Import UniMath.Bicategories.ComprehensionCat.Universes.CompCatTypes.Sigma.
Require Import UniMath.Bicategories.ComprehensionCat.Universes.CompCatTypes.Pi.
Local Open Scope cat.
Local Open Scope comp_cat.
1. From DFL comprehension categories to comprehension categories
1.1. The basic construction
Definition comp_cat_to_cat_comp_cat
(C : comp_cat)
: CompCats.comp_cat
:= _ ,, pr12 (comp_cat_to_comprehension_cat_structure C).
Definition comp_cat_to_cat_comp_cat_terminal
(C : comp_cat)
: CompCatUniverse.comp_cat_with_terminal
:= comp_cat_to_cat_comp_cat C ,, [].
(C : comp_cat)
: CompCats.comp_cat
:= _ ,, pr12 (comp_cat_to_comprehension_cat_structure C).
Definition comp_cat_to_cat_comp_cat_terminal
(C : comp_cat)
: CompCatUniverse.comp_cat_with_terminal
:= comp_cat_to_cat_comp_cat C ,, [].
Proposition comp_cat_to_cat_comp_cat_coerce
{C : comp_cat}
{Γ : C}
{A B : ty Γ}
(f : A <: B)
(t : tm Γ A)
: CompCats.coerce_comp_cat_tm (C := comp_cat_to_cat_comp_cat C) f t = t ↑ f.
Proof.
apply idpath.
Qed.
Proposition comp_cat_to_cat_comp_cat_subst
{C : comp_cat}
{Γ Δ : C}
(s : Γ --> Δ)
{A : ty Δ}
(t : tm Δ A)
: CompCats.comp_cat_subst_tm (C := comp_cat_to_cat_comp_cat C) s t = t [[ s ]]tm.
Proof.
apply idpath.
Qed.
Proposition comp_cat_to_cat_comp_cat_reindex
{C : comp_cat}
{Γ Δ : C}
(s : Γ --> Δ)
{A B : ty Δ}
(f : z_iso (C := fiber_category _ _) A B)
: pr1 (CompCats.comp_cat_reindex_iso (C := comp_cat_to_cat_comp_cat C) s f)
=
coerce_subst_ty s (pr1 f).
Proof.
apply idpath.
Qed.
{C : comp_cat}
{Γ : C}
{A B : ty Γ}
(f : A <: B)
(t : tm Γ A)
: CompCats.coerce_comp_cat_tm (C := comp_cat_to_cat_comp_cat C) f t = t ↑ f.
Proof.
apply idpath.
Qed.
Proposition comp_cat_to_cat_comp_cat_subst
{C : comp_cat}
{Γ Δ : C}
(s : Γ --> Δ)
{A : ty Δ}
(t : tm Δ A)
: CompCats.comp_cat_subst_tm (C := comp_cat_to_cat_comp_cat C) s t = t [[ s ]]tm.
Proof.
apply idpath.
Qed.
Proposition comp_cat_to_cat_comp_cat_reindex
{C : comp_cat}
{Γ Δ : C}
(s : Γ --> Δ)
{A B : ty Δ}
(f : z_iso (C := fiber_category _ _) A B)
: pr1 (CompCats.comp_cat_reindex_iso (C := comp_cat_to_cat_comp_cat C) s f)
=
coerce_subst_ty s (pr1 f).
Proof.
apply idpath.
Qed.
1.3. Type formers
Definition comp_cat_to_comp_cat_unit
(C : dfl_full_comp_cat)
: CompCatTypeFormers.comp_cat_unit (comp_cat_to_cat_comp_cat C).
Proof.
simple refine (_ ,, _ ,, _ ,, _).
- exact (λ Γ, dfl_full_comp_cat_unit (C := C) Γ).
- exact (λ Γ, dfl_unit_tt (C := C) Γ).
- exact (λ Γ t, dfl_unit_unique (C := C) t).
- exact (λ Γ Δ s, dfl_comp_cat_unit_subst (C := C) s).
Defined.
Definition comp_cat_to_comp_cat_sigma
(C : dfl_full_comp_cat)
: CompCatTypeFormers.comp_cat_sigma (comp_cat_to_cat_comp_cat C).
Proof.
simple refine (_ ,, _ ,, _ ,, _ ,, _ ,, _ ,, _ ,, _).
- exact (λ Γ A B, dfl_sigma_type (C := C) A B).
- exact (λ Γ A B, comp_cat_dep_sum_pair (C := C) A B).
- intros Γ A B.
exact (comp_cat_dep_sum_pair_comm (C := C) A B).
- exact (λ Γ A B, comp_cat_dep_sum_pr (C := C) A B).
- intros Γ A B.
exact (comp_cat_dep_sum_beta (C := C) A B).
- intros Γ A B.
exact (comp_cat_dep_sum_eta (C := C) A B).
- exact (λ Γ Δ s A B, z_iso_inv (comp_cat_dep_sum_subst (C := C) A B s)).
- intros Γ Δ s A B.
exact (comp_cat_dep_sum_pair_subst (C := C) A B s).
Defined.
Definition comp_cat_to_comp_cat_pi
(C : dfl_full_comp_cat)
(P : comp_cat_dependent_prod C)
: CompCatTypeFormers.comp_cat_pi (comp_cat_to_cat_comp_cat C).
Proof.
simple refine (_ ,, _ ,, _ ,, _ ,, _ ,, _ ,, _).
- exact (λ Γ A B, dep_prod_cc P A B).
- exact (λ Γ A B t, comp_cat_pi_lam P t).
- exact (λ Γ A B f, comp_cat_pi_app P f).
- intros Γ A B f.
exact (comp_cat_pi_beta P f).
- intros Γ A B t.
exact (comp_cat_pi_eta P t).
- exact (λ Γ Δ s A B, comp_cat_pi_subst P A B s).
- intros Γ Δ s A B t.
exact (!(comp_cat_pi_lam_subst P s t)).
Defined.
(C : dfl_full_comp_cat)
: CompCatTypeFormers.comp_cat_unit (comp_cat_to_cat_comp_cat C).
Proof.
simple refine (_ ,, _ ,, _ ,, _).
- exact (λ Γ, dfl_full_comp_cat_unit (C := C) Γ).
- exact (λ Γ, dfl_unit_tt (C := C) Γ).
- exact (λ Γ t, dfl_unit_unique (C := C) t).
- exact (λ Γ Δ s, dfl_comp_cat_unit_subst (C := C) s).
Defined.
Definition comp_cat_to_comp_cat_sigma
(C : dfl_full_comp_cat)
: CompCatTypeFormers.comp_cat_sigma (comp_cat_to_cat_comp_cat C).
Proof.
simple refine (_ ,, _ ,, _ ,, _ ,, _ ,, _ ,, _ ,, _).
- exact (λ Γ A B, dfl_sigma_type (C := C) A B).
- exact (λ Γ A B, comp_cat_dep_sum_pair (C := C) A B).
- intros Γ A B.
exact (comp_cat_dep_sum_pair_comm (C := C) A B).
- exact (λ Γ A B, comp_cat_dep_sum_pr (C := C) A B).
- intros Γ A B.
exact (comp_cat_dep_sum_beta (C := C) A B).
- intros Γ A B.
exact (comp_cat_dep_sum_eta (C := C) A B).
- exact (λ Γ Δ s A B, z_iso_inv (comp_cat_dep_sum_subst (C := C) A B s)).
- intros Γ Δ s A B.
exact (comp_cat_dep_sum_pair_subst (C := C) A B s).
Defined.
Definition comp_cat_to_comp_cat_pi
(C : dfl_full_comp_cat)
(P : comp_cat_dependent_prod C)
: CompCatTypeFormers.comp_cat_pi (comp_cat_to_cat_comp_cat C).
Proof.
simple refine (_ ,, _ ,, _ ,, _ ,, _ ,, _ ,, _).
- exact (λ Γ A B, dep_prod_cc P A B).
- exact (λ Γ A B t, comp_cat_pi_lam P t).
- exact (λ Γ A B f, comp_cat_pi_app P f).
- intros Γ A B f.
exact (comp_cat_pi_beta P f).
- intros Γ A B t.
exact (comp_cat_pi_eta P t).
- exact (λ Γ Δ s A B, comp_cat_pi_subst P A B s).
- intros Γ Δ s A B t.
exact (!(comp_cat_pi_lam_subst P s t)).
Defined.
Definition dfl_comp_cat_univ_to_comp_cat_universe_data
(C : dfl_full_comp_cat_with_univ)
: CompCatUniverse.comp_cat_universe_data (comp_cat_to_cat_comp_cat_terminal C).
Proof.
simple refine (_ ,, _ ,, _).
- exact (dfl_full_comp_cat_univ_ob C).
- exact (λ Γ t, comp_cat_univ_el (dfl_full_comp_cat_el C) t).
- exact (λ Γ Δ s t, comp_cat_univ_el_stable (dfl_full_comp_cat_el C) s t).
Defined.
Proposition dfl_comp_cat_univ_to_comp_cat_universe_on_eq
{C : dfl_full_comp_cat_with_univ}
{Γ : C}
{t₁ t₂ : tm Γ (dfl_full_comp_cat_univ Γ)}
(p : t₁ = t₂)
: CompCatUniverse.el_map (dfl_comp_cat_univ_to_comp_cat_universe_data C) _ p
=
comp_cat_el_map_on_eq (dfl_full_comp_cat_el C) p.
Proof.
induction p.
apply idpath.
Qed.
Proposition dfl_comp_cat_univ_to_comp_cat_universe_coherent
(C : dfl_full_comp_cat_with_univ)
: CompCatUniverse.comp_cat_universe_coherent
(dfl_comp_cat_univ_to_comp_cat_universe_data C).
Proof.
split.
- intros Γ t.
rewrite dfl_comp_cat_univ_to_comp_cat_universe_on_eq.
refine (!_).
etrans.
{
apply maponpaths_2.
apply maponpaths.
exact (comp_cat_univ_el_stable_id_coh_alt (dfl_full_comp_cat_el C) t).
}
rewrite !assoc.
etrans.
{
apply maponpaths_2.
etrans.
{
apply maponpaths_2.
exact (z_iso_inv_after_z_iso (id_subst_ty_iso _)).
}
exact (id_left _).
}
etrans.
{
refine (!_).
apply (comp_cat_el_map_on_concat (dfl_full_comp_cat_el C)).
}
apply (comp_cat_el_map_on_idpath (dfl_full_comp_cat_el C)).
- intros Γ₁ Γ₂ Γ₃ s₁ s₂ t.
rewrite dfl_comp_cat_univ_to_comp_cat_universe_on_eq.
refine (!_).
etrans.
{
apply maponpaths_2.
exact (comp_cat_univ_el_stable_comp_coh (dfl_full_comp_cat_el C) s₂ s₁ t).
}
rewrite !assoc'.
etrans.
{
do 2 apply maponpaths.
refine (!_).
apply (comp_cat_el_map_on_concat (dfl_full_comp_cat_el C)).
}
refine (!_).
etrans.
{
apply maponpaths_2.
exact (comp_cat_to_cat_comp_cat_reindex _ _).
}
apply maponpaths.
refine (!(id_right _) @ _).
apply maponpaths.
refine (!_).
apply (comp_cat_el_map_on_idpath (dfl_full_comp_cat_el C)).
Qed.
Definition dfl_comp_cat_univ_to_comp_cat_universe
(C : dfl_full_comp_cat_with_univ)
: CompCatUniverse.comp_cat_universe (comp_cat_to_cat_comp_cat_terminal C).
Proof.
simple refine (_ ,, _).
- exact (dfl_comp_cat_univ_to_comp_cat_universe_data C).
- exact (dfl_comp_cat_univ_to_comp_cat_universe_coherent C).
Defined.
Definition dfl_comp_cat_univ_to_comp_cat_with_universe
(C : dfl_full_comp_cat_with_univ)
: CompCatUniverse.comp_cat_with_universe
:= _ ,,dfl_comp_cat_univ_to_comp_cat_universe C.
Proposition dfl_comp_cat_univ_to_comp_cat_with_universe_sub_univ_iso
{C : dfl_full_comp_cat_with_univ}
{Γ Δ : C}
(s : Γ --> Δ)
: CompCats.coe_from_z_iso
(CompCatUniverse.sub_comp_cat_univ_iso
(C := comp_cat_to_cat_comp_cat_terminal C)
(dfl_full_comp_cat_univ_ob C)
s)
=
sub_dfl_comp_cat_univ s.
Proof.
apply idpath.
Qed.
(C : dfl_full_comp_cat_with_univ)
: CompCatUniverse.comp_cat_universe_data (comp_cat_to_cat_comp_cat_terminal C).
Proof.
simple refine (_ ,, _ ,, _).
- exact (dfl_full_comp_cat_univ_ob C).
- exact (λ Γ t, comp_cat_univ_el (dfl_full_comp_cat_el C) t).
- exact (λ Γ Δ s t, comp_cat_univ_el_stable (dfl_full_comp_cat_el C) s t).
Defined.
Proposition dfl_comp_cat_univ_to_comp_cat_universe_on_eq
{C : dfl_full_comp_cat_with_univ}
{Γ : C}
{t₁ t₂ : tm Γ (dfl_full_comp_cat_univ Γ)}
(p : t₁ = t₂)
: CompCatUniverse.el_map (dfl_comp_cat_univ_to_comp_cat_universe_data C) _ p
=
comp_cat_el_map_on_eq (dfl_full_comp_cat_el C) p.
Proof.
induction p.
apply idpath.
Qed.
Proposition dfl_comp_cat_univ_to_comp_cat_universe_coherent
(C : dfl_full_comp_cat_with_univ)
: CompCatUniverse.comp_cat_universe_coherent
(dfl_comp_cat_univ_to_comp_cat_universe_data C).
Proof.
split.
- intros Γ t.
rewrite dfl_comp_cat_univ_to_comp_cat_universe_on_eq.
refine (!_).
etrans.
{
apply maponpaths_2.
apply maponpaths.
exact (comp_cat_univ_el_stable_id_coh_alt (dfl_full_comp_cat_el C) t).
}
rewrite !assoc.
etrans.
{
apply maponpaths_2.
etrans.
{
apply maponpaths_2.
exact (z_iso_inv_after_z_iso (id_subst_ty_iso _)).
}
exact (id_left _).
}
etrans.
{
refine (!_).
apply (comp_cat_el_map_on_concat (dfl_full_comp_cat_el C)).
}
apply (comp_cat_el_map_on_idpath (dfl_full_comp_cat_el C)).
- intros Γ₁ Γ₂ Γ₃ s₁ s₂ t.
rewrite dfl_comp_cat_univ_to_comp_cat_universe_on_eq.
refine (!_).
etrans.
{
apply maponpaths_2.
exact (comp_cat_univ_el_stable_comp_coh (dfl_full_comp_cat_el C) s₂ s₁ t).
}
rewrite !assoc'.
etrans.
{
do 2 apply maponpaths.
refine (!_).
apply (comp_cat_el_map_on_concat (dfl_full_comp_cat_el C)).
}
refine (!_).
etrans.
{
apply maponpaths_2.
exact (comp_cat_to_cat_comp_cat_reindex _ _).
}
apply maponpaths.
refine (!(id_right _) @ _).
apply maponpaths.
refine (!_).
apply (comp_cat_el_map_on_idpath (dfl_full_comp_cat_el C)).
Qed.
Definition dfl_comp_cat_univ_to_comp_cat_universe
(C : dfl_full_comp_cat_with_univ)
: CompCatUniverse.comp_cat_universe (comp_cat_to_cat_comp_cat_terminal C).
Proof.
simple refine (_ ,, _).
- exact (dfl_comp_cat_univ_to_comp_cat_universe_data C).
- exact (dfl_comp_cat_univ_to_comp_cat_universe_coherent C).
Defined.
Definition dfl_comp_cat_univ_to_comp_cat_with_universe
(C : dfl_full_comp_cat_with_univ)
: CompCatUniverse.comp_cat_with_universe
:= _ ,,dfl_comp_cat_univ_to_comp_cat_universe C.
Proposition dfl_comp_cat_univ_to_comp_cat_with_universe_sub_univ_iso
{C : dfl_full_comp_cat_with_univ}
{Γ Δ : C}
(s : Γ --> Δ)
: CompCats.coe_from_z_iso
(CompCatUniverse.sub_comp_cat_univ_iso
(C := comp_cat_to_cat_comp_cat_terminal C)
(dfl_full_comp_cat_univ_ob C)
s)
=
sub_dfl_comp_cat_univ s.
Proof.
apply idpath.
Qed.
Definition dfl_comp_cat_univ_to_comp_cat_universe_closed_unit
(C : dfl_full_comp_cat_with_univ)
(un : unit_in_comp_cat_univ C)
: CompCatUniverse.comp_cat_universe_closed_unit
(dfl_comp_cat_univ_to_comp_cat_with_universe C)
(comp_cat_to_comp_cat_unit _).
Proof.
simple refine (_ ,, _).
- exact (type_in_comp_cat_univ_code un).
- exact (type_in_comp_cat_univ_z_iso_fiber un).
Defined.
(C : dfl_full_comp_cat_with_univ)
(un : unit_in_comp_cat_univ C)
: CompCatUniverse.comp_cat_universe_closed_unit
(dfl_comp_cat_univ_to_comp_cat_with_universe C)
(comp_cat_to_comp_cat_unit _).
Proof.
simple refine (_ ,, _).
- exact (type_in_comp_cat_univ_code un).
- exact (type_in_comp_cat_univ_z_iso_fiber un).
Defined.
2.3. Closure under ∑-types
Section ClosedSigma.
Context (C : dfl_full_comp_cat_with_univ)
(sig : sigma_in_comp_cat_univ C)
(p : sigma_in_comp_cat_univ_code_is_stable C sig).
Definition dfl_comp_cat_univ_to_comp_cat_universe_closed_sigma_form
: CompCatUniverse.univ_sigma_form
(dfl_comp_cat_univ_to_comp_cat_with_universe C)
:= λ Γ a b, sigma_in_comp_cat_univ_code sig a b.
Definition dfl_comp_cat_univ_to_comp_cat_universe_closed_sigma_iso
: CompCatUniverse.univ_sigma_el_iso
(dfl_comp_cat_univ_to_comp_cat_with_universe C)
(comp_cat_to_comp_cat_sigma (pr1 C))
dfl_comp_cat_univ_to_comp_cat_universe_closed_sigma_form
:= λ Γ a b, sigma_in_comp_cat_univ_z_iso_fiber sig a b.
Definition dfl_comp_cat_univ_to_comp_cat_universe_closed_sigma_law
: CompCatUniverse.univ_sigma_subst_law
(dfl_comp_cat_univ_to_comp_cat_with_universe C)
dfl_comp_cat_univ_to_comp_cat_universe_closed_sigma_form.
Proof.
intros Γ Δ s a b.
refine (p _ _ s a b @ _).
apply maponpaths.
refine (!_).
etrans.
{
apply comp_cat_to_cat_comp_cat_coerce.
}
etrans.
{
apply maponpaths.
apply comp_cat_to_cat_comp_cat_subst.
}
refine (maponpaths (λ z, _ ↑ z) _).
exact (dfl_comp_cat_univ_to_comp_cat_with_universe_sub_univ_iso _).
Qed.
Definition dfl_comp_cat_univ_to_comp_cat_universe_closed_sigma_code
: CompCatUniverse.comp_cat_universe_closed_sigma
(dfl_comp_cat_univ_to_comp_cat_with_universe C)
(comp_cat_to_comp_cat_sigma _).
Proof.
simple refine (_ ,, _ ,, _).
- exact dfl_comp_cat_univ_to_comp_cat_universe_closed_sigma_form.
- exact dfl_comp_cat_univ_to_comp_cat_universe_closed_sigma_iso.
- exact dfl_comp_cat_univ_to_comp_cat_universe_closed_sigma_law.
Defined.
End ClosedSigma.
Definition dfl_comp_cat_univ_to_comp_cat_universe_closed_sigma
(C : dfl_full_comp_cat_with_univ)
(sig : stable_sigma_in_comp_cat_univ C)
: CompCatUniverse.comp_cat_universe_closed_sigma
(dfl_comp_cat_univ_to_comp_cat_with_universe C)
(comp_cat_to_comp_cat_sigma _).
Proof.
refine (dfl_comp_cat_univ_to_comp_cat_universe_closed_sigma_code C sig _).
intros Γ Δ s a b.
exact (stable_sigma_in_comp_cat_univ_code_stable sig s a b).
Defined.
Context (C : dfl_full_comp_cat_with_univ)
(sig : sigma_in_comp_cat_univ C)
(p : sigma_in_comp_cat_univ_code_is_stable C sig).
Definition dfl_comp_cat_univ_to_comp_cat_universe_closed_sigma_form
: CompCatUniverse.univ_sigma_form
(dfl_comp_cat_univ_to_comp_cat_with_universe C)
:= λ Γ a b, sigma_in_comp_cat_univ_code sig a b.
Definition dfl_comp_cat_univ_to_comp_cat_universe_closed_sigma_iso
: CompCatUniverse.univ_sigma_el_iso
(dfl_comp_cat_univ_to_comp_cat_with_universe C)
(comp_cat_to_comp_cat_sigma (pr1 C))
dfl_comp_cat_univ_to_comp_cat_universe_closed_sigma_form
:= λ Γ a b, sigma_in_comp_cat_univ_z_iso_fiber sig a b.
Definition dfl_comp_cat_univ_to_comp_cat_universe_closed_sigma_law
: CompCatUniverse.univ_sigma_subst_law
(dfl_comp_cat_univ_to_comp_cat_with_universe C)
dfl_comp_cat_univ_to_comp_cat_universe_closed_sigma_form.
Proof.
intros Γ Δ s a b.
refine (p _ _ s a b @ _).
apply maponpaths.
refine (!_).
etrans.
{
apply comp_cat_to_cat_comp_cat_coerce.
}
etrans.
{
apply maponpaths.
apply comp_cat_to_cat_comp_cat_subst.
}
refine (maponpaths (λ z, _ ↑ z) _).
exact (dfl_comp_cat_univ_to_comp_cat_with_universe_sub_univ_iso _).
Qed.
Definition dfl_comp_cat_univ_to_comp_cat_universe_closed_sigma_code
: CompCatUniverse.comp_cat_universe_closed_sigma
(dfl_comp_cat_univ_to_comp_cat_with_universe C)
(comp_cat_to_comp_cat_sigma _).
Proof.
simple refine (_ ,, _ ,, _).
- exact dfl_comp_cat_univ_to_comp_cat_universe_closed_sigma_form.
- exact dfl_comp_cat_univ_to_comp_cat_universe_closed_sigma_iso.
- exact dfl_comp_cat_univ_to_comp_cat_universe_closed_sigma_law.
Defined.
End ClosedSigma.
Definition dfl_comp_cat_univ_to_comp_cat_universe_closed_sigma
(C : dfl_full_comp_cat_with_univ)
(sig : stable_sigma_in_comp_cat_univ C)
: CompCatUniverse.comp_cat_universe_closed_sigma
(dfl_comp_cat_univ_to_comp_cat_with_universe C)
(comp_cat_to_comp_cat_sigma _).
Proof.
refine (dfl_comp_cat_univ_to_comp_cat_universe_closed_sigma_code C sig _).
intros Γ Δ s a b.
exact (stable_sigma_in_comp_cat_univ_code_stable sig s a b).
Defined.
Section ClosedPi.
Context (C : dfl_full_comp_cat_with_univ)
(P : comp_cat_dependent_prod C)
(pi : stable_pi_in_comp_cat_univ C P).
Definition dfl_comp_cat_univ_to_comp_cat_universe_closed_pi_form
: CompCatUniverse.univ_pi_form
(dfl_comp_cat_univ_to_comp_cat_with_universe C)
:= λ Γ a b, pi_in_comp_cat_univ_code pi a b.
Definition dfl_comp_cat_univ_to_comp_cat_universe_closed_pi_iso
: CompCatUniverse.univ_pi_el_iso
(dfl_comp_cat_univ_to_comp_cat_with_universe C)
(comp_cat_to_comp_cat_pi (pr1 C) P)
dfl_comp_cat_univ_to_comp_cat_universe_closed_pi_form
:= λ Γ a b, pi_in_comp_cat_univ_z_iso_fiber pi a b.
Definition dfl_comp_cat_univ_to_comp_cat_universe_closed_pi_law
: CompCatUniverse.univ_pi_subst_law
(dfl_comp_cat_univ_to_comp_cat_with_universe C)
dfl_comp_cat_univ_to_comp_cat_universe_closed_pi_form.
Proof.
intros Γ Δ s a b.
refine (stable_pi_in_comp_cat_univ_code_stable pi s a b @ _).
apply maponpaths.
refine (!_).
etrans.
{
apply comp_cat_to_cat_comp_cat_coerce.
}
etrans.
{
apply maponpaths.
apply comp_cat_to_cat_comp_cat_subst.
}
refine (maponpaths (λ z, _ ↑ z) _).
exact (dfl_comp_cat_univ_to_comp_cat_with_universe_sub_univ_iso _).
Qed.
Definition dfl_comp_cat_univ_to_comp_cat_universe_closed_pi
: CompCatUniverse.comp_cat_universe_closed_pi
(dfl_comp_cat_univ_to_comp_cat_with_universe C)
(comp_cat_to_comp_cat_pi _ P).
Proof.
simple refine (_ ,, _ ,, _).
- exact dfl_comp_cat_univ_to_comp_cat_universe_closed_pi_form.
- exact dfl_comp_cat_univ_to_comp_cat_universe_closed_pi_iso.
- exact dfl_comp_cat_univ_to_comp_cat_universe_closed_pi_law.
Defined.
End ClosedPi.
Context (C : dfl_full_comp_cat_with_univ)
(P : comp_cat_dependent_prod C)
(pi : stable_pi_in_comp_cat_univ C P).
Definition dfl_comp_cat_univ_to_comp_cat_universe_closed_pi_form
: CompCatUniverse.univ_pi_form
(dfl_comp_cat_univ_to_comp_cat_with_universe C)
:= λ Γ a b, pi_in_comp_cat_univ_code pi a b.
Definition dfl_comp_cat_univ_to_comp_cat_universe_closed_pi_iso
: CompCatUniverse.univ_pi_el_iso
(dfl_comp_cat_univ_to_comp_cat_with_universe C)
(comp_cat_to_comp_cat_pi (pr1 C) P)
dfl_comp_cat_univ_to_comp_cat_universe_closed_pi_form
:= λ Γ a b, pi_in_comp_cat_univ_z_iso_fiber pi a b.
Definition dfl_comp_cat_univ_to_comp_cat_universe_closed_pi_law
: CompCatUniverse.univ_pi_subst_law
(dfl_comp_cat_univ_to_comp_cat_with_universe C)
dfl_comp_cat_univ_to_comp_cat_universe_closed_pi_form.
Proof.
intros Γ Δ s a b.
refine (stable_pi_in_comp_cat_univ_code_stable pi s a b @ _).
apply maponpaths.
refine (!_).
etrans.
{
apply comp_cat_to_cat_comp_cat_coerce.
}
etrans.
{
apply maponpaths.
apply comp_cat_to_cat_comp_cat_subst.
}
refine (maponpaths (λ z, _ ↑ z) _).
exact (dfl_comp_cat_univ_to_comp_cat_with_universe_sub_univ_iso _).
Qed.
Definition dfl_comp_cat_univ_to_comp_cat_universe_closed_pi
: CompCatUniverse.comp_cat_universe_closed_pi
(dfl_comp_cat_univ_to_comp_cat_with_universe C)
(comp_cat_to_comp_cat_pi _ P).
Proof.
simple refine (_ ,, _ ,, _).
- exact dfl_comp_cat_univ_to_comp_cat_universe_closed_pi_form.
- exact dfl_comp_cat_univ_to_comp_cat_universe_closed_pi_iso.
- exact dfl_comp_cat_univ_to_comp_cat_universe_closed_pi_law.
Defined.
End ClosedPi.
Definition strictify_dfl_full_comp_cat_univ_code
(C : dfl_full_comp_cat_with_univ)
(un : unit_in_comp_cat_univ C)
(sig : sigma_in_comp_cat_univ C)
(p : sigma_in_comp_cat_univ_code_is_stable C sig)
: cwf
:= CwfFromCompCatWithUniv.cwf_from_comp_cat_with_u
_
(dfl_comp_cat_univ_to_comp_cat_universe_closed_sigma_code C sig p)
_
(dfl_comp_cat_univ_to_comp_cat_universe_closed_unit C un).
Definition strictify_dfl_full_comp_cat_univ
(C : dfl_full_comp_cat_with_univ)
(un : unit_in_comp_cat_univ C)
(sig : stable_sigma_in_comp_cat_univ C)
: cwf
:= CwfFromCompCatWithUniv.cwf_from_comp_cat_with_u
_
(dfl_comp_cat_univ_to_comp_cat_universe_closed_sigma C sig)
_
(dfl_comp_cat_univ_to_comp_cat_universe_closed_unit C un).
(C : dfl_full_comp_cat_with_univ)
(un : unit_in_comp_cat_univ C)
(sig : sigma_in_comp_cat_univ C)
(p : sigma_in_comp_cat_univ_code_is_stable C sig)
: cwf
:= CwfFromCompCatWithUniv.cwf_from_comp_cat_with_u
_
(dfl_comp_cat_univ_to_comp_cat_universe_closed_sigma_code C sig p)
_
(dfl_comp_cat_univ_to_comp_cat_universe_closed_unit C un).
Definition strictify_dfl_full_comp_cat_univ
(C : dfl_full_comp_cat_with_univ)
(un : unit_in_comp_cat_univ C)
(sig : stable_sigma_in_comp_cat_univ C)
: cwf
:= CwfFromCompCatWithUniv.cwf_from_comp_cat_with_u
_
(dfl_comp_cat_univ_to_comp_cat_universe_closed_sigma C sig)
_
(dfl_comp_cat_univ_to_comp_cat_universe_closed_unit C un).
We check that the contexts, types, and terms in the strictification are what we expect.
Section SanityChecks.
Context (C : dfl_full_comp_cat_with_univ)
(un : unit_in_comp_cat_univ C)
(sig : stable_sigma_in_comp_cat_univ C).
Let CC : cwf := strictify_dfl_full_comp_cat_univ C un sig.
Context (C : dfl_full_comp_cat_with_univ)
(un : unit_in_comp_cat_univ C)
(sig : stable_sigma_in_comp_cat_univ C).
Let CC : cwf := strictify_dfl_full_comp_cat_univ C un sig.
Contexts
Types
Goal ∏ (Γ : tm [] (dfl_full_comp_cat_univ (C := C) [])),
(cwf_ty (C := CC) Γ : UU)
=
tm ([] & comp_cat_univ_el (dfl_full_comp_cat_el C) Γ) (dfl_full_comp_cat_univ _).
Proof.
intro Γ.
apply idpath.
Qed.
(cwf_ty (C := CC) Γ : UU)
=
tm ([] & comp_cat_univ_el (dfl_full_comp_cat_el C) Γ) (dfl_full_comp_cat_univ _).
Proof.
intro Γ.
apply idpath.
Qed.
Terms