Precise and modular static analysis by abstract interpretation for the automatic proof of program soundness and contracts inference - Sorbonne Université Accéder directement au contenu
Thèse Année : 2019

Precise and modular static analysis by abstract interpretation for the automatic proof of program soundness and contracts inference

Analyse statique modulaire précise par interprétation abstraite pour la preuve automatique de correction de programmes et pour l’inférence de contrats

Résumé

Ensuring the scalability of static analyzers defined by abstract interpretation poses difficulties. A classical technique known to speed up analyses is the discovery and reuse of summaries for some of the sequences of statements of the source code. In this thesis we focus on a subset of C that does not allow recursion and define a modular analyzer, able to infer, prove and use (to improve the efficiency) such summaries. Our modular analyzer is built on top of an existing C analyzer and is therefore able to handle unions, structures, arrays, memory allocations (static and dynamic), pointers, pointer arithmetics, pointer casts, function calls, string manipulations, ... . String handling is provided by a new abstract domain defined in this thesis. In this thesis we provide a lifting of classical numerical abstract domains to the representation of heterogeneous sets. This lifting can be used for relational domains and maintains only one numerical abstract state, by opposition to partitioning. The last point of interest of this thesis is the definition of an abstract domain able to represent sets of trees with numerically labeled leaves. This abstraction is based on regular and tree regular languages and delegates the handling of numerical constraints to an underlying domain able to represent heterogeneous sets of environments. As the thesis took place in the mopsa project, we provide an overview of some of the results obtained by the mopsa team during the thesis.
Assurer le passage à l’échelle des analyseurs statiques définis par interprétation abstraite pose des difficultés. Une méthode classique d’accélération consiste en la découverte et la réutilisation de contrats satisfaits par certaines commandes du code source. Cette thèse s’intéresse à un sous-ensemble de C qui ne permet pas la récursivité, pour lequel on définit un analyseur modulaire capable d’inférer, de prouver et d'exploiter de tels contrats. Notre analyse est défini au-dessus d’un analyseur C existant et est donc capable de manipuler des types unions, des types structures, des tableaux, des allocations de mémoire (statique et dynamique), des pointeurs, y compris l'arithmétique de pointeur et le transtypage, appels de fonction, des chaînes de caractères, .... La représentation des chaînes de caractère est gérée par un nouveau domaine abstrait défini dans cette thèse. Nous proposons de plus une technique paramétrique de transformation de la sémantique classique des domaines abstraits vers une sémantique d’ensembles hétérogènes. Cette technique ne maintient qu’un seul état abstrait numérique, par opposition au partitionnement. Finalement nous proposons un domaine abstrait capable de représenter des ensembles d’arbres dont les feuilles peuvent contenir des labels numériques. Cette abstraction est basée sur les langages régulier (d'arbre), et délègue une partie de son abstraction à un domaine numérique sous-jacent. Cette thèse s’étant déroulée au sein du projet mopsa, nous donnons donc un aperçu de certains résultats obtenus par l’équipe pendant la thèse.
Fichier principal
Vignette du fichier
JOURNAULT_Matthieu_2019.pdf (5.1 Mo) Télécharger le fichier
Origine : Version validée par le jury (STAR)
Loading...

Dates et versions

tel-02947214 , version 1 (23-09-2020)

Identifiants

  • HAL Id : tel-02947214 , version 1

Citer

Matthieu Journault. Precise and modular static analysis by abstract interpretation for the automatic proof of program soundness and contracts inference. Programming Languages [cs.PL]. Sorbonne Université, 2019. English. ⟨NNT : 2019SORUS152⟩. ⟨tel-02947214⟩
220 Consultations
147 Téléchargements

Partager

Gmail Facebook X LinkedIn More