← Neueste Arbeiten
💻 computer science

Verifying Exact Samplers for Continuous Distributions with a Discrete Program Logic

Dieser Beitrag stellt Continuous-Eris vor, eine höherstufige Separationlogik, die im Rocq-Beweisassistenten implementiert ist, um die Korrektheit exakter Sampling-Algorithmen für kontinuierliche Verteilungen wie Gauß- und Laplace-Verteilungen formal zu verifizieren und dabei die Sicherheits- und Genauigkeitsbeschränkungen von Gleitkomma-Näherungen zu adressieren.

Ursprüngliche Autoren: Markus de Medeiros, Puming Liu, Kwing Hei Li, Alejandro Aguirre, Lars Birkedal, Joseph Tassarotti

Veröffentlicht 2026-05-14
📖 6 Min. Lesezeit🧠 Tiefgang

Ursprüngliche Autoren: Markus de Medeiros, Puming Liu, Kwing Hei Li, Alejandro Aguirre, Lars Birkedal, Joseph Tassarotti

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 versuchen, einen Kuchen zu backen, aber anstatt ein Standard-Messgefäß zu verwenden, müssen Sie jede Zutat messen, indem Sie Wasser aus einem Eimer Tropfen für Tropfen in eine winzige Tasse füllen. Wenn Sie nach 100 Tropfen aufhören, haben Sie eine Annäherung der Menge. Wenn Sie nach 1.000 Tropfen aufhören, ist es näher dran. Aber wenn Sie zu einem beliebigen Zeitpunkt aufhören, haben Sie technisch gesehen einen winzigen Fehler gemacht, weil Sie nicht die exakte Menge erhalten haben.

In der Welt der Informatik passiert genau das, wenn Computer reelle Zahlen (wie 3,14159...) verarbeiten. Sie verwenden „Gleitkommazahlen", die wie diese 100-Tropfen-Annäherungen sind. Für die meisten Dinge ist das in Ordnung. Aber für sensible Aufgaben – wie den Schutz privater Daten in medizinischen Studien oder Finanzunterlagen – können diese winzigen „Rundungsfehler" zu großen Sicherheitslecks anwachsen.

Dieser Artikel stellt eine neue Methode vor, um dieses Problem zu lösen. Die Autoren haben ein Werkzeug namens Continuous-Eris entwickelt, das Programmierern hilft zu beweisen, dass ihr Code exaktes Sampling aus kontinuierlichen Verteilungen durchführt (wie das Auswählen einer perfekt zufälligen Zahl zwischen 0 und 1), ohne jemals einen Rundungsfehler zu machen.

Hier ist, wie sie es getan haben, unter Verwendung einiger kreativer Analogien:

1. Das Problem: Der „faule" Koch

Normalerweise versucht ein Computer, um eine zufällige Zahl zwischen 0 und 1 zu erhalten, die gesamte unendliche Folge von Ziffern (0,101101...) auf einmal zu generieren. Aber das ist unmöglich; man kann keine unendliche Liste aufschreiben.

Stattdessen verwenden die Autoren einen „faulen" Ansatz. Stellen Sie sich einen Koch vor, der eine Zwiebel nur Schicht für Schicht schält, aber nur, wenn Sie danach fragen.

  • Der Code: Das Programm U (Uniform) generiert nicht sofort die ganze Zahl. Es erstellt lediglich eine leere Liste.
  • Die Anfrage: Wenn Sie die ersten paar Ziffern anfordern (unter Verwendung einer Funktion namens GetBits), schält das Programm eine Schicht (generiert ein zufälliges Bit, 0 oder 1).
  • Die Magie: Wenn Sie später mehr Ziffern anfordern, schält es eine weitere Schicht. Es baut die Zahl Bit für Bit auf, nur so schnell, wie Sie sie benötigen. Dies stellt sicher, dass Sie sich nie mit einer unendlichen Liste befassen müssen, aber Sie können eine Antwort erhalten, die so präzise ist, wie Sie möchten.

2. Die Herausforderung: Beweisen, dass der Koch ehrlich ist

Der schwierige Teil ist nicht das Schreiben des Codes; es ist der Beweis, dass der faule Koch tatsächlich fair Zahlen auswählt.

  • Wenn der Koch eine Schicht schält, ist sie dann wirklich zufällig?
  • Wenn Sie 10 Schichten anfordern, ist die resultierende Zahl dann wirklich über den gesamten Bereich verteilt?
  • Wie beweisen Sie dies, wenn der Koch noch nicht einmal die Zwiebel vollständig geschält hat?

Frühere Werkzeuge konnten dies nur für einfache, diskrete Dinge beweisen (wie das Würfeln). Sie konnten nicht mit der „unendlichen Zwiebel" kontinuierlicher Zahlen umgehen, insbesondere wenn der Code komplex war, Speicher verwendete und Werte auf der Flucht änderte.

