open import 1Lab.HLevel.Retracts open import 1Lab.Type.Sigma open import 1Lab.Univalence open import 1Lab.HLevel open import 1Lab.Equiv open import 1Lab.Path open import 1Lab.Type module 1Lab.HLevel.Universe where
Universes of n-types🔗
A common phenomenon in higher category theory is that the collection of all -categories in a given universe assembles into an -category in the successor universe :
- The collection of all sets (0-categories) is a (1-)-category;
- The collection of all (1-)categories is a 2-category;
- The collection of all 2-categories is a 3-category;
Because of the univalence axiom, the same phenomenon can be observed in homotopy type theory: The subuniverse of consisting of all -types is a -type in . That means: the universe of propositions is a set, the universe of sets is a groupoid, the universe of groupoids is a bigroupoid, and so on.
h-Levels of Equivalences🔗
As warmup, we prove that if and are -types, then so is the type of equivalences . For the case where is a successor, this only depends on the h-level of .
≃-is-hlevel : (n : Nat) → is-hlevel A n → is-hlevel B n → is-hlevel (A ≃ B) n ≃-is-hlevel {A = A} {B = B} zero Ahl Bhl = contr (f , f-eqv) deform where f : A → B f _ = Bhl .centre f-eqv : is-equiv f f-eqv = is-contr→is-equiv Ahl Bhl
For the zero case, we’re asked to give a proof of contractibility
of A ≃ B
. As the centre we pick the canonical function sending to the centre of contraction of , which is an equivalence because it is a map between contractible types.
By the characterisation of paths in Σ and the fact that being an equivalence is a proposition, we get the required family of paths deforming any to our f
.
deform : (g : A ≃ B) → (f , f-eqv) ≡ g deform (g , g-eqv) = Σ-path (λ i x → Bhl .paths (g x) i) (is-equiv-is-prop _ _ _)
As mentioned before, the case for successors does not depend on the proof that has the given h-level. This is because, for , has the same h-level as , which is the same as .
≃-is-hlevel (suc n) _ Bhl = Σ-is-hlevel (suc n) (fun-is-hlevel (suc n) Bhl) λ f → is-prop→is-hlevel-suc (is-equiv-is-prop f)
h-Levels of Paths🔗
Univalence states that the type is equivalent to . Since the latter is of h-level when and are -types, then so is the former:
≡-is-hlevel : (n : Nat) → is-hlevel A n → is-hlevel B n → is-hlevel (A ≡ B) n ≡-is-hlevel n Ahl Bhl = equiv→is-hlevel n ua univalence⁻¹ (≃-is-hlevel n Ahl Bhl)
Universes🔗
We refer to the dependent sum of the family is-hlevel - n as n-Type
:
record n-Type ℓ n : Type (lsuc ℓ) where no-eta-equality constructor _,_ field ∣_∣ : Type ℓ is-tr : is-hlevel ∣_∣ n infix 100 ∣_∣ instance H-Level-n-type : ∀ {k} → H-Level ∣_∣ (n + k) H-Level-n-type = basic-instance n is-tr open n-Type using (∣_∣ ; is-tr) public
Like mentioned in the introduction, the main theorem of this section is that n-Type
is a type of h-level . We take a detour first and establish a characterisation of paths for n-Type: Since is-tr is a proposition, paths in n-Type are determined by paths of the underlying types. By univalence, these correspond to equivalences of the underlying type:
n-ua : {n : Nat} {X Y : n-Type ℓ n} → ∣ X ∣ ≃ ∣ Y ∣ → X ≡ Y n-ua f i .∣_∣ = ua f i n-ua {n = n} {X} {Y} f i .is-tr = is-prop→pathp (λ i → is-hlevel-is-prop {A = ua f i} n) (X .is-tr) (Y .is-tr) i n-univalence : {n : Nat} {X Y : n-Type ℓ n} → (∣ X ∣ ≃ ∣ Y ∣) ≃ (X ≡ Y) n-univalence {n = n} {X} {Y} = n-ua , is-iso→is-equiv isic where inv : ∀ {Y} → X ≡ Y → ∣ X ∣ ≃ ∣ Y ∣ inv p = path→equiv (ap ∣_∣ p) linv : ∀ {Y} → is-left-inverse (inv {Y}) n-ua linv x = Σ-prop-path is-equiv-is-prop (funext λ x → transport-refl _) rinv : ∀ {Y} → is-right-inverse (inv {Y}) n-ua rinv = J (λ y p → n-ua (inv p) ≡ p) path where path : n-ua (inv {X} refl) ≡ refl path i j .∣_∣ = equiv→retraction (univalence {A = ∣ X ∣}) refl i j path i j .is-tr = is-prop→squarep (λ i j → is-hlevel-is-prop {A = equiv→retraction (univalence {A = ∣ X ∣}) refl i j} n) (λ j → X .is-tr) (λ j → n-ua {X = X} {Y = X} (path→equiv refl) j .is-tr) (λ j → X .is-tr) (λ j → X .is-tr) i j isic : is-iso n-ua isic = iso inv rinv (linv {Y})
Since h-levels are closed under equivalence, and we already have an upper bound on the h-level of when is an -type, we know that -Type is a -type:
n-Type-is-hlevel : ∀ n → is-hlevel (n-Type ℓ n) (suc n) n-Type-is-hlevel zero x y = n-ua ((λ _ → y .is-tr .centre) , is-contr→is-equiv (x .is-tr) (y .is-tr)) n-Type-is-hlevel (suc n) x y = is-hlevel≃ (suc n) n-univalence (≃-is-hlevel (suc n) (x .is-tr) (y .is-tr))
For 1-categorical mathematics, the important h-levels are the propositions and the sets, so they get short names:
Set : ∀ ℓ → Type (lsuc ℓ) Set ℓ = n-Type ℓ 2 Prop : ∀ ℓ → Type (lsuc ℓ) Prop ℓ = n-Type ℓ 1