Simple Science

Hochmoderne Wissenschaft einfach erklärt

# Computerwissenschaften# Programmiersprachen

Mizar neu gestalten: Ein moderner Ansatz für Beweise

Mizar kriegt ein Makeover mit Rust, wird schneller und entdeckt Bugs.

― 8 min Lesedauer


Mizars rostiger NeustartMizars rostiger NeustartLeistung und deckt kritische Bugs auf.Mizars Transformation steigert die
Inhaltsverzeichnis

Mizar ist eine einzigartige Sprache, die zum Schreiben und Überprüfen von mathematischen Beweisen entwickelt wurde. Diese Sprache gibt's seit 1973, und im Laufe der Jahre hat sich eine riesige Bibliothek an Artikeln zu vielen mathematischen Themen angesammelt. Mizar hat eine eigene Arbeitsweise, die es sowohl mächtig als auch ein bisschen kompliziert macht. Kürzlich wurden Anstrengungen unternommen, Mizar in Rust neu zu schreiben, einer modernen Programmiersprache, die für ihre Effizienz und Sicherheit bekannt ist.

Das Ziel dieser Initiative ist es nicht nur, eine Version von Mizar zu schaffen, die schneller läuft, sondern auch, versteckte Fehler im Originalsystem zu finden und zu beheben. Man kann sich das wie einen Oldtimer vorstellen, dem man einen neuen Motor verpasst, während man auch alten Kram ausmistet, der ihn zum Ruckeln bringen könnte.

Was ist Mizar?

Mizar ist hauptsächlich eine Beweissprache, die für Mathematiker und Logiker gedacht ist. Sie erlaubt es Nutzern, Beweise in einer Weise zu schreiben, die natürlicher Sprache ähnelt, aber mit einer strengen Struktur. Diese Sprache bietet eine formalisierten Weg, um sicherzustellen, dass die logischen Schritte in einem Beweis korrekt sind. Im Laufe der Jahre hat Mizar eine grosse Bibliothek aufgebaut, die als Mizar Mathematical Library (MML) bekannt ist und Tausende von Artikeln und Theoremen umfasst.

Der typische Mizar-Nutzer schreibt ein Dokument, das seinen Beweis umreisst, und die Werkzeuge von Mizar überprüfen die Logik dieser Beweise, um sicherzustellen, dass sie Sinn machen. Es ist wie ein Mathelehrer, der nicht nur deine Hausaufgaben korrigiert, sondern dir auch hilft zu verstehen, wo du einen Fehler gemacht hast.

Der Umstieg auf Rust

Rust ist bekannt für seine Fähigkeit, den Speicher sicher und effizient zu verwalten. Durch die Neuimplementierung von Mizar in Rust streben die Entwickler an, die Leistung des Beweisprüfungswerkzeugs zu verbessern und gleichzeitig die gleiche Logik beizubehalten.

Die neue Version heisst "mizar-rs." Das Team dahinter hat sich einige Ziele gesetzt: den Prüfprozess zu beschleunigen und mögliche Bugs oder Probleme in der Originalversion aufzudecken. Sie haben es sogar geschafft, die Beweisprüfung schneller zu machen – bei einigen Aufgaben etwa fünfmal schneller!

Warum Mizar neu implementieren?

Ein Neuanfang

Obwohl Mizar viele Jahre lang gute Dienste geleistet hat, ist der ursprüngliche Code ziemlich alt und in Pascal geschrieben, das heute nicht mehr so beliebt ist. Im Laufe der Jahrzehnte hat sich der Programmierstil und die Praktiken erheblich verändert, was zu dem führt, was Programmierer oft als "technische Schulden" bezeichnen. Das ist ein bisschen so, als würde man ein Haus besitzen, in das man ständig neue Möbel stellt, ohne den alten Kram auszumisten.

Durch die Neuüberschreibung von Mizar in Rust wollen die Entwickler nicht nur den Code modernisieren, sondern auch sicherstellen, dass es für neue Entwickler einfacher wird, das Projekt zu verstehen und beizutragen. Stell dir vor, du versuchst, ein altes Rezept zu lesen, das ständig neue Zutaten hinzufügt, ohne es jemals neu zu schreiben; das wird schwer nachvollziehbar.

Leistungsverbesserung

