Thèse en cours

Compilation vérifiée d'un langage synchrone à flots de données avec machines à etats

FR  |  
EN

Accès à la thèse

AttentionLa soutenance a eu lieu le 13/10/2023. Le document qui a justifié du diplôme est en cours de traitement par l'établissement de soutenance.
Auteur / Autrice : Basile Pesin
Direction : Marc Pouzet
Type : Projet de thèse
Discipline(s) : Informatique
Date : Inscription en doctorat le
Soutenance le 13/10/2023
Etablissement(s) : Université Paris sciences et lettres
Ecole(s) doctorale(s) : École doctorale Sciences mathématiques de Paris centre (Paris ; 2000-....)
Partenaire(s) de recherche : Laboratoire : DIENS - Département d'informatique de l'École normale supérieure
établissement opérateur d'inscription : École normale supérieure (Paris ; 1985-....)
Jury : Président / Présidente : Florence Maraninchi
Examinateurs / Examinatrices : Marc Pouzet, Timothy Bourke, Magnus Myreen, Robert De simone, Julien Forget, Carlos Agon, Xavier Leroy
Rapporteur / Rapporteuse : Magnus Myreen, Robert De simone

Résumé

FR  |  
EN

Les systèmes embarqués critiques sont souvent spécifiés par des formalismes schéma-bloc. SCADE Suite est un environnement de développement pour ces systèmes utilisé depuis vingt ans dans l'industrie avionique, nucléaire, automobile, et autres domaines critiques. Son formalisme graphique se traduit en une représentation textuelle basée sur le langage synchrone à flots de données Lustre, et incorpore des fonctionnalités de langages plus récents comme Lucid Synchrone. En Lustre, un programme est défini comme un ensemble d'équations qui spécifie la relation entre entrées et sorties du programme à chaque instant. Le langage des expressions inclut des opérateurs arithmétiques et logiques, des opérateurs de délais qui permettent d'accéder à la précédente valeur d'une expression, et des opérateurs d'échantillonage qui permettent à certaines valeurs d'être calculées moins souvent que d'autres. Le projet Vélus est une formalisation d'un sous-ensemble du langage Scade 6 dans l'assistant de preuves Coq. Il propose une formalisation de la sémantique dynamique du langage sous forme de relations entre flots infinis d'entrées et de sorties. Il inclut aussi un compilateur qui utilise CompCert, un compilateur vérifié pour C, pour produire du code assembleur. Enfin, il fournit une preuve de bout-en-bout que ce compilateur préserve la sémantique à flots de données des programmes sources. Cette thèse étends Vélus en y ajoutant des blocs de contrôles présents dans Scade 6 et Lucid Synchrone. Cela inclut une construction qui contrôle l'activation des équations selon une condition (switch), une construction permettant d'accéder à la valeur précédente d'une variable (last), une construction qui réinitialise les opérateurs de délai (reset), et, enfin, des machines à états hiérarchiques, qui permettent la spécification de comportements modaux complexes. Toutes ces constructions peuvent être arbitrairement imbriquées dans un programme. Nous étendons la sémantique de Vélus avec une nouvelle spécification pour ces constructions qui encode leur comportement par l'échantillonnage. Nous proposons un schéma d'induction générique pour les programmes bien formés qui permet de prouver certaines propriétés du modèle sémantique, comme son déterminisme ou l'adhérence des valeurs aux types déclarés. Enfin, nous décrivons la compilation de ces constructions telle qu'implémentée dans Vélus. Nous montrons que le modèle de compilation qui réécrit ces constructions dans le langage noyau peut être implémenté, spécifié et vérifié dans Coq. La compilation de last et reset nécessite des changements plus profonds dans les langages intermédiaires de Vélus.