Теорема Кантора в теорії типів


9

Теорема Кантора стверджує, що

Для будь-якого множини A множина всіх підмножин A має суворо більшу кардинальність, ніж сама А.

Чи можливо кодувати щось подібне, використовуючи лише типи / пропозиції, не посилаючись на набори ZFC? Код або псевдокод для кодування цієї пропозиції на мові, що залежить від тиску, буде вдячний.

Відповіді:


9

Коротка відповідь: так! Вам не потрібно стільки техніки, щоб отримати доказ, щоб пройти.

Одна тонкість: на обличчі здається, що існує використання виключеної середини: одна будує набір D і число d, і показує, що або dD або dDщо призводить до суперечності. Але є лема, справжня в інтуїтивістській логіці, яка говорить:

 for all statements P,(P¬P)

Цього достатньо, поряд із звичайним доказом. Зауважте, що загалом "викид" може мати певний нюанс у конструктивній / інтуїтивістській логіці (без вибору), тому вам доведеться замість цього "правильно перевернутий".

Дуже стандартний доказ у Coq (який я чомусь не зміг знайти в Інтернеті) може бути наступним:

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.

Звичайно, "правильна" рамка, в якій слід думати про ці питання, які можна розглядати як мінімальні вимоги до цього доказу, - це теорема фіксованої точки Ловевера, яка стверджує, що ця теорема міститься у кожній декартовій закритій категорії (наприклад, у зокрема, в будь-якій теорії розумного типу).

Андрей Бауер прекрасно пише про цю теорему в статті Про теореми з фіксованою точкою синтетичної обчислюваності , і я підозрюю, що до цієї відповіді можуть бути ще деякі цікаві речі.


Якщо я правильно розумію, у вашому визначенні cantor, natграє роль «будь-якого безлічі А» і nat -> Propграє роль «безлічі всіх підмножин А». Які будуть наслідки заміни nat -> Propз nat -> bool? Я думаю , використовуючи Propбільш доречно в конструктивній логіці, але класична логіка і теорія множин часто припускають виключеного третього, так що ми повинні бути в змозі замінити Propз boolі все ще бути в змозі довести теорему, вірно?
Паула Вега

1
Так, заміна Prop на bool працює чудово за допомогою карти заперечення. Теорема з фіксованою точкою Ловевера показує, що ви можете це робити з будь-яким типом A, на якому є карта A -> A без фіксованих точок, тому також працює тип з 3 елементами або тип усіх натуральних чисел
Макс Новий

@PaulaVega Макс дуже багато говорить , що все це, але я рекомендую грати навколо з прикладом, наприклад , використовуючи boolзамість Propі natі diag := fun b => negb (f b b), або просто замінити Propз natі використанням diag := fun n => (f b b) + 1.
коді
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.