Skip to content

Instantly share code, notes, and snippets.

@pedrominicz
Last active August 15, 2020 16:52
Show Gist options
  • Save pedrominicz/fd162f7e278460ca155c20b28f4d8f11 to your computer and use it in GitHub Desktop.
Save pedrominicz/fd162f7e278460ca155c20b28f4d8f11 to your computer and use it in GitHub Desktop.
Simple proof of Cantor's theorem.
import set_theory.cardinal
-- https://www.youtube.com/watch?v=3ZHacSgSj0Q
variable {α : Type}
lemma not_exists_surj : ¬ ∃ f : α → set α, function.surjective f :=
begin
intro h,
cases h with f hf,
let s := {x | x ∉ f x},
have hs : ∃ x, _ := hf s,
cases hs with x hx,
have : x ∈ s ↔ x ∈ f x, by rw hx,
simp only [set.mem_set_of_eq] at this,
simpa
end
prefix # := cardinal.mk
theorem cantor : #α < #(set α) :=
begin
split,
{ let f : α → set α := λ x, {x},
refine ⟨⟨f, _⟩⟩,
intros x₁ x₂ hx,
simpa using hx },
{ rintro ⟨⟨f, hf⟩⟩,
refine not_exists_surj ⟨function.inv_fun f, _⟩,
exact function.inv_fun_surjective hf }
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment