Teorema Cantor dalam teori tipe


9

Teorema Cantor menyatakan itu

Untuk setiap himpunan A, himpunan semua himpunan bagian A memiliki kardinalitas yang lebih besar dari A itu sendiri.

Apakah mungkin untuk menyandikan sesuatu seperti ini hanya menggunakan jenis / proposisi tanpa merujuk ke set ZFC? Kode atau pseudocode untuk menyandikan proposisi ini dalam bahasa yang diketik secara dependen akan dihargai.

Jawaban:


9

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 DDddDdD

 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.


Jika saya mengerti dengan benar, dalam definisi Anda tentang cantor, natmemainkan peran "set apa pun A" dan nat -> Propmemainkan peran "set semua subset A". Apa yang akan menjadi implikasi dari penggantian nat -> Propdengan nat -> bool? Saya kira menggunakan Proplebih tepat dalam logika konstruktif, tetapi logika klasik dan teori himpunan sering menganggap tengah dikecualikan, jadi kita harus dapat mengganti Propdengan booldan masih dapat membuktikan teorema, kan?
Paula Vega

1
Ya, mengganti Prop dengan bool berfungsi baik menggunakan peta negasi. Teorema titik tetap Lawvere menunjukkan Anda dapat melakukannya dengan tipe A apa pun yang memiliki peta A -> A tanpa titik tetap, sehingga tipe dengan 3 elemen atau tipe semua bilangan alami juga berfungsi
Max New

@ PaulaVega Max cukup banyak mengatakan itu semua, tapi saya sarankan bermain-main dengan contoh, misalnya menggunakan boolbukan Propdan natdan diag := fun b => negb (f b b), atau hanya mengganti Propdengan natdan menggunakan diag := fun n => (f b b) + 1.
cody
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.