Analyse statique modulaire précise par interprétation abstraite pour la preuve automatique de correction de programmes et pour l’inférence de contrats
Auteur / Autrice : | Matthieu Journault |
Direction : | Antoine Miné |
Type : | Thèse de doctorat |
Discipline(s) : | Informatique |
Date : | Soutenance le 21/11/2019 |
Etablissement(s) : | Sorbonne université |
Ecole(s) doctorale(s) : | École doctorale Informatique, télécommunications et électronique de Paris (1992-...) |
Partenaire(s) de recherche : | Laboratoire : LIP6 (1997-....) |
Jury : | Président / Présidente : Emmanuel Chailloux |
Examinateurs / Examinatrices : Pascal Sotin, Tristan Le Gall | |
Rapporteur / Rapporteuse : Sandrine Blazy, Andy King |
Mots clés
Mots clés contrôlés
Résumé
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.