Master Thesis Topics
- Bounded Model Checking for Fault-tolerant Distributed Algorithms
Fault-tolerant distributed algorithms are not the ones that can be easily analysed with software model checkers. One reason for that is reach non-determinism exposed in system executions. The simplest example is a non-deterministic choice of an element from a set as written in the process code. Another example is the non-determinstic scheduling policy, that is, at each step the scheduler can pick an arbitrary process to continue the execution. Finally, when the faults come into play, they dramatically change executions in the system. Recently, we discovered a theoretically efficient way to apply bounded model checking to an important class of fault-tolerant algorithms. Our preliminary experiments showed that this technique allows us to verify the algorithms that were too large for the standard model checkers. We have many ideas of an efficient implementation of this technique. We believe that experimental results with such a tool may result in several publications at prestigious international conferences. To implement the tool, one should be familiar with (or willing to learn) SAT, SMT, and OCaml.
An Interactive Spin (NuSMV) Debugger
Model checkers usually support interactive model execution using either random simulation or simulation guided by a counterexample. This mode is designed as a backend to a sophisticated graphical user interface, which as a rule is postponed for a future implementation. Thus a user is left with a choice of debugging a model of a concurrent program (or of a distributed algorithm) mentally or with a help of an awkward interactive text interface. The goal of this work is to develop an interactive debugger for a well-known model checker like Spin on top of an established IDE, e.g. Eclipse. The debugger should support common features such as breakpoints, next step, run to a specified location, display of current variables, display of processes instruction counters. However, the debugger should support two more features that are not present in the traditional debuggers of sequential programs. These are a backward step of a model and a non-deterministic choice between several steps.
A Translator of Distributed Algorithms to Spin (NuSMV, UPPAAL) with Support for User Provided Abstractions
Currently, if one wants to verify or simulate a distributed algorithm in a model checker, e.g. Spin, NuSMV, UPPAAL, she has to perform all the translation from one description to another manually by choosing proper abstractions. Though some abstractions could be non-trivial and require human ingenuity, usually people start with a well-known set of techniques. Thus, there is a need in a translation tool that receives a distributed algorithm written in a fixed language on its input as well as a set of abstraction annotations and then translates the algorithm into the language of Spin (NuSMV, UPPAAL) by applying the abstractions. The goal of this work is to provide the distributed algorithms community with a tool that performs the first step of model extraction in an automatic way.