SlideShare une entreprise Scribd logo
1  sur  38
Télécharger pour lire hors ligne
Lustre
Nadia Sassi
sassinadia10@esc.u-manouba.tn
Mastère de Recherche en Informatique Décisionnelle et Intelligente Appliqué à la
Gestion
Plan de projet
1 Lustre – Les principes de base
2 Structure d’un programme
3 Les Operateurs de Lustre
4 Vérification formelle en lustre
2
Plan de projet
5 Exemple Concert
6 LUSTRE et l’industrie
7 Avantages et limites
8
Conclusion
3
9
Articles
But Origine Coopération
simplifier et automatiser
l’implémentation de lois de
commandes
Notation graphique permettant la
représentation de circuits logiques en
automatique.
informaticiens et automaticiens ont mis
la main a la pate pour formaliser le
tout...
1
Lustre est un langage de spécification particulièrement adapté pour la conception des systèmes
de contrôle-commande temps réel.
 Début de sa conception en 1984 dans le Laboratoire de recherche VERIMAG `a Grenoble...
1. Lustre – Les principes de base
Historique
1.Lustre – Les principes de base
2
Définition
Un programme Lustre définie un traitement sur des flots de données, c’est `a dire qu’il définie quelles
sont les valeurs de sorties en fonction des valeurs entrées `a tout instant. Il est parfaitement adapté
pour programmer des taches temps réel et il est basé sur la notion de synchronisme fort.
Lustre est un langage `a syntaxe et sémantique formelle.
• Syntaxe rigoureuse les constructions du langages ne possèdent qu’une interprétation possible
• Sémantique `a base mathématique: sémantique fonctionnelle `a base de flots de données
1.Lustre – Les principes de base
3
Le synchronisme fort
• les temps d’exécution et de communication sont nuls et les actions d’un système de processus sont
instantanées.
• les sorties sont synchrones avec les entrées et se déroulent aux instants où elles ont ´été sollicitées
Déterministe
Un programme Lustre est déterministe, en ce sens que les flots de sorties sont totalement
déterminée par les flots d’entrées.
Approche déclarative ou algébrique
consiste en un ensemble de déclarations définissant les relations entre flots d’entrées et flots de
sorties, en d’autres termes des équations mathématiques.,
1. Lustre – Les principes de base
Approche algébrique, ou déclarative
Exemple
Soit X = (x1, x2, . . .),Y = (y1, y2, . . .) deux flots de réels d’entrées
et Z = (z1, z2, . . .) un flots de réel de sorties, alors la déclaration :
Z = X + Y signifie pour tout instant n appartient à N* zn = xn + yn.
Remarque: Alors qu’en langage C le symbole = représente l’affectation, ici il représente l’´égalité mathématique,
´écrire X = X + 1 sera donc rejeté par le compilateur Lustre.
4
1.Lustre – Les principes de base
Model-checking
• se base une description du système sous forme d’automate
• vérification d’une propriété par parcours exhaustif des états du système
4
 LESAR est l’ outil de preuve associe `a Lustre : preuve par Model Checking.
1. Lustre – Les principes de base
Approche flot de données
Programme
Lustre
Fig: Traitement de flots de données, par exemple un filtre
Lustre travaille sur des flots de données. Si X est une variable Lustre il
désigne alors le flot X = (x1, x2, . . .),
xn ´étant la valeur de X `a l'instant n.
X y
Suite des instants
Suite des instants
Flotx
Floty
5
Approche flot de données
6
L’approche flot de données consiste `a représenter un programme par un graphe
où les nœuds sont des operateurs qui transforment des flots de données.
+
+
*
X
Y
Z
U=X+1
V=2*Y+Z
12
1. Lustre – Les principes de base
Un flot de données
X est un couple constitue :
1. d’une suite infinie de valeurs d’un certain type T, noté
(x1, x2, . . . , xn, . . .)
2. d’une horloge définissant les instants où les valeurs du
flot sont définis.
Une horloge est soit :
• un flot de données de type booléen.
• ou bien une horloge de base.
Les flots qui ont pour horloge l’horloge de base sont dit continus,
Les autres sont dit semi-continus. Chaque position de la suite de valeurs du flot correspond `a la notion
intuitive d’instant.
Les flots de données et les horloges
1. Lustre – Les principes de base
7
Les flots de données et les horloges
Exemples
• Un flot d’entiers sur l’horloge de base : (4, 2, . . . , 7, . . .)
• Un flot de booléens, noté B, sur l’horloge de base : B = (vrai , faux, vrai , faux, . . .)
1. Lustre – Les principes de base
8
1. Lustre – Les principes de base
Un programme Lustre
9
Opérateurs lustre
Nœuds Intermédiaires
Flots d’E du nœud principal
Flots de S du nœud principal
Flots intermédiaires
constantes
Fig: Schéma représentant un programme Lustre
Noeud Principal
2.Structure
d’un
programme
Lustre
[ déclaration des constantes]
[ déclaration de types et de fonctions externes ]
node nom ( déclaration des flots d’entrées )
returns( déclaration des flots de sorties ) ;
[var déclaration des flots internes ;]
let
[ assertions ;]
système d’équations définissant une et une seule fois les flots
internes et de sorties en fonction d’eux mêmes et des flots d’entrées
Eq1;
Eq2;
... ;
Eqn;
tel
[ autres noeuds]
10
+
17
<
Marche/Arret
Fig: Schéma et code Lustre d’un thermostat
Capture 1
Capture 2
node thermos(C1,C2 : real)
returns(M A : bool) ;
let
M A=((C1+C2)<17.0 tel
Exemple 1: de programme
Lustre
Temps 1 2 3 4
C1 10 15 12 8
C2 5 5 7 5
M_A Vrai Faux Faux Vrai
Exemple d’une exécution 
11
3. Les Operateurs de Lustre
1. Les operateurs classiques
• Les opérateurs arithmétiques :
• Binaire : +, -, *, div, mod, /
• Unaire : -
• Les opérateurs logiques :
• Binaire : or, xor, and, =>
• Unaire : not
• Les opérateurs de comparaison : =, <>, <, >, <=, >=
• L’ opérateurs de contrôle if . then . else ., peut se traduire
“quand . alors . sinon .” au lieu de si . alors . sinon .
• Les constantes :
• true = (true, true, ...)
• 0 = (0, 0, ...)
• I 1.45 = (1.45,1.45, ...)
Exemple 2 : un nœud qui additionne ou soustrait deux flots
d’entiers :
Soit AS un flot d’entrée booléen,
Soit X1, X2 deux flots d’entrées entiers,
Soit Y un flot de sortie entier,
X1 + X2 quand AS est vrai
Y=
X2 − X1 autrement
node AddSub(AS :bool ;X1,X2 :int)
returns(Y :int) ;
let
Y = if AS then X1+X2
else X2-X1 ;
tel
12
Exemple 3: Un programme lustre
un programme Lustre qui prend en entrée un flot réel E, en
sortie deux flots : un flots booléen B qui devient vrai quand
l’entrée dépasse 100 et un flot de sortie réel S qui renvoie 0
quand B est faux et qui renvoie la différence E-100 quand B est
vrai.
node diff(E : real)returns(B :bool ;S :real) ;
let
B= E>100.0 ;
S= if B then 0.0 else E-100.0 ;
tel
Le prototype du nœud est le suivant
100
>E B
S
13
3. Les Operateurs de Lustre
2. Les operateurs temporels
• pre (précèdent) : opérateur permettant de travailler sur le passé d’un flot
• −> (suivi de) : opérateur permettant d’initialiser un flot
• when (sous ´échantillonnage) : opérateur permettant de transformer un flot continu en un flot semi-continu
• crurent (sur ´échantillonnage) : opérateur permettant de transforme un flot semi-continu en un flot continu.
Afin de définir l’horloge d’un flot, on ajoute une nouvelle structure de type : T when B
 T est un type classique
 B est une variable de flot de type bool ou de type bool when B
ETC…..
14
3. Les Operateurs de Lustre
• pre (précèdent) : opérateur permettant de travailler sur le passé d’un flot
Syntaxe :
Soit X un flot d’entrées entier
Soit Y un flot de sorties entier
(Y1,Y2,Y3, . . .) = (X1,X1 + X2,X1 + X2 + X3, . . .)
node CumSum(X :int) returns(Y :int) ;
let
Y = X −> (X + pre(Y)) ;
te
15
3. Les Operateurs de Lustre
• −> (suivi de) : opérateur permettant d’initialiser un flot
• when (sous ´échantillonnage) : opérateur permettant de transformer un flot continu en un flot semi-continu
• crurent (sur ´échantillonnage) : opérateur permettant de transforme un flot semi-continu en un flot continu.
Afin de définir l’horloge d’un flot, on ajoute une nouvelle structure de type : T when B
 T est un type classique
 B est une variable de flot de type bool ou de type bool when B
ETC…..
16
4. Vérification formelle en lustre
1. Un modèle du programme compréhensible par le prouveur utilisé Ici modèle lustre = modèle exprimable sous
forme d’automate
2. Un prouveur pour vérifier les propriétés logiques
3. Une logique pour d’écrire les propriétés `a prouver on utilise ici la logique temporelle Safety Logic
4. Des assertions permettent au concepteur d’´écrire des hypothèses sur l’environnement extérieur et/ou sur le
programme lui-même.
17
Automat
Un automate est un graphe orienté permettant de d’écrire
l’ensemble des ´états possibles d’un système ainsi que son
comportement dynamique.
Un programme Lustre définie un automate fini car son espace
mémoire est borné (Pas d’allocations dynamiques).
4. Vérification formelle en lustre
18
Safety logic
En vérification formelle Lustre, la logique permettant de décrire les
formules `a vérifier est exprimable en langage Lustre.
4. Vérification formelle en lustre
SL: C’est une logique temporelle `a temps qualitatif (notion d’ordre
entre les ´évènements),
19
Assertion
assert(not(X and Y)) ;
Affirme que les flots booléens X et Y ne doivent jamais ˆêtre vrais simultanément.
assert(true -> not(X and pre(X))) ;
Affirme que le flot booléen X ne transporte jamais deux valeurs vraies consécutive
4. Vérification formelle en lustre
20
Schéma général de la vérification en Lustre
Pg
Nœud lustre à
vérifier
Phi
Nœud Lustre
formalisant
la propriété
à vérifier
Sortie= Flot
Booléen
Pg_Phi
Entrées
Sorties
Fonctionnement d’un Model Checker
Pg : Programme à vérifier
Phi : Nœud formalisant la propriété à vérifier.
Il possède comme entrées les flots d'entrée
et de sortie du noeud Pg.
En sortie on a un seul flot de type booléen : celui-ci
doit toujours être vrai si la propriété est vérifiée.
Pg_Phi : programme de vérification utilisant les nœuds
intermédiaire Pg et Phi.
L'outil de vérification LESAR est un model checker
capable de vérifier si la propriété est vérifiée
quelque soit l'état du nœud.
4. Vérification formelle en lustre
21
5. Exemple Concert - le chronomètre STOP WATCH
Le but est de spécifier le comportement d’un chronomètre simplifié.
Le chronomètre dispose de 3 entrées de trois boutons :
• on off : permet d’activer et de désactiver le chronomètre ;
• reset : remet le chronomètre `a zéro quand le chronomètre est
• désactivé ;
• freeze : gèle ou dégel l’affichage quand le chronomètre est actif.
Prototype du nœud :
node STOP WATCH(on off, reset, freeze : bool)
returns (time : int )
22
5. Exemple Concert - le chronomètre STOP WATCH
Etape 1: L’opérateur Count
Spécification :
Remise `a 0 si reset, sinon il est incrémenter si X;
Tout se passe comme si C valait 0 `a l’origine.
node COUNT(reset, X : bool) returns (C : int) ;
let
C = if reset
then 0
else if X
then (0 − pre(C)) + 1
else (0 − pre(C)) ;
tel
23
5. Exemple Concert - le chronomètre STOP WATCH
Etape 2: L’opérateur Switch
Spécifications :
Passe de False `a True si on ;
Passe de True `a False si off ;
Tout se comporte comme si S ´était False `a l’origine ;
Doit fonctionner correctement même si off et on sont les
mêmes.
Hypothèses sur l’environnement extérieur :
On et Off ne sont jamais `a True deux fois de suite... Cette
hypothèse simule un appui court sur un interrupteur, par
exemple...
24
5. Exemple Concert - le chronomètre STOP WATCH
Etape 2: L’opérateur Switch
node SWITCH ( on, off : bool ) returns ( S : bool ) ;
assert( not(on and pre(on)) )
assert( not(off and pre(off)) )
let
S = if (false -> pre(S))
then not off
else on ;
tel
25
5. Exemple Concert - le chronomètre STOP WATCH
Etape 3: STOP WATCH
node STOP WATCH (on off, reset, freeze : bool)
returns (time : int) ;
assert(true -> not(on off and pre(on off)))
assert(true -> not(reset and pre(reset)))
assert(true -> not(freeze and pre(freeze)))
var running, freezed : bool ;
cpt : int ;
let
running = SWITCH (on off, on off) ;
freezed = SWITCH( freeze and running,
freeze or on off) ;
cpt = count( reset and not running, running) ;
time = if freezed
then ( 0 -> pre(time))
else cpt ;
tel
26
6. LUSTRE et l’industrie
The Power of PowerPoint |
thepopp.com
27
En 1993, Lustre a ´été transfère dans le milieu industriel avec grand succès.
Il est aujourd’hui intègre dans l’outil industriel SCADE, fournit par ESTEREL Technologies,
pour le développement de systèmes de contrôle-commandes critiques.
SCADE est notamment utilisé par Airbus, Schneider Electric, Eurocopter...
7.Avantages & Limites de Lustre
28
Approche fonctionnelle
Qui possède toutes les propriétés mathématiques associes et
en particulier.
• absence d’ordre dans l’´écriture des instructions.
• cela facilite la vérification, la réutilisation et la
transformation de programmes.
Approche `a parallélisme vrai
où les contraintes de séquencement et de
synchronisation ne proviennent que des flots de
données,
• ce sont les flots de données qui déterminent les
séquences d’exécution et de synchronisation.
• Cela facilite la synthèse de programmes
parallèles.
1.Avantages
The Power of PowerPoint |
thepopp.com
29
• La difficulté essentielle provient de l'aspect déclaratif du langage.
• Il n'y a pas d'instruction de contrôle dans le langage Lustre
• Toute la structure de contrôle du code objet doit donc être synthétisée par le compilateur.
Cette synthèse consiste à construire un automate fini en simulant exhaustivement le comportement des variables
booléennes du programme.
7.Avantages & Limites de Lustre
2. Limites
8.Articles
30
Date début: 2017-01-04
Date début: 2017-01-07
Titre de du congrès :JFLA 2017 - Vingt-
huitièmes Journées Francophones des
Langages Applicatifs,
Auteurs: Steven Varoumas , Benoît Vaugon
Emmanuel Chailloux
Audience : Internationale
Pays : France
Lien: https://hal.archives-ouvertes.fr/hal-
01446225v1
La programmation synchrone à flots de données semble être un candidat de choix pour le développement
de tels systèmes qui peuvent être parfois critiques.
8.Articles
31
Date début: 2017-01-04
Date début: 2017-01-07
Titre de du congrès :Vérification de la
génération modulaire du code impératif pour
Lustre
Auteurs: Timothy Bourke , Pierre-Evariste
Dagand , Marc Pouzet , Lionel Rieg
Audience : nationale
Pays : France
Lien:https://hal.archives-
ouvertes.fr/hal-01446225v1
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.
8.Articles
32
Datede soutenance : 2016-06-28
Titre de téhse :Un langage formel pour la
conception, la spécification et la vérification
d’interfaces homme-machine embarquées
critique
Auteurs: Vincent Lecrubier
Pays : France
Lien:https://tel.archives-ouvertes.fr/tel-
01455466v1v1
9.Conclusion
The Power of PowerPoint |
thepopp.com
33
Le langage est conçu de manière à permettre une interprétation synchrone des suites. La nature du
langage (dont la sémantique s'exprime simplement) permet des manipulations formelles sur les
programmes dans le but de faire des vérifications et des preuves de correction.
L’utilisation du langage pris dans différents domaines (temps réel classique, automatique, systolique,
spécification et conception des circuits)
Merci pour Votre
attention

Contenu connexe

Tendances

Tendances (20)

Solveur - Excel
Solveur - ExcelSolveur - Excel
Solveur - Excel
 
resume algo 2023.pdf
resume algo 2023.pdfresume algo 2023.pdf
resume algo 2023.pdf
 
TD4-UML-Correction
TD4-UML-CorrectionTD4-UML-Correction
TD4-UML-Correction
 
Projet réalisé par ameny Khedhira & Arij Mekki
Projet réalisé par  ameny Khedhira & Arij MekkiProjet réalisé par  ameny Khedhira & Arij Mekki
Projet réalisé par ameny Khedhira & Arij Mekki
 
Correction
CorrectionCorrection
Correction
 
Tp3 - UML
Tp3 - UMLTp3 - UML
Tp3 - UML
 
JAVA
JAVAJAVA
JAVA
 
Bascules
BasculesBascules
Bascules
 
Programmation lineaire algorithme_du_simplexe
Programmation lineaire algorithme_du_simplexeProgrammation lineaire algorithme_du_simplexe
Programmation lineaire algorithme_du_simplexe
 
Architecture des ordinateurs : microprocesseur
Architecture des ordinateurs : microprocesseurArchitecture des ordinateurs : microprocesseur
Architecture des ordinateurs : microprocesseur
 
Serie
SerieSerie
Serie
 
TD3-UML-Correction
TD3-UML-CorrectionTD3-UML-Correction
TD3-UML-Correction
 
01 correction-td smia-s2-info2
01 correction-td smia-s2-info201 correction-td smia-s2-info2
01 correction-td smia-s2-info2
 
Uml examen
Uml  examenUml  examen
Uml examen
 
Formation algorithme
Formation algorithmeFormation algorithme
Formation algorithme
 
Algorithme knn
Algorithme knnAlgorithme knn
Algorithme knn
 
Assembleur et binaire
Assembleur et binaireAssembleur et binaire
Assembleur et binaire
 
Ch4 circuitscombinatoires
Ch4 circuitscombinatoiresCh4 circuitscombinatoires
Ch4 circuitscombinatoires
 
Les algorithmes d'arithmetique
Les algorithmes d'arithmetiqueLes algorithmes d'arithmetique
Les algorithmes d'arithmetique
 
Fiche1 ex-sous-programme
Fiche1 ex-sous-programmeFiche1 ex-sous-programme
Fiche1 ex-sous-programme
 

Similaire à Lustre

Owf 2013 rii panorama leroy
Owf 2013 rii panorama leroyOwf 2013 rii panorama leroy
Owf 2013 rii panorama leroyPatrick MOREAU
 
Real Time Meta Events
Real Time Meta EventsReal Time Meta Events
Real Time Meta Eventskerush
 
Slides octave1
Slides octave1Slides octave1
Slides octave1issaslide
 
Chapitre3_Partie1.pdf
Chapitre3_Partie1.pdfChapitre3_Partie1.pdf
Chapitre3_Partie1.pdfMbarkiIsraa
 
livre-algorithmes.pdf
livre-algorithmes.pdflivre-algorithmes.pdf
livre-algorithmes.pdfDurelDonfack
 
TP3: Comportement Temps Réel de l'Agent Perception
TP3: Comportement Temps Réel de l'Agent PerceptionTP3: Comportement Temps Réel de l'Agent Perception
TP3: Comportement Temps Réel de l'Agent PerceptionSaid Benaissa
 
11-Concurrence-Section critiques.pdf
11-Concurrence-Section critiques.pdf11-Concurrence-Section critiques.pdf
11-Concurrence-Section critiques.pdfPatiento Del Mar
 
Javascript : que fait ce code?
Javascript : que fait ce code?Javascript : que fait ce code?
Javascript : que fait ce code?Ruau Mickael
 
SdE 8 - Synchronization de execution
SdE 8 - Synchronization de executionSdE 8 - Synchronization de execution
SdE 8 - Synchronization de executionAlexandru Radovici
 
firefly algoriyhm sac a dos step by step .pdf
firefly algoriyhm sac a dos step by step .pdffirefly algoriyhm sac a dos step by step .pdf
firefly algoriyhm sac a dos step by step .pdffirstjob4
 
La reconnaissance des gestes
La reconnaissance des gestesLa reconnaissance des gestes
La reconnaissance des gestesLoghin Dumitru
 
cours d'algorithmique et programmation 3sc final .pdf
cours d'algorithmique et programmation 3sc final .pdfcours d'algorithmique et programmation 3sc final .pdf
cours d'algorithmique et programmation 3sc final .pdfLamissGhoul1
 
57277345 cours-matlab
57277345 cours-matlab57277345 cours-matlab
57277345 cours-matlabgeniem1
 
IEEE754-pourquoi_les_calculs_informatiques_sont_faux
IEEE754-pourquoi_les_calculs_informatiques_sont_fauxIEEE754-pourquoi_les_calculs_informatiques_sont_faux
IEEE754-pourquoi_les_calculs_informatiques_sont_fauxRuau Mickael
 

Similaire à Lustre (20)

Owf 2013 rii panorama leroy
Owf 2013 rii panorama leroyOwf 2013 rii panorama leroy
Owf 2013 rii panorama leroy
 
Real Time Meta Events
Real Time Meta EventsReal Time Meta Events
Real Time Meta Events
 
Msr05 Control
Msr05 ControlMsr05 Control
Msr05 Control
 
langage C++
langage C++langage C++
langage C++
 
Slides octave1
Slides octave1Slides octave1
Slides octave1
 
Chapitre3_Partie1.pdf
Chapitre3_Partie1.pdfChapitre3_Partie1.pdf
Chapitre3_Partie1.pdf
 
livre-algorithmes.pdf
livre-algorithmes.pdflivre-algorithmes.pdf
livre-algorithmes.pdf
 
Mathématiques et Python
Mathématiques et PythonMathématiques et Python
Mathématiques et Python
 
µP
µPµP
µP
 
TP3: Comportement Temps Réel de l'Agent Perception
TP3: Comportement Temps Réel de l'Agent PerceptionTP3: Comportement Temps Réel de l'Agent Perception
TP3: Comportement Temps Réel de l'Agent Perception
 
11-Concurrence-Section critiques.pdf
11-Concurrence-Section critiques.pdf11-Concurrence-Section critiques.pdf
11-Concurrence-Section critiques.pdf
 
Javascript : que fait ce code?
Javascript : que fait ce code?Javascript : que fait ce code?
Javascript : que fait ce code?
 
SdE 8 - Synchronization de execution
SdE 8 - Synchronization de executionSdE 8 - Synchronization de execution
SdE 8 - Synchronization de execution
 
firefly algoriyhm sac a dos step by step .pdf
firefly algoriyhm sac a dos step by step .pdffirefly algoriyhm sac a dos step by step .pdf
firefly algoriyhm sac a dos step by step .pdf
 
La reconnaissance des gestes
La reconnaissance des gestesLa reconnaissance des gestes
La reconnaissance des gestes
 
Cours php
Cours phpCours php
Cours php
 
cours d'algorithmique et programmation 3sc final .pdf
cours d'algorithmique et programmation 3sc final .pdfcours d'algorithmique et programmation 3sc final .pdf
cours d'algorithmique et programmation 3sc final .pdf
 
Fluent
FluentFluent
Fluent
 
57277345 cours-matlab
57277345 cours-matlab57277345 cours-matlab
57277345 cours-matlab
 
IEEE754-pourquoi_les_calculs_informatiques_sont_faux
IEEE754-pourquoi_les_calculs_informatiques_sont_fauxIEEE754-pourquoi_les_calculs_informatiques_sont_faux
IEEE754-pourquoi_les_calculs_informatiques_sont_faux
 

Lustre

  • 1. Lustre Nadia Sassi sassinadia10@esc.u-manouba.tn Mastère de Recherche en Informatique Décisionnelle et Intelligente Appliqué à la Gestion
  • 2. Plan de projet 1 Lustre – Les principes de base 2 Structure d’un programme 3 Les Operateurs de Lustre 4 Vérification formelle en lustre 2
  • 3. Plan de projet 5 Exemple Concert 6 LUSTRE et l’industrie 7 Avantages et limites 8 Conclusion 3 9 Articles
  • 4. But Origine Coopération simplifier et automatiser l’implémentation de lois de commandes Notation graphique permettant la représentation de circuits logiques en automatique. informaticiens et automaticiens ont mis la main a la pate pour formaliser le tout... 1 Lustre est un langage de spécification particulièrement adapté pour la conception des systèmes de contrôle-commande temps réel.  Début de sa conception en 1984 dans le Laboratoire de recherche VERIMAG `a Grenoble... 1. Lustre – Les principes de base Historique
  • 5. 1.Lustre – Les principes de base 2 Définition Un programme Lustre définie un traitement sur des flots de données, c’est `a dire qu’il définie quelles sont les valeurs de sorties en fonction des valeurs entrées `a tout instant. Il est parfaitement adapté pour programmer des taches temps réel et il est basé sur la notion de synchronisme fort. Lustre est un langage `a syntaxe et sémantique formelle. • Syntaxe rigoureuse les constructions du langages ne possèdent qu’une interprétation possible • Sémantique `a base mathématique: sémantique fonctionnelle `a base de flots de données
  • 6. 1.Lustre – Les principes de base 3 Le synchronisme fort • les temps d’exécution et de communication sont nuls et les actions d’un système de processus sont instantanées. • les sorties sont synchrones avec les entrées et se déroulent aux instants où elles ont ´été sollicitées Déterministe Un programme Lustre est déterministe, en ce sens que les flots de sorties sont totalement déterminée par les flots d’entrées. Approche déclarative ou algébrique consiste en un ensemble de déclarations définissant les relations entre flots d’entrées et flots de sorties, en d’autres termes des équations mathématiques.,
  • 7. 1. Lustre – Les principes de base Approche algébrique, ou déclarative Exemple Soit X = (x1, x2, . . .),Y = (y1, y2, . . .) deux flots de réels d’entrées et Z = (z1, z2, . . .) un flots de réel de sorties, alors la déclaration : Z = X + Y signifie pour tout instant n appartient à N* zn = xn + yn. Remarque: Alors qu’en langage C le symbole = représente l’affectation, ici il représente l’´égalité mathématique, ´écrire X = X + 1 sera donc rejeté par le compilateur Lustre. 4
  • 8. 1.Lustre – Les principes de base Model-checking • se base une description du système sous forme d’automate • vérification d’une propriété par parcours exhaustif des états du système 4  LESAR est l’ outil de preuve associe `a Lustre : preuve par Model Checking.
  • 9. 1. Lustre – Les principes de base Approche flot de données Programme Lustre Fig: Traitement de flots de données, par exemple un filtre Lustre travaille sur des flots de données. Si X est une variable Lustre il désigne alors le flot X = (x1, x2, . . .), xn ´étant la valeur de X `a l'instant n. X y Suite des instants Suite des instants Flotx Floty 5
  • 10. Approche flot de données 6 L’approche flot de données consiste `a représenter un programme par un graphe où les nœuds sont des operateurs qui transforment des flots de données. + + * X Y Z U=X+1 V=2*Y+Z 12 1. Lustre – Les principes de base
  • 11. Un flot de données X est un couple constitue : 1. d’une suite infinie de valeurs d’un certain type T, noté (x1, x2, . . . , xn, . . .) 2. d’une horloge définissant les instants où les valeurs du flot sont définis. Une horloge est soit : • un flot de données de type booléen. • ou bien une horloge de base. Les flots qui ont pour horloge l’horloge de base sont dit continus, Les autres sont dit semi-continus. Chaque position de la suite de valeurs du flot correspond `a la notion intuitive d’instant. Les flots de données et les horloges 1. Lustre – Les principes de base 7
  • 12. Les flots de données et les horloges Exemples • Un flot d’entiers sur l’horloge de base : (4, 2, . . . , 7, . . .) • Un flot de booléens, noté B, sur l’horloge de base : B = (vrai , faux, vrai , faux, . . .) 1. Lustre – Les principes de base 8
  • 13. 1. Lustre – Les principes de base Un programme Lustre 9 Opérateurs lustre Nœuds Intermédiaires Flots d’E du nœud principal Flots de S du nœud principal Flots intermédiaires constantes Fig: Schéma représentant un programme Lustre Noeud Principal
  • 14. 2.Structure d’un programme Lustre [ déclaration des constantes] [ déclaration de types et de fonctions externes ] node nom ( déclaration des flots d’entrées ) returns( déclaration des flots de sorties ) ; [var déclaration des flots internes ;] let [ assertions ;] système d’équations définissant une et une seule fois les flots internes et de sorties en fonction d’eux mêmes et des flots d’entrées Eq1; Eq2; ... ; Eqn; tel [ autres noeuds] 10
  • 15. + 17 < Marche/Arret Fig: Schéma et code Lustre d’un thermostat Capture 1 Capture 2 node thermos(C1,C2 : real) returns(M A : bool) ; let M A=((C1+C2)<17.0 tel Exemple 1: de programme Lustre Temps 1 2 3 4 C1 10 15 12 8 C2 5 5 7 5 M_A Vrai Faux Faux Vrai Exemple d’une exécution  11
  • 16. 3. Les Operateurs de Lustre 1. Les operateurs classiques • Les opérateurs arithmétiques : • Binaire : +, -, *, div, mod, / • Unaire : - • Les opérateurs logiques : • Binaire : or, xor, and, => • Unaire : not • Les opérateurs de comparaison : =, <>, <, >, <=, >= • L’ opérateurs de contrôle if . then . else ., peut se traduire “quand . alors . sinon .” au lieu de si . alors . sinon . • Les constantes : • true = (true, true, ...) • 0 = (0, 0, ...) • I 1.45 = (1.45,1.45, ...) Exemple 2 : un nœud qui additionne ou soustrait deux flots d’entiers : Soit AS un flot d’entrée booléen, Soit X1, X2 deux flots d’entrées entiers, Soit Y un flot de sortie entier, X1 + X2 quand AS est vrai Y= X2 − X1 autrement node AddSub(AS :bool ;X1,X2 :int) returns(Y :int) ; let Y = if AS then X1+X2 else X2-X1 ; tel 12
  • 17. Exemple 3: Un programme lustre un programme Lustre qui prend en entrée un flot réel E, en sortie deux flots : un flots booléen B qui devient vrai quand l’entrée dépasse 100 et un flot de sortie réel S qui renvoie 0 quand B est faux et qui renvoie la différence E-100 quand B est vrai. node diff(E : real)returns(B :bool ;S :real) ; let B= E>100.0 ; S= if B then 0.0 else E-100.0 ; tel Le prototype du nœud est le suivant 100 >E B S 13
  • 18. 3. Les Operateurs de Lustre 2. Les operateurs temporels • pre (précèdent) : opérateur permettant de travailler sur le passé d’un flot • −> (suivi de) : opérateur permettant d’initialiser un flot • when (sous ´échantillonnage) : opérateur permettant de transformer un flot continu en un flot semi-continu • crurent (sur ´échantillonnage) : opérateur permettant de transforme un flot semi-continu en un flot continu. Afin de définir l’horloge d’un flot, on ajoute une nouvelle structure de type : T when B  T est un type classique  B est une variable de flot de type bool ou de type bool when B ETC….. 14
  • 19. 3. Les Operateurs de Lustre • pre (précèdent) : opérateur permettant de travailler sur le passé d’un flot Syntaxe : Soit X un flot d’entrées entier Soit Y un flot de sorties entier (Y1,Y2,Y3, . . .) = (X1,X1 + X2,X1 + X2 + X3, . . .) node CumSum(X :int) returns(Y :int) ; let Y = X −> (X + pre(Y)) ; te 15
  • 20. 3. Les Operateurs de Lustre • −> (suivi de) : opérateur permettant d’initialiser un flot • when (sous ´échantillonnage) : opérateur permettant de transformer un flot continu en un flot semi-continu • crurent (sur ´échantillonnage) : opérateur permettant de transforme un flot semi-continu en un flot continu. Afin de définir l’horloge d’un flot, on ajoute une nouvelle structure de type : T when B  T est un type classique  B est une variable de flot de type bool ou de type bool when B ETC….. 16
  • 21. 4. Vérification formelle en lustre 1. Un modèle du programme compréhensible par le prouveur utilisé Ici modèle lustre = modèle exprimable sous forme d’automate 2. Un prouveur pour vérifier les propriétés logiques 3. Une logique pour d’écrire les propriétés `a prouver on utilise ici la logique temporelle Safety Logic 4. Des assertions permettent au concepteur d’´écrire des hypothèses sur l’environnement extérieur et/ou sur le programme lui-même. 17
  • 22. Automat Un automate est un graphe orienté permettant de d’écrire l’ensemble des ´états possibles d’un système ainsi que son comportement dynamique. Un programme Lustre définie un automate fini car son espace mémoire est borné (Pas d’allocations dynamiques). 4. Vérification formelle en lustre 18
  • 23. Safety logic En vérification formelle Lustre, la logique permettant de décrire les formules `a vérifier est exprimable en langage Lustre. 4. Vérification formelle en lustre SL: C’est une logique temporelle `a temps qualitatif (notion d’ordre entre les ´évènements), 19
  • 24. Assertion assert(not(X and Y)) ; Affirme que les flots booléens X et Y ne doivent jamais ˆêtre vrais simultanément. assert(true -> not(X and pre(X))) ; Affirme que le flot booléen X ne transporte jamais deux valeurs vraies consécutive 4. Vérification formelle en lustre 20
  • 25. Schéma général de la vérification en Lustre Pg Nœud lustre à vérifier Phi Nœud Lustre formalisant la propriété à vérifier Sortie= Flot Booléen Pg_Phi Entrées Sorties Fonctionnement d’un Model Checker Pg : Programme à vérifier Phi : Nœud formalisant la propriété à vérifier. Il possède comme entrées les flots d'entrée et de sortie du noeud Pg. En sortie on a un seul flot de type booléen : celui-ci doit toujours être vrai si la propriété est vérifiée. Pg_Phi : programme de vérification utilisant les nœuds intermédiaire Pg et Phi. L'outil de vérification LESAR est un model checker capable de vérifier si la propriété est vérifiée quelque soit l'état du nœud. 4. Vérification formelle en lustre 21
  • 26. 5. Exemple Concert - le chronomètre STOP WATCH Le but est de spécifier le comportement d’un chronomètre simplifié. Le chronomètre dispose de 3 entrées de trois boutons : • on off : permet d’activer et de désactiver le chronomètre ; • reset : remet le chronomètre `a zéro quand le chronomètre est • désactivé ; • freeze : gèle ou dégel l’affichage quand le chronomètre est actif. Prototype du nœud : node STOP WATCH(on off, reset, freeze : bool) returns (time : int ) 22
  • 27. 5. Exemple Concert - le chronomètre STOP WATCH Etape 1: L’opérateur Count Spécification : Remise `a 0 si reset, sinon il est incrémenter si X; Tout se passe comme si C valait 0 `a l’origine. node COUNT(reset, X : bool) returns (C : int) ; let C = if reset then 0 else if X then (0 − pre(C)) + 1 else (0 − pre(C)) ; tel 23
  • 28. 5. Exemple Concert - le chronomètre STOP WATCH Etape 2: L’opérateur Switch Spécifications : Passe de False `a True si on ; Passe de True `a False si off ; Tout se comporte comme si S ´était False `a l’origine ; Doit fonctionner correctement même si off et on sont les mêmes. Hypothèses sur l’environnement extérieur : On et Off ne sont jamais `a True deux fois de suite... Cette hypothèse simule un appui court sur un interrupteur, par exemple... 24
  • 29. 5. Exemple Concert - le chronomètre STOP WATCH Etape 2: L’opérateur Switch node SWITCH ( on, off : bool ) returns ( S : bool ) ; assert( not(on and pre(on)) ) assert( not(off and pre(off)) ) let S = if (false -> pre(S)) then not off else on ; tel 25
  • 30. 5. Exemple Concert - le chronomètre STOP WATCH Etape 3: STOP WATCH node STOP WATCH (on off, reset, freeze : bool) returns (time : int) ; assert(true -> not(on off and pre(on off))) assert(true -> not(reset and pre(reset))) assert(true -> not(freeze and pre(freeze))) var running, freezed : bool ; cpt : int ; let running = SWITCH (on off, on off) ; freezed = SWITCH( freeze and running, freeze or on off) ; cpt = count( reset and not running, running) ; time = if freezed then ( 0 -> pre(time)) else cpt ; tel 26
  • 31. 6. LUSTRE et l’industrie The Power of PowerPoint | thepopp.com 27 En 1993, Lustre a ´été transfère dans le milieu industriel avec grand succès. Il est aujourd’hui intègre dans l’outil industriel SCADE, fournit par ESTEREL Technologies, pour le développement de systèmes de contrôle-commandes critiques. SCADE est notamment utilisé par Airbus, Schneider Electric, Eurocopter...
  • 32. 7.Avantages & Limites de Lustre 28 Approche fonctionnelle Qui possède toutes les propriétés mathématiques associes et en particulier. • absence d’ordre dans l’´écriture des instructions. • cela facilite la vérification, la réutilisation et la transformation de programmes. Approche `a parallélisme vrai où les contraintes de séquencement et de synchronisation ne proviennent que des flots de données, • ce sont les flots de données qui déterminent les séquences d’exécution et de synchronisation. • Cela facilite la synthèse de programmes parallèles. 1.Avantages
  • 33. The Power of PowerPoint | thepopp.com 29 • La difficulté essentielle provient de l'aspect déclaratif du langage. • Il n'y a pas d'instruction de contrôle dans le langage Lustre • Toute la structure de contrôle du code objet doit donc être synthétisée par le compilateur. Cette synthèse consiste à construire un automate fini en simulant exhaustivement le comportement des variables booléennes du programme. 7.Avantages & Limites de Lustre 2. Limites
  • 34. 8.Articles 30 Date début: 2017-01-04 Date début: 2017-01-07 Titre de du congrès :JFLA 2017 - Vingt- huitièmes Journées Francophones des Langages Applicatifs, Auteurs: Steven Varoumas , Benoît Vaugon Emmanuel Chailloux Audience : Internationale Pays : France Lien: https://hal.archives-ouvertes.fr/hal- 01446225v1 La programmation synchrone à flots de données semble être un candidat de choix pour le développement de tels systèmes qui peuvent être parfois critiques.
  • 35. 8.Articles 31 Date début: 2017-01-04 Date début: 2017-01-07 Titre de du congrès :Vérification de la génération modulaire du code impératif pour Lustre Auteurs: Timothy Bourke , Pierre-Evariste Dagand , Marc Pouzet , Lionel Rieg Audience : nationale Pays : France Lien:https://hal.archives- ouvertes.fr/hal-01446225v1 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.
  • 36. 8.Articles 32 Datede soutenance : 2016-06-28 Titre de téhse :Un langage formel pour la conception, la spécification et la vérification d’interfaces homme-machine embarquées critique Auteurs: Vincent Lecrubier Pays : France Lien:https://tel.archives-ouvertes.fr/tel- 01455466v1v1
  • 37. 9.Conclusion The Power of PowerPoint | thepopp.com 33 Le langage est conçu de manière à permettre une interprétation synchrone des suites. La nature du langage (dont la sémantique s'exprime simplement) permet des manipulations formelles sur les programmes dans le but de faire des vérifications et des preuves de correction. L’utilisation du langage pris dans différents domaines (temps réel classique, automatique, systolique, spécification et conception des circuits)