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
,nat
memainkan peran "set apa pun A" dannat -> Prop
memainkan peran "set semua subset A". Apa yang akan menjadi implikasi dari penggantiannat -> Prop
dengannat -> bool
? Saya kira menggunakanProp
lebih tepat dalam logika konstruktif, tetapi logika klasik dan teori himpunan sering menganggap tengah dikecualikan, jadi kita harus dapat menggantiProp
denganbool
dan masih dapat membuktikan teorema, kan?