Programmation vérifiée à l'intersection des types dépendants et de l'analyse statique
Auteur / Autrice : | Lucas Franceschino |
Direction : | Jean-Pierre Talpin, David Pichardie |
Type : | Thèse de doctorat |
Discipline(s) : | Informatique |
Date : | Soutenance le 10/12/2021 |
Etablissement(s) : | Rennes, École normale supérieure |
Ecole(s) doctorale(s) : | École doctorale Mathématiques et sciences et technologies de l'information et de la communication (Rennes) |
Partenaire(s) de recherche : | Laboratoire : Université de Rennes - École normale supérieure - Rennes - Inria Rennes – Bretagne Atlantique - Tim, Events and Architectures |
Jury : | Président / Présidente : Sandrine Blazy |
Examinateurs / Examinatrices : Karthikeyan Bhargavan, Pierre-Yves Strub, Niki Vazou | |
Rapporteurs / Rapporteuses : Stephan Merz, Nikhil Swamy |
Mots clés
Mots clés contrôlés
Mots clés libres
Résumé
La programmation dirigée par les types ou orientée preuves consiste à écrire et prouver des programmes simultanément. Elle émerge grâce aux langages équipés de types dépendants, et permet une formidable qualité logicielle, au prix de temps passé à écrire des preuves. Inversement, l’analyse statique vise à inférer des propriétés en analysant des programmes existants.Cette thèse étudie la façon dont les systèmes avancés de typage et l’analyse statique peuvent coopérer. Quant à l’analyse statique, nous nous focalisons principalement sur une théorie correcte d’approximation de programmes : l’interprétation abstraite. Notre première contribution démontre l’efficacité de la programmation orientée preuves (avec le langage F*) pour écrire des interpréteurs abstraits formellement vérifiés. De tels interpréteurs existent, mais requièrent une expertise avec les assistants de preuves et en interprétation abstraite, les rendant particulièrement inaccessibles. Notre approche ne nécessite que très peu de preuves manuelles (un ordre de magnitude inférieur en comparaison avec les travaux similaires) : notre implémentation est particulièrement concise et accessible. Nous avons ensuite étudié l’hybridation d’interpréteurs abstraits et de monades de pré-condition la plus faible (WP). Notre approche instrumente des interpréteurs abstraits en des transformeurs de monades de WP. Enfin, nous avons travaillé sur les bénéfices des types dépendants et du système d’effets de F* pour le contrôle de flux d’information (IFC). Nous présentons une librairie permettant de vérifier des politiques d’IFC de manière flexible, entre statique et dynamique.