Ein wesentlicher Grund für die Neuimplementierung ist die verbesserte Leistung. Mit dem ursprünglichen System konnte die Überprüfung grosser Bibliotheken von Beweisen lange dauern. Mit den modernen Möglichkeiten von Rust erledigt die neue Version denselben Job viel schneller.

Zum Beispiel hat der neue Beweisprüfer, der acht Computerkerne nutzt, die gesamte MML in etwas über 11 Minuten überprüft. Das ist im Vergleich zur Originalversion eine erhebliche Verbesserung.

Interne Struktur von Mizar

Mizar besteht aus mehreren Komponenten, die jeweils eine entscheidende Rolle bei der Verarbeitung von Beweisen spielen. Hier ist eine einfache Übersicht:

Parser

Der erste Schritt ist der "Parser", der die Mizar-Datei (das Dokument, in dem die Beweise geschrieben werden) liest und sie in ein besser handhabbares Format umwandelt, das als abstrakten Syntaxbaum (AST) bekannt ist. Man kann sich den Parser wie einen Übersetzer vorstellen, der den ursprünglichen Text in eine strukturierte Version verwandelt, die ein Computer leicht verstehen kann.

Analyzer

Als nächstes kommt der "Analyzer." Diese Komponente überprüft die logische Struktur des Beweises. Sie sucht nach Inkonsistenzen oder Fehlern in der Verwendung von Begriffen und Symbolen. Es ist wie ein Freund, der die Mathematik gut versteht und deine Arbeit überprüft, um sicherzustellen, dass du keine dummen Fehler gemacht hast.

Checker

Schliesslich haben wir den "Checker", der jeden Schritt eines Beweises verifiziert. Das ist der Teil, der tatsächlich bestätigt, ob die Schritte im Beweis logisch sinnvoll sind. Wenn du dir den Checker wie einen Schiedsrichter in einem Spiel vorstellen möchtest, dann stellt der Checker sicher, dass die Regeln befolgt werden und vergibt Punkte (oder weist Schritte zurück) entsprechend.

Herausforderungen bei der Rekonstruktion von Mizar

Keine offizielle Spezifikation

Eine der grössten Herausforderungen für die Entwickler in diesem Projekt war das Fehlen einer offiziellen Spezifikation für die Mizar-Sprache. Normalerweise haben Programmiersprachen detaillierte Spezifikationen, die beschreiben, wie sie funktionieren sollten. Mizar hatte jedoch nur den ursprünglichen Code als Referenz. Das war ähnlich wie der Versuch, eine neue Sprache zu lernen, indem man nur Gespräche hört, ohne irgendwelche Grammatikregeln auf Papier zu haben!

Zugang zum Code

Zusätzlich war der ursprüngliche Quellcode über viele Jahre hinweg nicht öffentlich zugänglich. Er war nur Mitgliedern einer bestimmten Gruppe zugänglich, was es Entwicklern ausserhalb dieses Kreises schwer machte, mitzuwirken. Glücklicherweise wurde der ursprüngliche Code dank der Bemühungen des Teams hinter dem mizar-rs-Projekt nun jedem zugänglich gemacht.

Fehlender kleiner vertrauenswürdiger Kernel

Mizar hat auch keinen "kleinen vertrauenswürdigen Kernel", was bedeutet, dass die Komponenten, die für kritische Logik verantwortlich sind, eng miteinander verbunden waren. Um die Korrektheit zu gewährleisten, musste die neue Implementierung nah an dem bleiben, wie das ursprüngliche Mizar funktionierte, was den Entwicklungsprozess weiter komplizierte.

Bugs und Entdeckungen

Als das Team Mizar neu implementierte, fanden sie mehrere Bugs im ursprünglichen Code. Sie konnten Beweise schreiben, die zu Widersprüchen führten, aufgrund von Problemen in der Logik des ursprünglichen Systems. Das zeigt, wie das Neuschreiben von Code eine neue Perspektive auf bestehende Probleme bieten kann, ähnlich wie das Ausmisten deines Kleiderschranks alte Klamotten enthüllen kann, an die du schon gar nicht mehr gedacht hast!

Beispiel-Bugs

