Shape Abstractions with Support for Sharing and Disjunctions - Archive ouverte HAL Accéder directement au contenu
Thèse Année : 2018

Shape Abstractions with Support for Sharing and Disjunctions

Abstractions de la Forme des Structures de Données Supportant Partage et Disjonctions

Résumé

Shape analyses rely on expressive families of logical properties to infer complex structural in- variants, such that memory safety, structure preservation and other memory properties of pro- grams dealing with dynamic data structures can be automatically verified. Many such analyses manipulate abstract memory states that consist of separating conjunctions of basic predicates describing atomic blocks or summary predicates that describe unbounded heap regions like lists or trees using inductive definitions. Moreover, they use finite disjunctions of abstract memory states in order to take into account dissimilar shapes. Although existing analyses enable local reasoning of memory regions, they do, however, have the following issues: (1) The summary predicates are not expressive enough to describe precisely all the dynamic data structures. In particular, a fairly large number of data structures with unbounded sharing, such as graphs, cannot be described inductively in a local manner; (2) Abstract operations that read or write into summaries rely on materialization of memory cells. The materialization operation in general creates new disjunctions, yet the size of disjunctions should be kept small for the sake of efficiency. However, local predicates are not enough to determine the right set of disjuncts that should be clumped together and to define precise abstract join and widen operations. In this thesis, we study separating conjunction-based shape predicates and the related abstract operations, in particular, abstract joining and widening operations that lead to critical modifi- cations of abstract states. We seek a lightweight way to enable some global reasoning in existing shape analyses such that shape predicates are more expressive for abstracting data structures with unbounded sharing and disjuncts can be clumped precisely and efficiently. We propose a shape abstraction based on set variables that when integrated with inductive definitions enables the specification and shape analysis of structures with unbounded sharing. We implemented the shape analysis domain by combining a separation logic-based shape abstract domain of the MemCAD analyzer and a set abstract domain, where the set abstractions are used to track unbounded pointer sharing properties. Based on this abstract domain, we analyzed a group of programs dealing with adjacency lists of graphs. We design a general semantic criterion to clump abstract memory states based on their silhouettes that express global shape properties, i.e., clumping abstract states when their sil- houettes are similar. Silhouettes apply not only to the conservative union of disjuncts but also to the weakening of separating conjunctions of memory predicates into inductive summaries. Our approach allows us to define union and widening operators that aim at preserving the case splits that are required for the analysis to succeed. We implement this approach in the Mem- CAD analyzer and evaluate it on real-world C libraries for different data structures, including doubly-linked lists, red-black trees, AVL-trees and splay-trees. The experimental results show that our approach is able to keep the size of disjunctions small for scalability and preserve case splits that takes into account dissimilar shapes for precision.
L’analyse statique des programmes permet de calculer automatiquement des propriétés sé- mantiques valides pour toutes les exécutions. En particulier, dans le cas des programmes ma- nipulant des structures de données complexes en mémoire, l’analyse statique peut inférer des invariants utiles pour prouver la sûreté des accès à la mémoire ou la préservation d’invariants structurels. Beaucoup d’analyses de ce type manipulent des états mémoires abstraits représen- tés par des conjonctions en logique de séparation dont les prédicats de base décrivent des blocs de mémoire atomiques ou bien résument des régions non-bornées de la mémoire telles que des listes ou des arbres. De telles analyses utilisent souvent des disjonctions finies d’états mémoires abstraits afin de mieux capturer leurs dissimilarités. Les analyses existantes permettent de raisonner localement sur les zones mémoires mais présentent les inconvénients suivants: (1) Les prédicats inductifs ne sont pas assez expressifs pour décrire précisément toutes les structures de données dynamiques, du fait de la présence de pointeurs vers des parties arbitraires (i.e., non-locales) de ces structures; (2) Les opérations abstraites correspondant à des accès en lecture ou en écriture sur ces prédi- cats inductifs reposent sur une opération matérialisant les cellules mémoires correspon- dantes. Cette opération de matérialisation crée en général de nouvelles disjonctions, ce qui nuit à l’impératif d’efficacité. Hélas, les prédicats exprimant des contraintes de structure locale ne sont pas suffisants pour déterminer de façon adéquate les ensembles de disjonc- tions devant être fusionnés, ni pour définir les opérations d’union et d’élargissement d’états abstraits. Cette thèse est consacrée à l’étude et la mise au point de prédicats en logique de séparation permettant de décrire des structures de données dynamiques, ainsi que des opérations abstraites afférentes. Nous portons une attention particulière aux opérations d’union et d’élargissement d’états abstraits. Nous proposons une méthode pratique permettant de raisonner globalement sur ces états mémoires au sein des méthodes existantes d’analyse de propriétés structurelles et autorisant la fusion précise et efficace de disjonctions.
Fichier principal
Vignette du fichier
thesis-final.pdf (1.74 Mo) Télécharger le fichier
Origine : Fichiers produits par l'(les) auteur(s)
Loading...

Dates et versions

tel-01963082 , version 1 (21-12-2018)
tel-01963082 , version 2 (19-02-2020)

Identifiants

  • HAL Id : tel-01963082 , version 1

Citer

Huisong Li. Shape Abstractions with Support for Sharing and Disjunctions. Programming Languages [cs.PL]. ENS Paris - Ecole Normale Supérieure de Paris; PSL University, 2018. English. ⟨NNT : ⟩. ⟨tel-01963082v1⟩
164 Consultations
181 Téléchargements

Partager

Gmail Facebook X LinkedIn More