Detailseite
Projekt Druckansicht

Automatische Analyse nebenläufiger Pointerprogramme

Fachliche Zuordnung Softwaretechnik und Programmiersprachen
Theoretische Informatik
Förderung Förderung von 2015 bis 2020
Projektkennung Deutsche Forschungsgemeinschaft (DFG) - Projektnummer 276397324
 
Erstellungsjahr 2020

Zusammenfassung der Projektergebnisse

Throughout the funding period of the ATTESTOR project, our work on formal methods for pointermanipulating programs has advanced the state-of-the-art in several aspects. We developed a deeper understanding of the connection between state-space abstraction based on graph rewriting and symbolic representation of program states through graph grammars and separation logic, respectively. This allows recasting language inclusion as logical entailment and vice versa. In particular, exploiting the aforementioned relationship led to novel decision procedures for large fragments of symbolic heap separation logic. Furthermore, we considered extensions of graph grammars beyond context-freeness that enable reasoning about intricate shape-numeric properties such as balancedness. The applicability of our methods was demonstrated by an implementation supporting the verification of both basic memory safety and advanced functional properties of Java pointer programs. In the case of property violations, it provides valuable feedback to the user in the form of realisable counterexamples and concrete inputs allowing to reproduce the underlying issue. Moreover, we were able to develop a basic framework for thread-modular heap abstraction and analysis of concurrent pointer programs using the concept of permissions. However, our original goals regarding a more adaptive handling of permissions and the support for more advanced synchronisation mechanisms have not been fully accomplished. One reason was that the amount of information that is required to ensure a sufficient degree of precision in the permission information grows abundantly. Another reason was the increasing interest in probabilistic programs and particularly randomised algorithms manipulating dynamic data structures. We developed a quantitative separation logic (QSL) which conservatively extends separation logic to enable quantitative reasoning about probabilistic pointer programs at source-code level. For example, QSL has been successfully applied to verify shuffling algorithms and a simplified version of the melding procedure of randomised meldable heaps. This logic, which allows to reason about numerical values such as the expected (or average) size of data structures, should most likely be considered as the most notable theoretical result of our project. It initiated a promising strand of research that attracted much interest in the community, as witnessed by other recently published works.

Projektbezogene Publikationen (Auswahl)

 
 

Zusatzinformationen

Textvergrößerung und Kontrastanpassung