Martin Escardo \begin{code} {-# OPTIONS --safe --without-K #-} module UF.HedbergApplications where open import MLTT.Spartan open import UF.Equiv open import UF.FunExt open import UF.Hedberg open import UF.Sets open import UF.Subsingletons open import UF.Subsingletons-FunExt 𝟘-is-collapsible : collapsible (𝟘 {𝓤}) 𝟘-is-collapsible {𝓤} = id , (λ x y → 𝟘-elim y) pointed-types-are-collapsible : {X : 𝓤 ̇ } → X → collapsible X pointed-types-are-collapsible x = (λ y → x) , (λ y y' → refl) \end{code} Under Curry-Howard, the function type X → 𝟘 is understood as the negation of X when X is viewed as a proposition. But when X is understood as a mathematical object, inhabiting the type X → 𝟘 amounts to showing that X is empty. (In fact, assuming univalence, defined below, the type X → 𝟘 is equivalent to the type X = 𝟘 (written (X → 𝟘) ≃ (X = 𝟘)).) \begin{code} empty-types-are-collapsible : {X : 𝓤 ̇ } → is-empty X → collapsible X empty-types-are-collapsible u = (id , (λ x x' → unique-from-𝟘 (u x))) 𝟘-is-collapsible' : collapsible 𝟘 𝟘-is-collapsible' = empty-types-are-collapsible id \end{code} Added 30 Jul 2023. \begin{code} constant-maps-are-h-isolated : funext 𝓤 𝓥 → {X : 𝓤 ̇ } {Y : 𝓥 ̇ } (y₀ : Y) → is-h-isolated y₀ → is-h-isolated (λ (x : X) → y₀) constant-maps-are-h-isolated fe y₀ y₀-iso {f} = II where I = ((λ x → y₀) = f) ≃⟨ ≃-funext fe (λ x → y₀) f ⟩ (λ x → y₀) ∼ f ■ II : is-prop ((λ x → y₀) = f) II = equiv-to-prop I (Π-is-prop fe (λ _ → y₀-iso)) \end{code}