Jawaban singkat: ya! Anda tidak perlu banyak mesin untuk mendapatkan bukti untuk melewati.
Satu kehalusan: tampaknya di permukaannya ada penggunaan tengah yang dikecualikan: yang satu membangun himpunan dan angka , dan menunjukkan bahwa atau yang mengarah ke kontradiksi . Tetapi ada sebuah lemma, benar dalam logika intuitionistic, yang menyatakan:d d ∈ D d ∉ DDdd∈Dd∉D
for all statements P,(P⟺¬P)⇒⊥
Ini sudah cukup, bersama dengan bukti biasa. Perhatikan bahwa secara umum "surjection" mungkin memiliki nuansa halus dalam logika konstruktif / intuitionistic (tanpa pilihan) sehingga Anda harus membuat karena dengan "right invertible" sebagai gantinya.
Bukti yang sangat standar dalam Coq (yang karena beberapa alasan saya tidak dapat menemukan online) mungkin sebagai berikut:
Inductive right_invertible {A B:Type}(f : A->B):Prop :=
| inverse: forall g, (forall b:B, f (g b) = b) -> right_invertible f.
Lemma case_to_false : forall P : Prop, (P <-> ~P) -> False.
Proof.
intros P H; apply H.
- apply <- H.
intro p.
apply H; exact p.
- apply <- H; intro p; apply H; exact p.
Qed.
Theorem cantor : forall f : nat -> (nat -> Prop), ~right_invertible f.
Proof.
intros f inv.
destruct inv.
pose (diag := fun n => ~ (f n n)).
apply case_to_false with (diag (g diag)).
split.
- intro I; unfold diag in I.
rewrite H in I. auto.
- intro nI.
unfold diag. rewrite H. auto.
Qed.
Tentu saja, kerangka kerja "benar" untuk memikirkan hal-hal ini, yang dapat dilihat sebagai persyaratan minimal untuk bukti yang harus dilalui, adalah teorema titik tetap Lawvere yang menyatakan teorema tersebut berlaku di setiap Kategori Tertutup Cartesian (jadi dalam khususnya, dalam teori jenis apa pun yang masuk akal).
Andrej Bauer menulis dengan indah tentang teorema ini di kertas. Pada teorema titik-tetap dalam komputabilitas sintetik , dan saya kira mungkin ada beberapa hal menarik untuk ditambahkan ke jawaban ini.
cantor,natmemainkan peran "set apa pun A" dannat -> Propmemainkan peran "set semua subset A". Apa yang akan menjadi implikasi dari penggantiannat -> Propdengannat -> bool? Saya kira menggunakanProplebih tepat dalam logika konstruktif, tetapi logika klasik dan teori himpunan sering menganggap tengah dikecualikan, jadi kita harus dapat menggantiPropdenganbooldan masih dapat membuktikan teorema, kan?