A Minimal Executable Proof for Multi-Language Contract Traceability
Dieser Artikel präsentiert einen minimalen, falsifizierbaren ausführbaren Beweis, der zeigt, wie ein mehrsprachiger Vertrag, ein Implementierungsgraph, eine Rückverfolgbarkeitskette und eine Prüfschranke anhand von sechs „Hello, world!"-Programmen in verschiedenen Sprachen validiert werden können, wobei fünf erfolgreiche Bestätigungen und ein Überspringen aufgrund fehlender Werkzeugunterstützung resultieren.
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 sind Richter in einem sehr strengen Gerichtssaal. Sie haben eine einzige, winzige Regel für ein Spiel: „Sagen Sie 'Hello, world!' genau so, wie geschrieben, ohne zusätzlichen Lärm, und hören Sie sofort auf."
Dieses Papier ist keine große Theorie darüber, wie das gesamte Rechtssystem der Software aufgebaut werden soll. Stattdessen ist es ein bewusst winziger, in sich geschlossener Beweis, der zeigt, dass wir einen „Gerichtssaal" bauen können, in dem wir prüfen können, ob verschiedene Personen (die in verschiedenen Sprachen schreiben) diese eine einfache Regel befolgt haben.
Hier ist der Aufbau des Papiers, unter Verwendung alltäglicher Analogien:
1. Der „Vertrag" (Das Regelbuch)
Die Autoren haben ein digitales Regelbuch namens Vertrag erstellt.
- Die Regel: Das Computerprogramm muss die exakten Buchstaben
Hello, world!gefolgt von einem „Zeilenumbruch" (wie das Drücken der Eingabetaste) ausgeben. Es darf nichts auf den „Fehler"-Kanal ausgeben (kein Schreien), und es muss mit einer „0" enden (eine perfekte Punktzahl). - Die Analogie: Denken Sie an einen Backwettbewerb, bei dem die einzige Regel lautet: „Der Kuchen muss genau 10 Zoll breit sein." Wenn er 10,1 Zoll breit ist oder wenn er verbrannt ist, verlieren Sie.
2. Die „Zeugen" (Die Tester)
Um zu beweisen, dass die Regel befolgt wurde, verwendet das Papier Zeugen. Dies sind automatisierte Skripte (kleine Roboter), die die Arbeit überprüfen.
- Der Hauptzeuge: Er führt sechs verschiedene Versionen des Programms aus, die in sechs verschiedenen Sprachen geschrieben sind (Rust, Go, C, Java, TypeScript und AWK).
- Das Ergebnis: Fünf davon bestanden perfekt. Eines (Java) wurde mit „SKIP" markiert, weil der Richter nicht die richtigen Werkzeuge (einen Java-Compiler) auf seinem Schreibtisch hatte, um es zu prüfen. Es war kein Fehler; der Test konnte einfach nicht durchgeführt werden.
- Die Analogie: Stellen Sie sich einen Verkostenden vor, der sechs verschiedene Kuchen probiert. Fünf schmecken genau richtig. Der sechste befindet sich in einer Schachtel, die er nicht öffnen kann, also markiert er ihn als „Nicht getestet" statt als „Schlecht".
3. Der „DAG" (Der Stammbaum)
Das Papier verwendet eine Struktur namens DAG (gerichteter azyklischer Graph).
- Das Konzept: Stellen Sie sich einen Stammbaum vor. Sie haben die „Großeltern" (die Quelldateien), und alle münden in einen „Elternteil" (den Verifikationsschritt).
- Der Punkt: Diese Karte zeigt genau, welche Quelldatei zu welchem Testergebnis geführt hat. Sie beweist, dass der Test nicht einfach durch Magie passiert ist; es war ein direktes, nachvollziehbares Ergebnis spezifischen Codes.
4. Die „Umschreibungen" (Die Zaubertricks)
Das Papier testet auch, ob das System erkennen kann, wenn jemand versucht, die Regel zu „verstecken".
- Der Go-Trick: Ein Programmierer schrieb die „Hello, world!"-Nachricht auf eine sehr komplizierte, verdrehte Weise (wie das Schreiben eines Geheimschrifts). Das Papier behauptet, das System könne das „Skelett" des Codes (die Funktionsnamen) immer noch sehen, selbst wenn das „Fleisch" (der wörtliche Text) versteckt ist.
- Der AWK-Trick: Eine andere Sprache (AWK) stand nicht auf der offiziellen Liste der Sprachen, die das System normalerweise versteht. Daher erstellten die Autoren eine spezielle „Fallback"-Checkliste nur dafür.
- Die Analogie: Es ist wie ein Detektiv, der erkennen kann, dass ein Verdächtiger eine Verkleidung trägt (der verdrehte Code), aber trotzdem seine Körpergröße und Schuhgröße (die Code-Struktur) erkennen kann. Für die Sprache, die der Detektiv nicht kennt, verwendet er einfach eine einfachere Checkliste.
5. Was dieses Papier NICHT ist (Die „Nicht-Aussagen")
Dies ist der wichtigste Teil. Die Autoren sind sehr vorsichtig zu sagen, was sie nicht tun:
- Es ist kein Benchmark: Sie behaupten nicht, dass ihr System das schnellste oder beste ist.
- Es ist keine Garantie für die reale Welt: Sie behaupten nicht, dass dieses System jeden Hacker fangen oder jeden Fehler in einer riesigen Bank beheben kann.
- Es geht nicht um „Bedeutung": Sie beweisen nicht, dass zwei komplexe Programme die gleiche Bedeutung haben. Sie beweisen nur, dass für dieses winzige Beispiel die Regeln befolgt wurden.
Das Fazit
Betrachten Sie dieses Papier als einen Bauplan für einen einzigen, perfekten Ziegelstein.
Die Autoren versuchen noch nicht, ein Wolkenkratzer zu bauen. Sie sagen: „Schauen Sie, wir haben einen winzigen Ziegelstein gebaut. Wir haben eine Karte, wie er hergestellt wurde, eine Liste der verwendeten Werkzeuge und einen Zeugen, der bestätigt, dass er die Größenanforderung erfüllt. Wenn Sie die gleichen Werkzeuge haben, können Sie exakt denselben Ziegelstein bauen und dasselbe Ergebnis sehen."
Das Ziel ist es zu zeigen, dass Transparenz möglich ist: Man kann eine Behauptung (wir haben die Regel befolgt) bis zurück zu dem spezifischen Code und dem spezifischen Test verfolgen, der sie bewiesen hat.
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.