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}
Added before 2018 and moved here 7th March 2025 from another file
where it was in less general form.
\begin{code}
reflexive-prop-valued-relation-that-implies-equality-gives-set
: {X : đ€ Ì }
â (_R_ : X â X â đ„ Ì )
â ((x y : X) â is-prop (x R y))
â ((x : X) â x R x)
â ((x y : X) â x R y â x ïŒ y)
â is-set X
reflexive-prop-valued-relation-that-implies-equality-gives-set
{đ€} {đ„} {X} _R_ p r e = Îł
where
f : {x y : X} â x ïŒ y â x ïŒ y
f {x} {y} p = e x y (transport (x R_) p (r x))
ec : {x y : X} {l l' : x R y} â e x y l ïŒ e x y l'
ec {x} {y} {l} {l'} = ap (e x y) (p x y l l')
Îș : {x y : X} â wconstant (f {x} {y})
Îș p q = ec
Îł : is-set X
Îł = Id-collapsibles-are-sets (f , Îș)
type-with-prop-valued-refl-antisym-rel-is-set
: {X : đ€ Ì }
â (_â€_ : X â X â đ„ Ì )
â ((x y : X) â is-prop (x †y))
â ((x : X) â x †x)
â ((x y : X) â x †y â y †x â x ïŒ y)
â is-set X
type-with-prop-valued-refl-antisym-rel-is-set _â€_ â€-prop-valued â€-refl â€-anti
= reflexive-prop-valued-relation-that-implies-equality-gives-set
(λ x y â (x †y) Ă (y †x))
(λ x y â Ă-is-prop (â€-prop-valued x y) (â€-prop-valued y x))
(λ x â â€-refl x , â€-refl x)
(λ x y (l , m) â â€-anti x y l m)
\end{code}