Conference Papers Year : 2017

Vérification de la génération modulaire du code impératif pour Lustre

Abstract

Les langages synchrones sont utilisés pour programmer des logiciels de contrôle-commande d'applications critiques. Le langage Scade, utilisé dans l'industrie pour ces applications, est fondé sur le langage Lustre introduit par Caspi et Halbwachs. On s'intéresse ici à la formalisation et la preuve, dans l'assistant de preuve Coq, d'une étape clef de la compilation : la traduction de programmes Lustre vers des programmes d'un langage impératif. Le défi est de passer d'une sémantique synchrone flot de données, où un programme manipule des flots, à une sémantique impérative, où un programme manipule la mémoire de façon séquentielle. Nous spécifions et vérifions un générateur de code simple qui gère les traits principaux de Lustre : l'échantillonnage, les noeuds et les délais. La preuve utilise un modèle sémantique intermédiaire qui mélange des traits flot de données et impératifs et permet de définir un invariant inductif essentiel. Nous exploitons la formalisation proposée pour vérifier une optimisation classique qui fusionne des structures conditionnelles dans le code impératif généré.
Fichier principal
Vignette du fichier
bourke (1).pdf (616.5 Ko) Télécharger le fichier
Rustre.Common.html (152.52 Ko) Télécharger le fichier
Rustre.Correctness.IsPresent.html (34.1 Ko) Télécharger le fichier
Rustre.Correctness.MemoryCorres.html (138.65 Ko) Télécharger le fichier
Rustre.Correctness.Proper.html (46.13 Ko) Télécharger le fichier
Rustre.Correctness.html (556.21 Ko) Télécharger le fichier
Rustre.Dataflow.Clocking.Parents.html (36.93 Ko) Télécharger le fichier
Rustre.Dataflow.Clocking.Properties.html (30.92 Ko) Télécharger le fichier
Rustre.Dataflow.Clocking.html (57.43 Ko) Télécharger le fichier
Rustre.Dataflow.IsDefined.Decide.html (34.1 Ko) Télécharger le fichier
Rustre.Dataflow.IsDefined.html (41.25 Ko) Télécharger le fichier
Rustre.Dataflow.IsFree.Decide.html (109.46 Ko) Télécharger le fichier
Rustre.Dataflow.IsFree.html (35.31 Ko) Télécharger le fichier
Rustre.Dataflow.IsVariable.Decide.html (32.52 Ko) Télécharger le fichier
Rustre.Dataflow.IsVariable.html (39.65 Ko) Télécharger le fichier
Rustre.Dataflow.MemSemantics.html (222.93 Ko) Télécharger le fichier
Rustre.Dataflow.Memories.html (19.99 Ko) Télécharger le fichier
Rustre.Dataflow.NoDup.html (35.29 Ko) Télécharger le fichier
Rustre.Dataflow.Ordered.html (68.82 Ko) Télécharger le fichier
Rustre.Dataflow.Semantics.html (323.42 Ko) Télécharger le fichier
Rustre.Dataflow.Stream.html (21.53 Ko) Télécharger le fichier
Rustre.Dataflow.Syntax.html (24.1 Ko) Télécharger le fichier
Rustre.Dataflow.WellFormed.Decide.html (102.82 Ko) Télécharger le fichier
Rustre.Dataflow.WellFormed.html (62.73 Ko) Télécharger le fichier
Rustre.Dataflow.html (9.01 Ko) Télécharger le fichier
Rustre.Example.html (128.39 Ko) Télécharger le fichier
Rustre.Memory.html (27.79 Ko) Télécharger le fichier
Rustre.Minimp.Equiv.html (34.94 Ko) Télécharger le fichier
Rustre.Minimp.FuseIfte.html (176.94 Ko) Télécharger le fichier
Rustre.Minimp.Semantics.html (122.3 Ko) Télécharger le fichier
Rustre.Minimp.Syntax.html (43.94 Ko) Télécharger le fichier
Rustre.Minimp.html (7.07 Ko) Télécharger le fichier
Rustre.Nelist.html (110.3 Ko) Télécharger le fichier
Rustre.Translation.html (49.24 Ko) Télécharger le fichier
index.html (289.9 Ko) Télécharger le fichier
toc.html (20.92 Ko) Télécharger le fichier
Origin Files produced by the author(s)
Origin Files produced by the author(s)
Origin Files produced by the author(s)
Origin Files produced by the author(s)
Origin Files produced by the author(s)
Origin Files produced by the author(s)
Origin Files produced by the author(s)
Origin Files produced by the author(s)
Origin Files produced by the author(s)
Origin Files produced by the author(s)
Origin Files produced by the author(s)
Origin Files produced by the author(s)
Origin Files produced by the author(s)
Origin Files produced by the author(s)
Origin Files produced by the author(s)
Origin Files produced by the author(s)
Origin Files produced by the author(s)
Origin Files produced by the author(s)
Origin Files produced by the author(s)
Origin Files produced by the author(s)
Origin Files produced by the author(s)
Origin Files produced by the author(s)
Origin Files produced by the author(s)
Origin Files produced by the author(s)
Origin Files produced by the author(s)
Origin Files produced by the author(s)
Origin Files produced by the author(s)
Origin Files produced by the author(s)
Origin Files produced by the author(s)
Origin Files produced by the author(s)
Origin Files produced by the author(s)
Origin Files produced by the author(s)
Origin Files produced by the author(s)
Origin Files produced by the author(s)
Origin Files produced by the author(s)
Origin Files produced by the author(s)
Loading...

Dates and versions

hal-01403830 , version 1 (28-11-2016)

Identifiers

  • HAL Id : hal-01403830 , version 1

Cite

Timothy Bourke, Pierre-Evariste Dagand, Marc Pouzet, Lionel Rieg. Vérification de la génération modulaire du code impératif pour Lustre. JFLA 2017 - Vingt-huitième Journées Francophones des Langages Applicatifs, Jan 2017, Gourette, France. ⟨hal-01403830⟩
434 View
308 Download

Share

More