Thèse en cours

Conception et étude d'un langage de programmation adapté à la vérification déductive

FR  |  
EN
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-....)

Résumé

FR  |  
EN

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.).