Jon Sterling, 25th March 2023.
Proof of Cantor's theorem stated for embeddings from the powerset of A
onto A. This proof uses function extensionality, propositional
extensionality, and propositional resizing. Our argument follows
Taylor's Practical Foundations of Mathematics, via the nLab:
https://ncatlab.org/nlab/show/Cantor%27s+theorem.
This applies Cantor's theorem for surjections, proved in
Various.LawvereFPT.
\begin{code}
{-# OPTIONS --safe --without-K #-}
module Various.CantorTheoremForEmbeddings where
open import MLTT.Spartan
open import UF.Base
open import UF.Embeddings
open import UF.Subsingletons
open import UF.Subsingletons-FunExt
open import UF.FunExt
open import UF.Size
open import Various.LawvereFPT
open import UF.SubtypeClassifier
open retract-version
cantor-theorem-for-embeddings
: FunExt
→ PropExt
→ Propositional-Resizing
→ (A : 𝓤 ̇ )
→ (ϕ : (A → Ω₀) → A)
→ ¬ is-embedding ϕ
cantor-theorem-for-embeddings {𝓤} fe pe psz A ϕ ϕ-emb =
cantor-theorem (fe _ _) A retr retr-has-section
where
retr-large : A → (A → Ω (𝓤₀ ⁺ ⊔ 𝓤))
pr₁ (retr-large a b) = Π U ꞉ (A → Ω₀) , (ϕ U = a → U b holds)
pr₂ (retr-large a b) =
Π-is-prop (fe _ _) λ U →
Π-is-prop (fe _ _) λ _ →
holds-is-prop (U b)
retr : A → (A → Ω₀)
pr₁ (retr a b) =
resize psz
(retr-large a b holds)
(holds-is-prop (retr-large a b))
pr₂ (retr a b) =
resize-is-prop psz
(retr-large a b holds)
(holds-is-prop (retr-large a b))
retr-has-section : has-section· retr
pr₁ retr-has-section U = ϕ U
pr₂ retr-has-section U a =
to-Σ-= (lem·0 , being-prop-is-prop (fe 𝓤₀ 𝓤₀) _ _)
where
fwd : retr-large (ϕ U) a holds → U a holds
fwd p = p U refl
bwd : U a holds → retr-large (ϕ U) a holds
bwd p V q =
transport⁻¹
(λ W → W a holds)
(embeddings-are-lc ϕ ϕ-emb q)
p
lem·0 : resize psz (retr-large (ϕ U) a holds) _ = U a holds
lem·0 =
pe 𝓤₀
(resize-is-prop psz _ _)
(holds-is-prop (U a))
(fwd ∘ from-resize psz _ _)
(to-resize psz _ _ ∘ bwd)
\end{code}