Conception et étude d'un langage de programmation adapté à la vérification déductive
Auteur / Autrice : | Paul Patault |
Direction : | Jean-Christophe Filliâtre |
Type : | Projet de thèse |
Discipline(s) : | Informatique |
Date : | Inscription en doctorat le 01/09/2023 |
Etablissement(s) : | université Paris-Saclay |
Ecole(s) doctorale(s) : | École doctorale Sciences et technologies de l'information et de la communication (Orsay, Essonne ; 2015-....) |
Partenaire(s) de recherche : | Laboratoire : Laboratoire Méthodes Formelles |
référent : Université Paris-Saclay. Faculté des sciences d’Orsay (Essonne ; 2020-....) |
Mots clés
Résumé
Aujourd'hui, la vérification déductive de programmes, c'est-à-dire la preuve formelle, par des outils mécanisés, qu'un programme est conforme à une spécification écrite dans un langage mathématique, s'est répandue bien au-delà du monde académique. Les outils de vérification déductive, tels que Dafny, Why3, Spark/Ada, Frama-C, etc., trouvent leur utilisation de plus en plus dans le milieu industriel. Cela met en avant la nécessité de rendre ces outils encore plus accessibles aux développeurs, ce qui est l'objectif de cette thèse. Cette thèse explore trois grands axes de recherche. En premier lieu, il s'agit de proposer un langage de programmation conçu dès le départ pour faciliter le développement de programmes vérifiés, sans pour autant sacrifier sa puissance et son expressivité. Il est incontournable de proposer dans ce langage des structures de contrôle avancées, des moyens de modularité et d'abstraction flexibles, des structures de données mutables aussi bien qu'applicatives. Par ailleurs, on aura besoin d'un langage de spécification puissant, qui inclut des éléments exécutables (code fantôme), des moyens de décrire (en termes aussi simples que possible) le comportement du programme vis-à-vis de l'état mutable, des outils de raffinement de spécification, tout en offrant la souplesse de ne pas avoir à décrire explicitement le comportement du code là où il se suffit à lui-même. Enfin, il est important que la démarche de vérification soit la plus automatisée possible. Aujourd'hui, les outils de démonstration automatique dans la logique classique du premier ordre offrent le meilleur équilibre entre puissance et expressivité. La conception du langage et de ses procédures de génération de conditions de vérification doivent exploiter au mieux ces outils, en produisant des obligations de preuve adaptées. Cela passe par l'utilisation de théories logiques décidables (arithmétique linéaire, tableaux applicatifs, congruence, etc.) et de transformations logiques en amont des démonstrateurs (compression et déroulement, découpage, preuves par induction, etc.).