Intelligente Wiederverwendung von Beweisen (Bachelorarbeit, Praxismodul, Projektmodul, studentische Hilfskraft) Beweise für Eigenschaften von Software gehen oft schief. Sei es, dass die Software selbst noch einen Bug hat, die angenommene Eigenschaft des Programms nicht ganz stimmt, oder z.B. die Invariante einer Schleife falsch definiert war. Deshalb müssen nach Korrekturen oder auch, wenn die Software Software an neue Anforderungen angepasst wurde, Beweis(versuch)e erneut gemacht werden. Die Grundidee dabei ist, die alten Beweisversuche als Vorlage für den neuen zu verwenden (da die Beweisidee immer noch ungefähr dieselbe ist), und die Beweisschritte nachzuspielen“. Je erfolgreicher dies ist, und je mehr Abweichungen ” dabei toleriert werden, desto mehr Zeit kann beim Beweisen eingespart werden. Das KIV-System ist ein interaktiver Beweiser, der in Scala programmiert ist. Scala ist eine sehr moderne, auf der JVM basierenden Programmiersprache, die objektorientierten Konzepte von Java um viele neue Konzepte erweitert (u.a. Funktionen als Parameter, interfaces die Code enhalten usw.) In KIV sind Beweisbäume des Sequenzenkalküls (oder auch des Hoare-Kalküls) eine explizite Datenstruktur (die, wie rechts zu sehen, graphisch angezeigt werden können). Eine einfache Strategie zum Nachspielen von Beweisen ist in KIV programmiert. Die Aufgabenstellung für die Arbeit ist es, diese Strategie so zu erweitern, dass sie mehr Abweichungen zwischen der korrigierten neuen Aussage und der alten Aussage, für die ein Teilbeweis vorliegt, tolerieren kann. Eine erste Erweiterung betrifft Änderungen an den verwendeten Variablen. Für einen Praxismodul wäre die Realisierung einer guten Lösung dieses Problems ausreichend, für eine Bachelorarbeit würde man weitere Änderungsmuster ansehen, z.B. die Anpassung an geänderte Programme, und zum Schluss den Fortschritt des Ergebnisses evaluieren. Aufgabenstellung: • Einarbeitung in Scala und die relevante Datenstruktur Beweisbaum in KIV. • Erweiterung der Strategie zum einen Mechanismus, der geänderte Variablen erkennt und entsprechend den neuen Beweis anpasst. • für Bachelorarbeit: Erkennen anderer typischer Änderungsmuster (z.Bsp. Behauptung verstärkt, Programm geändert) und entsprechende Anpassung der Wiederverwendungsstrategie. Systematische Evaluation an Beispielen. Hinweise: • Programmierkenntnisse in Java (Eclipse) • Interesse für Logik • Grundverständnis für Prädikatenlogik und Hoare-Kalkül für Programme (z.B. Bachelor-Vorlesung) Beginn: Ansprechpartner: Raum: Email: ab sofort möglich Dr. Gerhard Schellhorn, Jörg Pfähler 3016, 3014 [email protected] [email protected]