Compilation vérifiée d'un langage synchrone à flots de données avec machines à etats
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 |
Mots clés
Résumé
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.