- Peano-Arithmetik (PA) kann mechanische Rechenprozesse ausdrücken, daher lässt sich das Ende jeder einzelnen Goodstein-Folge in PA beweisen
- Mithilfe der Cantor-Normalform und hereditären Zahlendarstellung lassen sich Goodstein-Folgen und ihre Abwärtsbewegung ausdrücken, wodurch sich Beweise mit endlicher Länge konstruieren lassen
- Durch Induktion (starke Induktion/transfinite Induktion) lassen sich die Beweise jeweils bis zu Ordinalzahlen bestimmter Ordnung erweitern
- PA kann für jede natürliche Zahl n beweisen, dass „G(n) 0 erreicht“, aber ein umfassender Beweis des gesamten Goodstein-Theorems (für alle n) ist nicht möglich
- In PA lassen sich Berechnungen, Datenstrukturen (List, Pair usw.) und sogar die Kodierung einer Programmiersprache (Lisp) selbst sowie die Kodierung ihres eigenen Beweisverfahrens hinreichend umsetzen
Einleitung und Hintergrund des Problems
- Dieser Text beschreibt, dass Peano-Arithmetik (PA) beweisen kann, dass die Goodstein-Folge „für jedes n 0 erreicht (G(n) terminiert)”
- Für Logiker mag das selbstverständlich erscheinen, hier wird es jedoch aus der Perspektive der Kodierung von Berechnungen so erklärt, dass Programmierer es nachvollziehen können
- Für jeden einzelnen Fall einer Goodstein-Folge lässt sich innerhalb von PA eine konkrete Beweisroutine konstruieren
Ordinals(Ordinalzahlen) und Goodstein-Folgen
- Mit der Von-Neumann-Methode werden Ordinalzahlen (Sets as Ordinals) erzeugt
- 0 ist die leere Menge, 1 ist {0}, 2 ist {0,1}, ω ist {0,1,2,…}, ω+1 ist {0,1,2,…,ω} usw.; die Ordnung ist wohldefiniert
- Goodstein-Folgen werden mithilfe einer hereditären Stellenwertdarstellung unter Verwendung der Cantor-Normalform beschrieben
- Beispiel: ω^ω ist ((1,ω)), also ((1,(1,1)))
- Die Ordnung < wird durch lexikographischen Vergleich der Ordinalzahlen/Koeffizienten jedes Terms bestimmt
Induktion und transfinite Induktion
- Induktion in der Peano-Arithmetik: Gilt eine Aussage für 0 und gilt sie für n→n+1, dann gilt sie für alle natürlichen Zahlen
- Starke Induktion ist ebenfalls in PA beweisbar
- Transfinite Induktion: In ZFC usw. lässt sie sich auf unendliche Ordinalzahlen erweitern und auf in Cantor-Normalform geschriebene Zahlen anwenden
- Theorem 1: Jede absteigende Folge in Cantor-Normalform ist stets endlich
- Theorem 2: Für Zahlen in Cantor-Normalform kann transfinite Induktion verwendet werden
Transfinite Induktion in PA und die Länge von Beweisen für Goodstein-Folgen
- PA kann für beliebige n einen Beweis für das Ende der Goodstein-Folge erzeugen
- Je nach Turmhöhe m=O(log* n) (iterierter Logarithmus) der Cantor-Normalform lässt sich der Beweis konstruieren
- Durch Kombination von m Beweisen pro Schritt ergibt sich eine Gesamtbeweislänge von O(m^2), oder mit Einführung einer speziellen Notation (ω[m]) verkürzt auf O(m log m)
- Allerdings ist ein Beweis des gesamten Goodstein-Theorems (für alle n) in PA unmöglich (keine transfinite Induktion über ε0)
- Wäre dies möglich, ließe sich auch die Widerspruchsfreiheit von PA beweisen, was mit Gödels zweitem Unvollständigkeitssatz kollidieren würde
Kodierung von Programmen und Datenstrukturen in PA
- PA kann Berechnungen/Programme/Datenstrukturen (Zahlen, Paare, Listen und alle weiteren Strukturen) hinreichend kodieren
- Auf folgende Weise lassen sich verschiedene Funktionen umsetzen:
- grundlegende Logik und Operationen (+, *, pow, //, %, min, max usw.)
- Pattern Matching und bedingte Verzweigungen (
if, cond usw.)
- Kodierung einer Zahl als zwei Zahlen (Paar) und rekursive Erweiterung von Paaren zu komplexeren Strukturen wie Listen (rekursive Listen, Bäume, Text usw.)
- Mit dieser Kodierung von Datenstrukturen lässt sich sogar ein Interpreter für eine beliebige virtuelle Maschine/Programmiersprache (Lisp usw.) konstruieren
Bootstrapping nach Lisp und Kodierung
- Am Beispiel von Lisp wird erläutert, wie sich grundlegende numerische und logische Operationen, Datenstrukturen sowie ein Sprach-Interpreter/Interpreter implementieren lassen
- Die gesamte Struktur von Lisp (Zuordnung von Befehlen/Argumenten, Spezialformen, macro usw.) kann in PA durch geeignete Kombinationen von Funktionen implementiert werden
- Darüber hinaus lassen sich innerhalb von PA sogar der Beweisprozess von PA selbst, logische Beweisverfahren und selbstreferenzielle Strukturen vollständig symbolisch kodieren und umsetzen
Kodierung der Logik selbst innerhalb von PA
- In der mathematischen Logik lässt sich der Beweisprozess der First-Order Logic als Datensatz aus PA-Zahlen kodieren
- Jeder Beweisschritt, jede Aussage, jede Schlussregel und die Prüfung der Korrektheit eines Beweises lassen sich als Folge numerischer Funktionen bzw. Listenverarbeitung erkennen und verarbeiten
- Diese metaartige, selbstreferenzielle Kodierung führt direkt zu Gödels Unvollständigkeit und dem Beweis des Halteproblems
Fazit
- Berechnungen, Datenstrukturen, Programme und sogar logische Beweisprozesse lassen sich in PA hinreichend kodieren, beweisen und interpretieren
- Daher lässt sich jede beliebige Goodstein-Folge (für n gilt: G(n) terminiert) innerhalb von PA konkret beweisen
- Ein Beweis des gesamten Goodstein-Theorems (für alle n) im Sinne von „PA beweist das Goodstein-Theorem innerhalb von PA“ ist wegen der Grenzen der Logik jedoch nicht möglich
- Aus Sicht von Programmierern ist PA eine vollständige logische Grundlage, die Berechnung selbst kodieren kann
1 Kommentare
Hacker-News-Kommentare
(defun not (x) (if x false true)). Sobald jemand anfängt, Klammern zu verwenden, prüfe ich instinktiv, ob sie korrekt geschlossen sind. Später die Bemerkung zu lesen, dass sich „mit einem Computer leicht programmieren lässt, ob Klammern ausgeglichen sind“, hat mich laut lachen lassen. Ich fand diese Art Witz wirklich großartig, und auch der Kommentar; After a while, you stop noticing that stack of closing parens.im Abschnitt "Basic Number Theory" ist mir im Gedächtnis geblieben. Es war schön, nach langer Zeit wieder einmal etwas mit Lisp zu lesen, und der Beitrag hat wirklich Spaß gemacht.\omega.epsilon_0durchführen. EDIT: Vielleicht reicht sogar schon „PA ist konsistent“?Con(PA), sondern auch eine beliebige universell quantifizierte Formel reicht nicht aus. Siehe diese Math-StackExchange-Antwort. Zur ersten Frage würde mich interessieren, wie man Omega-Konsistenz als Formel von PA kodiert. Das fällt mir nicht sofort ein, daher macht mich das neugierig.epsilon_0) PA selbst beweist. Ich denke, dass man mit PA+„PA ist konsistent“ transfinite Induktion bisepsilon_0beweisen können sollte.forall n, G(n)“, sondern „PA beweistforall n, Provable(G(n))“. Ich bin nicht besonders stark in Logik; wenn jemand konkret erklären könnte, warum man aus einem Beweis vonforall n, Provable(P(n))nicht auf einen Beweis vonProvable(forall n, P(n))schließen kann, wäre ich dankbar.will-returnundopposite-returnbauen; das entspricht dem Standardbeweis des Halteproblems. Betrachte den Fallopposite-return(opposite-return, opposite-return): Wenn PA beweist, dassopposite-returnzurückkehrt, dann beweist es damit auch, dass es tatsächlich nicht zurückkehrt; und wenn es beweist, dass es nicht zurückkehrt, dann beweist es, dass es zurückkehrt. Wenn PA die stärkere Aussage akzeptieren würde, dass „alles, was beweisbar ist, auch tatsächlich beweisbar ist“, dann wäre das im Grunde Gödels zweiter Unvollständigkeitssatz und würde bedeuten, dass PA widersprüchlich ist. Deshalb muss man streng zwischen „PA beweist X“ und „PA beweist, dass es X beweist“ unterscheiden.Π,Σ,=,Ω) aufbauen.