Schauen wir uns ein paar Beispiele für Bugs an, die während des Prozesses gefunden wurden:

  1. Polynom-Arithmetik Überlauf: Der ursprüngliche Code prüfte nicht auf Überläufe in der polynomialen Arithmetik. Das bedeutet, wenn die Zahlen zu gross wurden, konnte das System falsche Ergebnisse liefern, wie in einem Matheunterricht, in dem den Schülern beigebracht wird, dass 2 + 2 an einem schlechten Tag auch 5 ergeben kann.

  2. Negationsprobleme: In einigen Fällen konnte das Beweisprüfungs-System die Negation von Aussagen falsch interpretieren, was zu absurden Schlussfolgerungen führte. Es ist, als würde man argumentieren, dass, wenn man nicht hungrig ist, man voll sein muss, nur weil man vorher einen Snack hatte!

  3. Flex-und Fehlinterpretationen: Es gab Probleme mit komplexen logischen Ausdrücken, sogenannten flex-und Aussagen, die zu falschen Schlussfolgerungen führten. Das ist ein bisschen wie ein Puzzle, das zu passen scheint, aber tatsächlich ein falsch platziertes Teil hat.

Leistungsgewinne

Der Umstieg auf Rust hat zu bemerkenswerten Leistungsverbesserungen geführt. Das ursprüngliche Mizar benötigte viel länger, um Artikel zu verarbeiten, aufgrund seiner Architektur und älterer Programmiermethoden. Die neue Implementierung ist schneller, weil das Design von Rust effiziente Programmiermuster ermöglicht, die Zeitverschwendung reduzieren.

Zukünftige Arbeiten

Während die neue Version von Mizar bereits beeindruckend ist, gibt es immer Raum für Verbesserung. Das Team hofft, mizar-rs weiter auszubauen, sein Potenzial zu erkunden und die Fähigkeiten zu verfeinern.

Zum Beispiel könnten sie bestimmte Einschränkungen, die das ursprüngliche Mizar auferlegt hat, wie die Länge von Artikelnamen, aufheben. Stell dir vor, du versuchst, deinem Haustierfisch einen langen, komplizierten Namen zu geben – das funktioniert einfach nicht mit den Beschränkungen!

Fazit

Die Neuimplementierung von Mizar in Rust hat ein schnelleres, effizienteres Beweisprüfungswerkzeug hervorgebracht, das nicht nur die ursprünglichen Fähigkeiten beibehält, sondern auch den Debugging-Prozess verbessert. Indem Bugs aufgedeckt und die Leistung verbessert wird, hoffen die Entwickler, Mizar neues Leben einzuhauchen.

Dieses Projekt zeigt, wie moderne Werkzeuge Klarheit in ältere Systeme bringen und den Weg für zukünftige Innovationen in der mathematischen Verifikation ebnen können. Wer hätte gedacht, dass das Überprüfen von mathematischen Beweisen so aufregend sein könnte? Es ist wie der Umstieg von einem alten Fahrrad auf ein brandneues, glänzendes E-Bike – die Fahrt wird einfach viel reibungsloser!

Originalquelle

Titel: Reimplementing Mizar in Rust

Zusammenfassung: This paper describes a new open-source proof processing tool, mizar-rs, a wholesale reimplementation of core parts of the Mizar proof system, written in Rust. In particular, the "checker" and "analyzer" of Mizar are implemented, which together form the trusted core of Mizar. This is to our knowledge the first and only external implementation of these components. Thanks to the loose coupling of Mizar's passes, it is possible to use the checker as a drop-in replacement for the original, and we have used this to verify the entire MML in 11.8 minutes on 8 cores, a 4.8x speedup over the original Pascal implementation. Since Mizar is not designed to have a small trusted core, checking Mizar proofs entails following Mizar closely, so our ability to detect bugs is limited. Nevertheless, we were able to find multiple memory errors, four soundness bugs in the original (which were not being exploited in MML), in addition to one non-critical bug which was being exploited in 46 different MML articles. We hope to use this checker as a base for proof export tooling, as well as revitalizing development of the language.

Autoren: Mario Carneiro

Letzte Aktualisierung: 2024-12-23 00:00:00

Sprache: English

Quell-URL: https://arxiv.org/abs/2304.08391

Quell-PDF: https://arxiv.org/pdf/2304.08391

Lizenz: https://creativecommons.org/licenses/by/4.0/

Änderungen: Diese Zusammenfassung wurde mit Unterstützung von AI erstellt und kann Ungenauigkeiten enthalten. Genaue Informationen entnehmen Sie bitte den hier verlinkten Originaldokumenten.

Vielen Dank an arxiv für die Nutzung seiner Open-Access-Interoperabilität.

Mehr vom Autor

Ähnliche Artikel