Reconstructing Z3 Proofs With KeY

Wolfram Pfeifer
2020
KeY dient zur formalen Verifikation spezifizierter Eigenschaften von Java-Programmen.Dafür werden aus der formalen Spezifikation sowie dem Programm-Code Beweisverpflichtungen generiert. Diese werden dann Schritt für Schritt in eine Menge von Formeln der Prädikatenlogik erster Stufe überführt. Da diese allerdings unentscheidbar ist, ist es eine große Herausforderung, einen Beweis für diese Formelmenge zu finden. Moderne SMT-Solver, wie zum Beispiel Z3, sind genau auf diesen Anwendungszweck hin
more » ... timiert. Daher ist schon lange in KeY die Möglichkeit eingebaut, (Teil-)Probleme für SMT-Solver zu übersetzen. Das Ergebnis bei diesem Vorgehen ist ein partieller Beweis in KeY, der von (möglicherweise mehreren) SMT-Antworten komplettiert wird. Da Z3 aber auch Beweise für seine Antworten liefern kann, gibt es hier Verbesserungspotential: In dieser Thesis wird eine Technik zum Nachspielen der Z3 Beweise in KeY vorgestellt, sodass man als Ergebnis einen geschlossenen Beweis in KeY erhält und die SMT-Antworten verworfen werden können. Herausforderungen sowohl systematischer als auch technischer Natur werden identifiziert and Lösungen dafür vogestellt. Schließlich wird auch eine prototypische Implementierung der Technik zum Nachspielen der Beweise zur Verfügung gestellt. Im Evaluations-Teil der Arbeit wird die Leistungsfähigkeit dieser Implementierung sowie die zukünfigen Möglichkeiten erörtert.
doi:10.5445/ir/1000131835 fatcat:vgedfbwqtrfjdaaua2vsftw56m