Deductive program verification is the task of formally proving that a piece of software satisfies its formally specified requirements. This task is undecidable in theory and quite difficult to make work well automatically in practice.
In the course of the verification process, a variety of intermediate formulas are produced which must be proved. They incorporate different theories (arithmetics, heaps, sequences, sets, user-defined data types, ...). Currently the automatic prover does not consider the proof situation, but applies the same strategy to all open proof goals. In many cases, that entails a choice that is not optimal; selecting a strategy for every goal tailored to one strategies could have led to shorter or more closed proofs.
We assume that there is a high potential for machine learning techniques that analyse proof situations and classify them into different proof classes (one might, e.g., be "mainly arithmetic with only few heap assignments").
In this thesis, you will ultimately extend the KeY solver with classification step that chooses the right strategy settings for a given proof situation.
This includes definition of a suitable feature set that discriminiates different proof situations well; and the implementation of the feature extraction in KeY.
You will collect data by running KeY on the regression test set and use different standard ML techniques to construct a classifier. Possible techniques include decision trees, support vector machines or neural networks.
Ideally, you have a basic background in machine learning and formal systems (e.g., from the respective elective lectures from the KIT curricula).
You are interested in applying existing ML frameworks (e.g. Scikit Learn) to a new field, and have experience in Java programming to integrate feature extraction into KeY.
If you are interested, contact Mattias Ulbrich.