Thèse soutenue

Synthèse d'invariants : une approche programmation par contraintes basée sur l'abstraction zonotopique

FR  |  
EN
Auteur / Autrice : Bibek Kabi
Direction : Sylvie Putot
Type : Thèse de doctorat
Discipline(s) : Informatique, données, IA
Date : Soutenance le 24/06/2020
Etablissement(s) : Institut polytechnique de Paris
Ecole(s) doctorale(s) : École doctorale de l'Institut polytechnique de Paris
Partenaire(s) de recherche : établissement opérateur d'inscription : École polytechnique (Palaiseau, Essonne ; 1795-....)
Laboratoire : Laboratoire d'informatique de l'École polytechnique (Palaiseau ; 1988-....)
Jury : Président / Présidente : Laurent Fribourg
Examinateurs / Examinatrices : Sylvie Putot, Charlotte Truchet, Michel Rueher, Éric Goubault, Khalil Ghorbal, Antoine Miné
Rapporteur / Rapporteuse : Charlotte Truchet, Michel Rueher

Résumé

FR  |  
EN

Les systèmes dynamiques sont des modèles mathématiques pour décrire l'évolution temporelle de l'état d'un système. Il y a deux classes de systèmes dynamiques pertinentes à cette thèse : les systèmes discrets et les systèmes continus. Dans les systèmes dynamiques discrets (ou les programmes informatiques classiques), l'état évolue avec un pas de temps discrets. Dans les systèmes dynamiques continus, l'état du système est fonction du temps continu, et son évolution caractérisée par des équations différentielles. Étant donné que ces systèmes peuvent prendre des décisions critiques, il est important de pouvoir vérifier des propriétés garantissant leur sûreté. Par exemple, sur un programme, l'absence de débordement arithmétique. Dans cette thèse, nous développons un cadre pour la vérification automatique des propriétés de sûreté des programmes. Un élément clé de cette vérification est la preuve de propriétés invariantes. Nous développons ici un algorithme pour synthétiser des invariants inductifs (des propriétés vraies pour l'état initial, qui sont stables dans l'évolution des états du programme, donc sont toujours vraies par récurrence) pour des programmes numériques. L’interprétation abstraite (IA) est une approche traditionnelle pour la recherche d’invariants inductifs des programmes numériques. L'IA interprète les instructions du programme dans un domaine abstrait (par exemple intervalles, octogones, polyèdres, zonotopes), domaine qui est choisi en fonction des propriétés à prouver. Un invariant inductif peut être calculé comme limite possiblement infinie des itérées d'une fonctionnelle croissante. L'analyse peut recourir aux opérateurs d'élargissement pour forcer la convergence, au détriment de la précision. Si l'invariant n'est pas prouvé, une solution standard est de remplacer le domaine par un nouveau domaine abstrait davantage susceptible de représenter précisément l'invariant.La programmation par contraintes (PPC) est une approche alternative pour synthétiser des invariants, traduisant un programme en contraintes, et les résolvant en utilisant des solveurs de contraintes. Les contraintes peuvent opérer sur des domaines soit discrets, soit continus. La programmation classique par contraintes continues est basée sur un domaine d'intervalle, mais peut approximer une forme invariante complexe par une collection d’éléments abstraits. Une approche existante combine IA et PPC, raffinant de façon itérative, par découpage et contraction, une collection d’éléments abstraits, jusqu'à obtenir un invariant inductif. Celle-ci a été initialement présentée en combinaison avec intervalles et octogones. La nouveauté de notre travail est d'étendre ce cadre au domaine abstrait des zonotopes, un domaine sous-polyédrique qui présente un bon compromis en terme de précision et de coût. Cette extension demande de définir de nouveaux opérateurs sur les zonotopes, pour permettre le découpage et la contraction, ainsi que d'adapter l'algorithme générique. Nous introduisons notamment un nouvel algorithme de découpage de zonotopes basé sur un pavage par sous-zonotopes et parallélotopes. Nous proposons également des alternatives à certains opérateurs existants sur les zonotopes, mieux adaptés que les existants à la méthode. Nous avons implémenté ces opérations dans la bibliothèque APRON et avons testé l'approche sur des programmes présentant des invariants complexes, éventuellement non convexes. Les résultats démontrent un bon compromis par rapport à l'utilisation de domaines simples, comme les intervalles et les octogones, ou d'un domaine plus couteux comme les polyèdres. Enfin, nous discutons de l'extension de l'approche pour trouver des ensembles d'invariants positifs et négatifs pour des systèmes dynamiques continus.