3. Die Lösung: Das „unendliche Band" und „Zeitbelege"

Um dies zu lösen, haben die Autoren ein neues Logiksystem (eine Reihe von Regeln zum Beweisen der Korrektheit von Code) erfunden, das drei clevere Tricks kombiniert:

A. Das „vorgezeichnete Band" (Voraus-Sampling)

Stellen Sie sich vor, Sie sind ein Zauberer. Um zu beweisen, dass Ihr Trick funktioniert, schreiben Sie heimlich die gesamte Folge der Karten auf, die Sie aus dem Deck ziehen werden, bevor Sie die Show überhaupt beginnen.
In ihrer Logik verwenden sie ein „Band", das wie diese vorab geschriebene Liste funktioniert. Obwohl der Computer Bits einzeln generiert, geht der Beweis davon aus, dass die gesamte unendliche Folge von Bits bereits auf einem magischen Band aufgeschrieben ist. Dies ermöglicht es dem Mathematiker, über die „ganze Zahl" zu reasoning, obwohl das Programm nur „ein Bit nach dem anderen" sieht.

B. Der „Zeitbeleg" (Das Budget)

Hier kommt der knifflige Teil: Ein Band kann in einem Computerbeweis tatsächlich nicht unendlich sein.
Daher verwenden sie ein Konzept namens Zeitbelege. Stellen Sie sich dies als ein „Schrittbudget" vor.

  • Die Logik sagt: „Wir werden das Programm nur für 100 Schritte beobachten."
  • Da das Programm nur einen Schritt benötigt, um ein Bit zu generieren, müssen wir, wenn wir nur 100 Schritte beobachten, nur die ersten 100 Bits auf unserem magischen Band kennen.
  • Der „Zeitbeleg" ist ein Token, das sagt: „Ich habe noch 100 Schritte übrig." Jedes Mal, wenn das Programm einen Schritt macht, geben Sie einen Beleg aus.
  • Dies ermöglicht es ihnen, so zu tun, als wäre das Band unendlich, denn für jeden bestimmten Moment im Beweis benötigen sie nur eine endliche Anzahl von Bits, und sie haben einen „Beleg", um dafür zu bezahlen.

C. Der „Fehlerguthaben" (Das Sicherheitsnetz)

Schließlich verwenden sie Fehlerguthaben. Stellen Sie sich vor, Sie haben ein Budget an „Fehlern", die Sie machen dürfen.

  • Wenn Sie beweisen wollen, dass das Programm zu 99,9 % korrekt ist, geben Sie 0,1 % Ihres Guthabens aus.
  • Die Autoren entwickelten eine Möglichkeit, diese Guthaben „auszugeben", um zu beweisen, dass die Wahrscheinlichkeit eines fehlerhaften Verhaltens des Programms verschwindend gering ist.
  • Sie fanden heraus, wie man diese diskreten „Fehlerbudgets" in ein glattes, kontinuierliches mathematisches Werkzeug verwandeln kann (unter Verwendung von Integralen), damit sie beweisen können, dass der Code für den gesamten Bereich reeller Zahlen funktioniert, nicht nur für bestimmte Punkte.

4. Was sie tatsächlich bewiesen haben

Unter Verwendung dieses neuen Systems haben die Autoren nicht nur über Theorie gesprochen; sie bauten und verifizierten tatsächlichen Code für:

  1. Gleichverteilung: Das Auswählen einer zufälligen Zahl zwischen 0 und 1.
  2. Gauß-Verteilung (Glockenkurve): Das Auswählen einer Zahl, die sich um einen Durchschnitt gruppiert (wie menschliche Körpergrößen).
  3. Laplace-Verteilung: Eine bestimmte Art von Rauschen, die in der Differential Privacy verwendet wird (eine Methode, um Daten zu teilen, ohne individuelle Geheimnisse preiszugeben).

Sie bewiesen, dass ihr Code für diese Verteilungen mathematisch exakt ist. Wenn Sie ihren Code verwenden, erhalten Sie keine „hinreichend genaue" Gleitkommazahl; Sie erhalten eine Zahl, die garantiert den perfekten mathematischen Regeln folgt, Bit für Bit.

Das Fazit

Der Artikel stellt ein neues „Regelwerk" (Continuous-Eris) vor, das Programmierern ermöglicht, komplexen, faulen, exakten Sampling-Code zu schreiben und zu beweisen, dass er zu 100 % korrekt ist. Sie taten dies, indem sie ein „magisches, vorab geschriebenes Band" mit einem „Schrittbudget"-System kombinierten, was es ihnen ermöglichte, über unendliche Möglichkeiten unter Verwendung endlicher, handhabbarer Schritte zu reasoning. Dies ist ein großer Schritt nach vorn, um sicherzustellen, dass datenschutzfreundliche Algorithmen und andere kritische Systeme keine versteckten mathematischen Fehler haben, die durch Rundungsfehler verursacht werden.

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.

Digest testen →