Constructing (Co)inductive Types via Large Sizes
Dieser Artikel schlägt eine konsistente Erweiterung der intensionalen Typentheorie um einen großen Typ von Größen und parametrische Quantoren vor, um sowohl induktive als auch koinduktive Typen zu konstruieren, und überwindet dabei die Einschränkungen früherer Ansätze sowie die Inkonsistenz der aktuellen Implementierung von Größen in Agda.
Originalarbeit lizenziert unter CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Dies ist eine KI-generierte Erklärung des untenstehenden Papers. Sie wurde nicht von den Autoren verfasst oder gebilligt. Für technische Genauigkeit konsultieren Sie das Originalpaper. Vollständigen Haftungsausschluss lesen
Stellen Sie sich vor, Sie bauen eine massive, sich selbst referenzierende Wissensbibliothek. In dieser Bibliothek kann jedes Buch (ein „Typ") Referenzen zu anderen Büchern enthalten, und manchmal bezieht sich ein Buch auf sich selbst. Um zu verhindern, dass diese Bibliothek in Chaos oder unendliche Schleifen kollabiert, benötigen Sie strenge Regeln darüber, wie diese Bücher geschrieben und gelesen werden können.
Dieser Artikel handelt vom Entwurf eines besseren Regelwerks für eine bestimmte Art von Bibliothek, die als „Beweisassistent" (wie Agda oder Lean) bezeichnet wird. Diese Werkzeuge helfen Mathematikern und Programmierern, Code zu schreiben, der garantiert funktioniert, und Beweise zu führen, die garantiert wahr sind.
Hier ist die Aufschlüsselung der Ideen des Artikels unter Verwendung einfacher Analogien:
1. Das Problem: Das „Stoppschild" versus das „Tachometer"
Derzeit verwenden Beweisassistenten einen „Stoppschild"-Ansatz (genannt syntaktische Prüfungen), um sicherzustellen, dass Programme nicht ewig laufen. Sie betrachten die Form des Codes. Wenn eine Funktion sich selbst aufruft, prüft der Computer: „Haben Sie ein kleineres Datenelement an den nächsten Aufruf übergeben?" Wenn ja, ist es sicher. Ist der Code komplex, könnte der Computer verwirrt sein und sagen: „Nein, ich kann nicht beweisen, dass dies stoppt", selbst wenn es tatsächlich stoppt.
Die Lösung des Artikels: Anstatt die Form des Codes zu betrachten, schlagen die Autoren vor, jedem Datenelement ein Größen-Label (wie ein Tachometer oder ein Höhenmarker) zu geben.
- Induktive Typen (wie eine Liste von Zahlen) werden mit einer „Höhe" versehen. Eine rekursive Funktion muss immer in der Höhe absteigen.
- Koinduktive Typen (wie ein unendlicher Datenstrom) werden mit einer „Tiefe" versehen. Eine rekursive Funktion muss immer tiefer gehen, um produktiv zu sein.
2. Der Fehler im aktuellen System: Der „magische Unendlichkeitswert"
Im aktuellen System (Agda) gibt es ein spezielles Label namens Unendlich (). Es soll die „größtmögliche Größe" sein, die alles abdeckt.
- Die Analogie: Stellen Sie sich ein Lineal vor, das am ganzenden Ende eine Markierung für „Unendlich" hat. Das Problem ist, dass die Autoren dieses Artikels feststellten, dass Sie, wenn Sie versuchen, dieses Lineal zur Messung zu verwenden, versehentlich beweisen können, dass „Unendlich kleiner als Unendlich" ist. Dies bricht die Mathematik und macht das gesamte System inkonsistent (wie ein Lineal, das besagt, ein Meter sei kürzer als ein Meter).
3. Der neue Ansatz: Die „parametrische Menge"
Die Autoren schlagen eine neue Art vor, mit diesen Größen umzugehen, ohne ein einzelnes „Unendlich"-Label zu verwenden. Sie führen zwei spezielle Werkzeuge ein: Parametrische Existenzialquantoren () und Parametrische Allquantoren ().
Stellen Sie sich diese als zwei verschiedene Arten vor, eine Menschenmenge (die Größen) zu betrachten:
Der Induktive Typ (Die „Existenzial"-Menge):
- Die Idee: Ein endlicher Baum (wie ein Stammbaum) hat eine bestimmte Höhe, aber wir müssen nicht genau wissen, wie hoch er ist, um ihn zu verwenden. Wir müssen nur wissen, dass es irgendwo eine Höhengrenze gibt.
- Die Metapher: Stellen Sie sich vor, Sie suchen eine bestimmte Person in einer Menge. Sie müssen nicht jeden sehen; Sie müssen nur wissen, dass es eine Person in der Menge gibt, die die Beschreibung erfüllt. Die „Größe" bleibt abstrakt und verborgen. Sie können nicht auf die spezifische Zahl schauen; Sie wissen nur, dass eine Grenze existiert. Dies verhindert das Paradoxon „Unendlich ist kleiner als Unendlich".
Der Koinduktive Typ (Die „All"-Menge):
- Die Idee: Ein unendlicher Strom (wie ein Live-Videostream) kann für jede Zeitspanne beobachtet werden.
- Die Metapher: Stellen Sie sich vor, Sie schauen einem Theaterstück zu. Um zu sagen, das Stück sei „unendlich", müssen Sie in der Lage sein, es für jede Dauer zu beobachten, die Sie wählen. Die „Größe" ist hier ein Versprechen, dass die Daten standhalten, egal wie tief Sie schauen.
4. Der magische Trick: Der Bau der Bibliothek
Die Autoren zeigen, wie diese komplexen Typen (die Bibliotheksbücher) mit diesen „Mengen"-Werkzeugen gebaut werden können:
- Schritt 1: Sie bauen „Approximationen" der Typen in jeder möglichen Größe (wie den Bau eines Hausmodells in 1 Fuß Höhe, 2 Fuß Höhe usw.).
- Schritt 2: Sie verwenden das Existenzial-Werkzeug, um alle Approximationen mit „endlicher Höhe" zu einem echten induktiven Typ zu bündeln.
- Schritt 3: Sie verwenden das All-Werkzeug, um alle Approximationen mit „unendlicher Tiefe" zu einem echten koinduktiven Typ zu bündeln.
Warum ist dies besser?
Frühere Versuche konnten nur „endlich verzweigte" Bäume bauen (wie einen Stammbaum, bei dem jeder eine begrenzte Anzahl von Kindern hat). Diese neue Methode kann unendlich verzweigte Bäume bauen (wo ein Knoten eine unendliche Anzahl von Kindern haben kann), was viel leistungsfähiger und flexibler ist.
5. Der Beweis: Das „Realisierbarkeits"-Modell
Um zu beweisen, dass ihr neues System die Mathematik nicht zerstört, bauten sie ein „Realisierbarkeits-Modell".
- Die Analogie: Stellen Sie sich einen Richter in einem Gerichtssaal vor. Der Richter nimmt nicht nur das Wort der Anwälte; er prüft die Beweise gegen ein spezifisches, sehr großes und sehr strenges Regelbuch.
- Das Regelbuch: Sie interpretierten ihre „Größen" nicht als einfache Zahlen, sondern als überabzählbare Ordinalzahlen (ein Konzept aus der fortgeschrittenen Mathematik, das „größer" ist als die Menge aller natürlichen Zahlen).
- Das Ergebnis: Indem sie Größen als diese massiven, überabzählbaren Zahlen behandelten, bewiesen sie, dass ihre „parametrischen" Regeln (die die spezifische Größe verstecken) perfekt funktionieren. Das System ist konsistent, was bedeutet, dass es nicht versehentlich beweisen wird, dass „Unendlich kleiner als Unendlich" ist.
Zusammenfassung
Der Artikel löst einen Fehler in aktuellen Beweisassistenten, bei dem ein „magischer Unendlichkeits"-Label logische Widersprüche verursacht. Sie ersetzen ihn durch ein System, das Größen als verborgene, abstrakte Grenzen behandelt.
- Für endliche Dinge: Sie sagen: „Es gibt eine Grenze, aber wir werden sie nicht ansehen."
- Für unendliche Dinge: Sie sagen: „Es funktioniert für jede Grenze, die Sie wählen."
Dies ermöglicht ihnen, komplexe, unendliche Datenstrukturen sicher zu konstruieren und sicherzustellen, dass der Beweisassistent ein zuverlässiges Werkzeug für Mathematik und Programmierung bleibt.
Ertrinken Sie in Arbeiten in Ihrem Fachgebiet?
Erhalten Sie tägliche Digests der neuesten Arbeiten passend zu Ihren Forschungsbegriffen — mit technischen Zusammenfassungen, in Ihrer Sprache.