Employing decision procedures for automatic program analysis and verification of heap-manipulating

94
Опубликовано 7 сентября 2016, 16:59
In my thesis, I developed techniques for combining automated reasoning tools e.g., theorem provers, decision procedures) with abstract interpretation and applied these techniques to programs that manipulate dynamically allocated memory. The first part of my research provides algorithms for computing abstract representation of a set of concrete program states described by a formal specification. These algorithms rely on automated reasoning tools for extracting certain information from the specification. While these algorithms are applicable to a wide range of analysis problems, the main focus of my thesis is analysis of programs that manipulate recursive data structures, such as singly-linked lists, doubly-linked lists, trees, etc. Specifications of such programs often involve reachability properties. For example, to establish that a memory configuration contains no garbage elements, we can show that every element is reachable from some program variable. Other examples include acyclicity and disjointness of data-structures. The second part of my research provides a way to automatically reason about interesting reachability properties, using a new decidable logic, called LRP. Automated reasoning about reachability is usually a difficult task, in particular, even simple logics become undecidable when reachability is added. Unlike these logics, LRP is both decidable and expressive enough to describe important properties of data-structures with an arbitrary number of pointer fields and of arbitrary shapes. A decision procedure for LRP can be employed in the algorithms developed in the first part of this research. This allows us, for instance, to compute abstract representation of the effect of a method call, provided that this method's specification is expressed in LRP. Altogether, these results provide a way to perform modular program analysis of an important class of programs that manipulate recursive data structures.
автотехномузыкадетское