Verification of Red-Black Trees in KeY - A Case Study in Deductive Java Verification

Saved in:
Bibliographic Details
Title: Verification of Red-Black Trees in KeY - A Case Study in Deductive Java Verification
Authors: Stuber, Johanna
Contributors: Beckert, Bernhard, Ulbrich, Mattias, Pfeifer, Wolfram
Publisher Information: Karlsruher Institut für Technologie
Publication Year: 2023
Collection: KITopen (Karlsruhe Institute of Technologie)
Subject Terms: KeY, Java Modeling Language, deductive verification, red-black trees, ddc:004, DATA processing & computer science, info:eu-repo/classification/ddc/004
Description: Während das ausführliche Testen von Software das Auftreten von Fehlern unwahrscheinlicher macht, kann mit formaler Verifikation durch Beweise garantiert werden, dass sich ein Programm für sämtliche Eingaben korrekt verhält. Besonders für tausendfach verwendete Grundelemente wie die Datenstrukturen und Algorithmen einer Standardbibliothek ist eine formale Verifikation daher erstrebenswert. In dieser Fallstudie spezifizieren und verifizieren wir eine Java-Implementierung von Rot-Schwarz-Bäumen mit KeY. KeY ist ein Tool zur formalen Verifikation von Java-Programmen, und verwendet dabei Dynamic Frames für Aussagen über Speicherbereiche, also das Framing. Rot-Schwarz-Bäume sind eine beliebte Datenstruktur für das effiziente Speichern und Auslesen von Elementen und sind zum Beispiel in der Klasse java.util.TreeMap der Java Class Library umgesetzt. In beiden Bereichen existieren verschiedenste Fallstudien – die in KeY betrachten jedoch kaum Baumstrukturen und existierende Rot-Schwarz-Baum-Verifizierungen gehen auf andere Weise als KeY mit Framing um. In dieser Arbeit kommen wir zu dem Schluss, dass die Verifikation von Baumstrukturen mit Dynamic Frames möglich ist, jedoch im Vergleich zu anderen Ansätzen viel zusätzlichen Aufwand mit sich bringt. Darüber hinaus erkunden wir generelle Stärken und Schwächen von KeY und machen einige Vorschläge zur Verbesserung der Benutzbarkeit. Außerdem testen wir mit JML Scripts und Proof Caching neue Methoden zur Beweis-Automatisierung und -Persistierung.
Document Type: bachelor thesis
master thesis
File Description: application/pdf
Language: English
Relation: https://publikationen.bibliothek.kit.edu/1000162878; https://publikationen.bibliothek.kit.edu/1000162878/151443866; https://doi.org/10.5445/IR/1000162878
DOI: 10.5445/IR/1000162878
Availability: https://publikationen.bibliothek.kit.edu/1000162878
https://publikationen.bibliothek.kit.edu/1000162878/151443866
https://doi.org/10.5445/IR/1000162878
Rights: KITopen License, https://publikationen.bibliothek.kit.edu/kitopen-lizenz ; info:eu-repo/semantics/openAccess
Accession Number: edsbas.27EDD9E2
Database: BASE
Description
Abstract:Während das ausführliche Testen von Software das Auftreten von Fehlern unwahrscheinlicher macht, kann mit formaler Verifikation durch Beweise garantiert werden, dass sich ein Programm für sämtliche Eingaben korrekt verhält. Besonders für tausendfach verwendete Grundelemente wie die Datenstrukturen und Algorithmen einer Standardbibliothek ist eine formale Verifikation daher erstrebenswert. In dieser Fallstudie spezifizieren und verifizieren wir eine Java-Implementierung von Rot-Schwarz-Bäumen mit KeY. KeY ist ein Tool zur formalen Verifikation von Java-Programmen, und verwendet dabei Dynamic Frames für Aussagen über Speicherbereiche, also das Framing. Rot-Schwarz-Bäume sind eine beliebte Datenstruktur für das effiziente Speichern und Auslesen von Elementen und sind zum Beispiel in der Klasse java.util.TreeMap der Java Class Library umgesetzt. In beiden Bereichen existieren verschiedenste Fallstudien – die in KeY betrachten jedoch kaum Baumstrukturen und existierende Rot-Schwarz-Baum-Verifizierungen gehen auf andere Weise als KeY mit Framing um. In dieser Arbeit kommen wir zu dem Schluss, dass die Verifikation von Baumstrukturen mit Dynamic Frames möglich ist, jedoch im Vergleich zu anderen Ansätzen viel zusätzlichen Aufwand mit sich bringt. Darüber hinaus erkunden wir generelle Stärken und Schwächen von KeY und machen einige Vorschläge zur Verbesserung der Benutzbarkeit. Außerdem testen wir mit JML Scripts und Proof Caching neue Methoden zur Beweis-Automatisierung und -Persistierung.
DOI:10.5445/IR/1000162878