Cantors Theorem in der Typentheorie

9

Der Satz von Cantor besagt, dass

Für jede Menge A hat die Menge aller Teilmengen von A eine streng größere Kardinalität als A selbst.

Ist es möglich, so etwas nur mit Typen / Aussagen zu codieren, ohne auf ZFC-Sets zu verweisen? Code oder Pseudocode zum Codieren dieses Satzes in einer abhängig typisierten Sprache wäre willkommen.

Paula Vega
quelle

Antworten:

9

Kurze Antwort: ja! Sie brauchen nicht so viele Maschinen, um den Beweis zu erhalten.

Eine Subtilität: Es scheint auf den ersten Blick, dass die ausgeschlossene Mitte verwendet wird: Man baut eine Menge und eine Zahl d auf und zeigt, dass entweder d D oder d D, was zu einem Widerspruch führt. Aber es gibt ein Lemma, das in der intuitionistischen Logik wahr ist und besagt:D.ddD.dD.

 für alle Aussagen P.,(P.¬P.)

Dies reicht zusammen mit dem üblichen Beweis aus. Beachten Sie, dass "Surjektion" im Allgemeinen eine subtile Nuance in der konstruktiven / intuitionistischen Logik haben kann (ohne Auswahl), so dass Sie stattdessen mit "rechts invertierbar" rechnen müssen.

Ein sehr normaler Beweis in Coq (den ich aus irgendeinem Grund online nicht finden konnte) könnte wie folgt lauten:

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.

Natürlich ist der "richtige" Rahmen, in dem über diese Angelegenheiten nachgedacht werden kann, der als Mindestanforderung für diesen Beweis angesehen werden kann, Lawveres Fixpunktsatz, der besagt, dass der Satz in jeder kartesischen geschlossenen Kategorie gilt (so in insbesondere in jeder vernünftigen Typentheorie).

Andrej Bauer schreibt wunderbar über diesen Satz in der Arbeit über Festkomma-Sätze in der synthetischen Berechenbarkeit , und ich vermute, dass er dieser Antwort einige interessante Dinge hinzufügen könnte.

Cody
quelle
Wenn ich in Ihrer Definition richtig, zu verstehen cantor, natspielt die Rolle des „jede Menge A“ und nat -> Propspielt die Rolle der „die Menge aller Teilmengen von A“. Was würde das Ersetzen nat -> Propdurch bedeuten nat -> bool? Ich denke , mit Propgeeigneteren in konstruktiver Logik, sondern die klassische Logik und Mengenlehre oft Mitte ausgeschlossen annehmen, so sollten wir in der Lage sein , zu ersetzen Propmit boolund noch in der Lage sein , den Satz zu beweisen, nicht wahr?
Paula Vega
1
Ja, das Ersetzen von Prop durch bool funktioniert gut mit der Negationskarte. Der Fixpunktsatz von Lawvere zeigt, dass Sie ihn mit jedem Typ A ausführen können, der eine Karte A -> A ohne Fixpunkte hat, sodass auch ein Typ mit 3 Elementen oder ein Typ aller natürlichen Zahlen funktioniert
Max New
@PaulaVega Max ziemlich viel sagt alles, aber ich empfehle mit dem Beispiel Herumspielen, zB unter Verwendung boolstatt Propund natund diag := fun b => negb (f b b), oder einfach nur zu ersetzen Propmit natund verwenden diag := fun n => (f b b) + 1.
Cody