{'fraction_non_alphanumeric': 0.01642512077294686, 'fraction_numerical': 0.0, 'mean_word_length': 5.860927152317881, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
Efficient Verification of Multi-Threaded Programs

Given its pervasiveness, it is unfortunate that writing multi-threaded software is an intricate and tedious task due to a multitude of thread interactions. Model checking approaches that are based on formal specifications can significantly improve programmers productivity by allowing systematically and exhaustively exploring program behaviours and checking their correctness. However, efficient model checking is inhibited by the socalled state explosion problem. In this thesis, we propose two promising approaches to cope with this problem by reducing the number of program states that have to be explored transaction summarization and may-happen-in-parallel information. We show that especially a priori identified transactions can significantly improve the efficiency of compositional verification. Our experimental evaluation indicate that the approaches compare favourably with state-of-the-art verifiers and can lead to two orders of magnitude reduction of verification time.