Project Details
Projekt Print View

Automated Termination and Complexity Analysis of Imperative Programs

Subject Area Theoretical Computer Science
Term from 2013 to 2024
Project identifier Deutsche Forschungsgemeinschaft (DFG) - Project number 235950644
 
Our goal is to analyze the termination and complexity of programs in imperative languages like Java and C automatically. Such analyses are crucial for software construction and verification. In the first Phase of the project we developed the following methodology: First, in the front-end of our approach, a symbolic execution graph is automatically generated from the program. This graph is a finite representation of all possible executions of the Java or C program.Afterwards, a program in a simple language (e.g., an integer Transition system or a term rewrite system) is automatically generated from the graph. Finally, the termination or complexity of this generated simple program is analyzed (in the back-end of our approach). The results of the first project phase show the success of this methodology. In the proposed second phase, the approach will be developed further in order to make it applicable in practice. To this end, the project will tackle the following tasks: (A) There are important classes ofprograms where the previously developed techniques for Termination analysis cannot be used. Thus, these techniques have to be Extended accordingly and their modularity needs to be improved in order to make them applicable to large programs. (B) We showed that thetechniques for proving termination can be adapted such that they can infer upper complexity bounds for the runtime of programs. However, the adaptions developed in the first project phase often result in unnecessarily high bounds. Thus, the precision and the applicability of the approach need to be improved significantly. (C) In the first Phase of the project, we also developed techniques to compute lower complexity bounds for the runtime of the back-end programs. Now the goal is to develop these techniques further in order to use them forlanguages like Java and C in the front-end as well. (D) All contributions developed in (A) – (C) will be implemented in our verification tools AProVE, KoAT, and LoAT. Their power andperformance will be evaluated empirically and compared to other Tools in extensive experiments.
DFG Programme Research Grants
 
 

Additional Information

Textvergrößerung und Kontrastanpassung