Martin Escardo 1st May 2020. This is ported from the Midlands Graduate School 2019 lecture notes https://www.cs.bham.ac.uk/~mhe/HoTT-UF.in-Agda-Lecture-Notes/HoTT-UF-Agda.html https://github.com/martinescardo/HoTT-UF.Agda-Lecture-Notes \begin{code} {-# OPTIONS --safe --without-K #-} module MGS.Map-Classifiers where open import MGS.FunExt-from-Univalence public _/_ : (𝓤 : Universe) → 𝓥 ̇ → 𝓤 ⁺ ⊔ 𝓥 ̇ 𝓤 / Y = Σ X ꞉ 𝓤 ̇ , (X → Y) total-fiber-is-domain : {X : 𝓤 ̇ } {Y : 𝓥 ̇ } (f : X → Y) → Σ (fiber f) ≃ X total-fiber-is-domain {𝓤} {𝓥} {X} {Y} f = invertibility-gives-≃ g (h , η , ε) where g : (Σ y ꞉ Y , Σ x ꞉ X , f x = y) → X g (y , x , p) = x h : X → Σ y ꞉ Y , Σ x ꞉ X , f x = y h x = (f x , x , refl (f x)) η : ∀ t → h (g t) = t η (_ , x , refl _) = refl (f x , x , refl _) ε : (x : X) → g (h x) = x ε = refl χ : (Y : 𝓤 ̇ ) → 𝓤 / Y → (Y → 𝓤 ̇ ) χ Y (X , f) = fiber f is-map-classifier : (𝓤 : Universe) → 𝓤 ⁺ ̇ is-map-classifier 𝓤 = (Y : 𝓤 ̇ ) → is-equiv (χ Y) 𝕋 : (Y : 𝓤 ̇ ) → (Y → 𝓤 ̇ ) → 𝓤 / Y 𝕋 Y A = Σ A , pr₁ χη : is-univalent 𝓤 → (Y : 𝓤 ̇ ) (σ : 𝓤 / Y) → 𝕋 Y (χ Y σ) = σ χη ua Y (X , f) = r where e : Σ (fiber f) ≃ X e = total-fiber-is-domain f p : Σ (fiber f) = X p = Eq→Id ua (Σ (fiber f)) X e observation : ⌜ ≃-sym e ⌝ = (λ x → f x , x , refl (f x)) observation = refl _ q = transport (λ - → - → Y) p pr₁ =⟨ transport-map-along-≃ ua e pr₁ ⟩ pr₁ ∘ ⌜ ≃-sym e ⌝ =⟨ refl _ ⟩ f ∎ r : (Σ (fiber f) , pr₁) = (X , f) r = to-Σ-= (p , q) χε : is-univalent 𝓤 → dfunext 𝓤 (𝓤 ⁺) → (Y : 𝓤 ̇ ) (A : Y → 𝓤 ̇ ) → χ Y (𝕋 Y A) = A χε ua fe Y A = fe γ where f : ∀ y → fiber pr₁ y → A y f y ((y , a) , refl p) = a g : ∀ y → A y → fiber pr₁ y g y a = (y , a) , refl y η : ∀ y σ → g y (f y σ) = σ η y ((y , a) , refl p) = refl ((y , a) , refl p) ε : ∀ y a → f y (g y a) = a ε y a = refl a γ : ∀ y → fiber pr₁ y = A y γ y = Eq→Id ua _ _ (invertibility-gives-≃ (f y) (g y , η y , ε y)) universes-are-map-classifiers : is-univalent 𝓤 → dfunext 𝓤 (𝓤 ⁺) → is-map-classifier 𝓤 universes-are-map-classifiers ua fe Y = invertibles-are-equivs (χ Y) (𝕋 Y , χη ua Y , χε ua fe Y) map-classification : is-univalent 𝓤 → dfunext 𝓤 (𝓤 ⁺) → (Y : 𝓤 ̇ ) → 𝓤 / Y ≃ (Y → 𝓤 ̇ ) map-classification ua fe Y = χ Y , universes-are-map-classifiers ua fe Y \end{code}