ProbInG: Distribution Recovery for Invariant Generation of Probabilistic Programs
Das probabilistische Programmieren ist ein neues Paradigma, das von High-Tech-Giganten wie Google, Amazon und Uber übernommen wurde, um die Entwicklung von Anwendungen auf der Basis von künstlicher Intelligenz, wie der Routenplanung und der Erkennung von Cyberangriffen, zu vereinfachen. Probabilistische Programmiersprachen enthalten arteigene Konstrukte für Stichprobenverteilungen, mit denen deterministische und stochastische Elemente frei gemischt werden können. Die resultierende flexible Struktur hat ihren Preis und führt zu Programmen mit schwer zu analysierenden Verhaltensmustern mit oft unvorhersehbaren Folgen bei sicherheitskritischen Anwendungen. Eine der Hauptherausforderungen bei der Analyse dieser Programme besteht darin, invariante Eigenschaften zu berechnen, die das Schleifenverhalten vollständig beschreiben. Unser Projekt zielt darauf ab, vollautomatisierte Ansätze zu entwickeln, um Invarianten über Momente höherer Ordnung und die Werteverteilung von Programmvariablen zu generieren. Dafür kombinieren wir Methoden von symbolischem Rechnen und Statistik mit formalen Methoden für die Programmanalyse. Unsere Ergebnisse sollen den Einsatzbedarf an Expertenwissen zur Gewährleistung der Sicherheit von Computersystemen verringern. Damit werden die Kosten für Anwendungen, die auf probabilistischen Programmen basieren, gesenkt, zum geistigen und wirtschaftlichen Vorteil unserer Gesellschaft.