INF 321
Paradigme r´ eactif synchrone
Eric Goubault
Cours 10
29 juin 2012
Dans le dernier ´ episode...
On a vu:
Retour sur la programmation fonctionnelle (Caml, Haskell...)!
Strat´egies d’´evaluation (eager/lazy)
Typage `a la Hindley-Milner (Robin Milner, prix Turing 1991) On va voir:
Un peu de graphes (pour le TD, et pour introduire les r´eseaux de Kahn)
Les langages synchrones, r´eseaux de Kahn LUSTRE et la programmation r´eactive Quelques conseils avant les vacances
Pourquoi des graphes?
Vous avez vu les arbres en taupe...
On pousse l’id´ee du partage au maximum...
Exemple, repr´esentation graphique a
b c
d e
f g
Pourquoi des graphes?
Les 7 ponts de K¨onigsberg (Euler, 1735)
...pas de promenade possible en passant une et une seule fois par chaque pont (graphe Eul´erien)
Pourquoi des graphes?
En un peu plus compliqu´e...r´eseau de transport
Pourquoi des graphes?
Mod´elisation de r´eseaux de distribution
...´electriques par exemple
Pourquoi des graphes?
Mod´elisation de r´eseaux
(internet)
Pourquoi des graphes?
Mod´elisation de relations
Ici, r´eseau social... plus g´en´eralement, relations de d´ependances (de tˆaches par exemple)
Pourquoi des graphes?
S´emantique de langages de programmation...
(ici, algorithme d’exclusion mutuelle de Dekker, entre 2 processus)
−→syst`emes dynamiques discrets
Vous en avez d´ ej` a manipul´ e au lyc´ ee...
Circuits ´electriques!
Vin
R1
R3
Va
R2
Vous en avez d´ ej` a manipul´ e au lyc´ ee...
Circuits ´electriques!
Vin
R1
R3 Va R2
a b c
d e f
Les lois de Kirschoff sont li´ees au graphe sous-jacent...
Vous en avez d´ ej` a manipul´ e au lyc´ ee...
Circuits ´electriques!
Vin
R1
R3 Va R2
Va= R2R3
R1R2+R1R3+R2R3
Vin
Graphes non-orient´ es
D´efinition
Un graphe est constitu´e de:
noeuds ou sommets (N) arˆetes (=paire de noeuds, E) On ´ecrit G = (N,E),E ⊆N×N Dans l’exemple pr´ec´edent:
a
b c
d e
f g
N={a,b,c,d,e,f,g} E =
{(a,b),(a,d),(b,d),(b,c), (b,e),(c,e),(e,f),(e,d), (e,g),(f,d),(f,g)}
Graphes non-orient´ es
D´efinition
Un graphe est constitu´e de:
noeuds ou sommets (N) arˆetes (=paire de noeuds, E) On ´ecrit G = (N,E),E ⊆N×N Dans l’exemple pr´ec´edent:
a
b c
d e
f g
N={a,b,c,d,e,f,g} E =
{(a,b),(a,d),(b,d),(b,c), (b,e),(c,e),(e,f),(e,d), (e,g),(f,d),(f,g)}
Graphes non-orient´ es
D´efinition
Un graphe est constitu´e de:
noeuds ou sommets (N) arˆetes (=paire de noeuds, E) On ´ecrit G = (N,E),E ⊆N×N Dans l’exemple pr´ec´edent:
a
b c
d e
f g
N={a,b,c,d,e,f,g} E =
{(a,b),(a,d),(b,d),(b,c), (b,e),(c,e),(e,f),(e,d), (e,g),(f,d),(f,g)}
Repr´ esentation par matrice d’adjacence
Matrice d’adjacence
Supposons queG, graphe, contiennep noeuds num´erot´es n1, . . . ,np, on construit une matriceM de taillep×p avec:
Mi,j =
1 si (ni,nj)∈E 0 sinon
Impl´ementation Java c l a s s Graph {
i n t p ; i n t[ ] [ ] M;
Graph (i n t n ) { p = n ;
M = new i n t[ n ] [ n ] ; }
}
Exemple de matrice d’adjacence
Graphe
a
b c
d e
f g
M =
0 1 0 1 0 0 0
1 0 1 1 1 0 0
0 1 0 0 1 0 0
1 1 0 0 1 1 0
0 1 1 1 0 1 1
0 0 0 1 1 0 1
0 0 0 0 1 1 0
(en num´erotant de 1 `a 7, a,b,c,d,e,f,g resp.)
Avantages et inconv´ enients
Avantages
Certains calculs sont faciles, ex. l’existence de chemins de longueur n par exemple, grˆace au th´eor`eme suivant:
Mi,jn = 1 ssi∃ chemin de i `aj de longueurn Exemple
a
b c
d e
f g
M2 =
1 1 1 1 1 1 0
1 1 1 1 1 1 1
1 1 1 1 1 1 1
1 1 1 1 1 1 1
1 1 1 1 1 1 1
1 1 1 1 1 1 1
0 1 1 1 1 1 1
Avantages et inconv´ enients
Avantages
Certains calculs sont faciles, ex. l’existence de chemins de longueur n par exemple, grˆace au th´eor`eme suivant:
Mi,jn = 1 ssi∃ chemin de i `aj de longueurn Exemple
a
b c
d e
f g
M2 =
1 1 1 1 1 1 0
1 1 1 1 1 1 1
1 1 1 1 1 1 1
1 1 1 1 1 1 1
1 1 1 1 1 1 1
1 1 1 1 1 1 1
0 1 1 1 1 1 1
Avantages et inconv´ enients
Inconv´enients
Repr´esentation peu ´economique!
Il vaut mieux utiliser une repr´esentationcreuse de la matrice (ne repr´esenter que les 1 et pas les 0)
Repr´ esentation par structures dynamiques
En Java, repr´esentation creuse de matrice d’adjacence
c l a s s G r a p h c r e u x { i n t p ;
L i s t [ ] M;
G r a p h c r e u x (i n t n ) { p = n ;
M = new L i s t [ n ] ; }
}
Autre repr´ esentation: matrice d’incidence, un exemple
Matrice arˆetes/sommets:
a
b c
d e
f g
a b c d e f g
(a,b) 1 −1 0 0 0 0 0
(a,d) 1 0 0 −1 0 0 0
(b,d) 0 1 0 −1 0 0 0
(b,c) 0 1 −1 0 0 0 0
(b,e) 0 1 0 0 −1 0 0
(d,f) 0 0 0 1 0 −1 0
(e,c) 0 0 −1 0 1 0 0
(e,d) 0 0 0 −1 1 0 0
(e,f) 0 0 0 0 1 −1 0
(e,g) 0 0 0 0 1 0 −1
(f,g) 0 0 0 0 0 1 −1
Repr´ esentation par matrice d’incidence - exemple
Graphe
a
b c
d e
f g
a b c d e f g
(a,b) 1 −1 0 0 0 0 0
(a,d) 1 0 0 −1 0 0 0
(b,d) 0 1 0 −1 0 0 0
(b,c) 0 1 −1 0 0 0 0
(b,e) 0 1 0 0 −1 0 0
(d,f) 0 0 0 1 0 −1 0
(e,c) 0 0 −1 0 1 0 0
(e,d) 0 0 0 −1 1 0 0
(e,f) 0 0 0 0 1 −1 0
(e,g) 0 0 0 0 1 0 −1
(f,g) 0 0 0 0 0 1 −1
Repr´ esentation par matrice d’incidence - exemple
Graphe
a
b c
d e
f g
a b c d e f g
(a,b) 1 −1 0 0 0 0 0
(a,d) 1 0 0 −1 0 0 0
(b,d) 0 1 0 −1 0 0 0
(b,c) 0 1 −1 0 0 0 0
(b,e) 0 1 0 0 −1 0 0
(d,f) 0 0 0 1 0 −1 0
(e,c) 0 0 −1 0 1 0 0
(e,d) 0 0 0 −1 1 0 0
(e,f) 0 0 0 0 1 −1 0
(e,g) 0 0 0 0 1 0 −1
(f,g) 0 0 0 0 0 1 −1
Graphes orient´ es
D´efinition
Un graphe orient´e est la donn´ee de:
N un ensemble de noeuds
A un ensemble d’arcs,A⊆N×N
La diff´erence par rapport aux graphes non-orient´es est qu’un arc (ni,nj) est orient´e de ni vers nj
Repr´esentation graphique
a
b c
d e
f g
En math´ ematiques...
On appelle carquois un graphe orient´e...
...car il y a des arcs et des fl`eches ;-)
Graphes orient´ es - matrices d’adjacence
Matrices d’adjacence
Cette fois-ci,Mi,j = 1 ssi il existe un arc de i vers j. M n’est plus n´ecessairement sym´etrique
Exemple
a
b c
d e
f g
M =
0 1 0 0 0 0 0
0 0 0 1 0 0 0
0 1 0 0 0 0 0
1 0 0 0 0 0 0
0 1 1 1 0 0 0
0 0 0 1 1 0 0
0 0 0 0 1 1 0
(en num´erotant de 1 `a 7, a,b,c,d,e,f,g resp.)
Impl´ ementation Java
Impl´ementation Java c l a s s Graphmat {
i n t p ; i n t[ ] [ ] M;
Egalement repr´esentation creuse similaire...
Quelques notions utiles...
Chemins, cycles...
Unchemin (orient´e) est une suite de noeuds connect´es par des arcs, donc une suite (ni1,ni2),(ni2,ni3), . . . ,(nik,nik+1)
Uncircuit (oucycle) est un chemin (orient´e) dont le d´ebut est
´
egal `a la fin
Et composantes “fortement connexes”
On peut partitionner l’ensemble des noeuds d’un graphe orient´e en composantes fortement connexes: x, et y dans la mˆeme composante ⇒ x et y appartiennent `a un cycle (notion d’interd´ependance)
Il y a moyen de modifier un peu le parcours en profondeur d’abord, des arbres, pour les graphes (DFS), pour d´eterminer les cycles d’un graphe, et un peu plus...
Algorithme de Tarjan par exemple Plus en INF431!!
En fait, pour l’instant, on montre juste par l’exemple que DFS cr´29 ee
Graphes orient´ es valu´ es
Valuation?
Une g´en´eralisation bien utile!
Chaque arc poss`ede une valuation (valeur enti`ere ou r´eelle typiquement); on passe ainsi d’une matrice d’adjacence `a coefficients dans {0,1} `a des matrices g´en´erales `a coefficients dans NouR!
Impl´ementation Java Toujours la mˆeme!
Exemple
a
b c
d e
f g
3 5 2
1 2
3 7
7
1
5 15
Autre exemple
Capacit´e de transport ´electrique
Pour aller plus loin...
Rapport avec l’alg`ebre lin´eaire...
Tr`es profond... d´ebut de la th´eorie des matro¨ıdes (Whitney, 1935)
Notre exemple
a
b c
d e
f g
3 2
5 1 2
7 3 7
1 5 15
M =
0 3 0 0 0 0 0
0 0 0 1 0 0 0
0 2 0 0 0 0 0
5 0 0 0 0 0 0
0 2 3 7 0 0 0
0 0 0 7 1 0 0
0 0 0 0 5 15 0
Algorithmes de ranking (google...)
Rapport avec l’alg`ebre lin´eaire...
Une th´eorie profonde: Perron-Frobenius, “parle” des matrices `a coefficients positifs, de leur d´ecomposition spectrale etc.
Utilis´e pour le classement des pages web google!:
GrapheG (monstrueux!) o`u les noeuds sont les pages web accessibles
O`u on a un arc d’un noeud vers un autre si la premi`ere page web pointe sur la seconde...
On peut associer une valuation (nombre d’acc`es `a la deuxi`eme page en passant par la premi`ere)
Le rayon spectral de M donne une bonne indication des pages les plus r´ef´erenc´ees
Lustre?
Introduction
Mariage du contrˆole et de l’informatique
Description par sch´ema-bloc (comme Matlab/Simulink, repr´esentation d’un programme par un graphe!) - mais
´
egalement langage textuel
Langage d´eclaratif: ensemble d’´equations En pratique
Versions acad´emique LUSTRE, industrielle SCADE (Esterel Technologies)
Nombreux outils, de preuve, test etc.
Belle s´emantique et utilis´e couramment dans le contrˆole commande (Airbus, Siemens etc.)!
Pr´ eliminaires: r´ eseaux de Kahn
de Gilles Kahn (1974)
Machine th´eorique form´ee d’un graphe:
dont les noeuds traitent des informations envoy´ees d’autres noeuds, envoy´ees par message, par une file non-born´ee de messages
et renvoient sur les arcs sortant des messages `a d’autres noeuds Abstrait en quelque sorte l’´echantillonage et le traitement discret des donn´ees (automatique, traitement du signal etc.) Il va falloir imposer une restriction sur le traitement fait par les noeuds pour que cela ait un sens...
Exemple
Fonctionsa,b,c,d,e,f et g des arcs entrant; flots s transitant sur les arcs:
a
b c
d e
f g
sab
scb sda
sbd seb
sec sed
sfd
sfe
sge
sgf
CPO des suites
Domaine s´emantique
Le domaine des donn´ees S est celui des suitesde valeurs (dans Val) finies (x0, . . . ,xn) ou pas (x0, . . . ,xn, . . .).
On identifiera la suite finie (x0, . . . ,xn) avec la suite infinie `a valeur dans Val∪ {⊥}: (x0, . . . ,xn,⊥, . . . ,⊥, . . .) donc S ={x :N→Val⊥|xi =⊥ ⇒(∀j ≥i,xj =⊥)}
Ordre pr´ efixe
Ordre partiel
On d´efinit l’ordre partielpr´efixe surS par, pourx,y ∈ S, x ≤y si:
xi 6=⊥ ⇒yi =xi
Dit de fa¸con plus simple, x est un pr´efixe de y; et l’ordre pr´efixe est la restriction `aS de l’ordre d´efini au cours 7 pour N→Val⊥ (Val⊥ ´etant un CPO)!
S est donc un CPO! (v´erification triviale) Exemple pour l’ordre pr´efixe
⊥ ≤(0,1,2, . . .)
(0)≤(0,1)≤(0,1,2)≤. . .≤(0,1,2, . . .)
Les fonctions aux noeuds
Pr´erequis
En quelque sorte, on veut qu’elles soient calculables On impose la continuit´e! (cf. cours 7)
On se contente d’imposer pourf :Sn→ Sm la commutation aux sup; celle-ci peut s’imposer coordonn´ee par coordonn´ee (on suppose icim=n = 1): pour touteω-chaˆıne
x0 ≤x1 ≤. . .≤xj ≤. . . deS, f
[
j∈N
xj
= [
j∈N
f(xj)
(comme f(xj) n’est pas n´ecessairement croissante, il faut supposer qu’il existe un supde cette suite, ´egale au terme de gauche, dans cette d´efinition)
“Continuit´ e” dans notre cas
Pour touteω-chaˆınex0 ≤x1 ≤. . .≤xn≤. . . on a, pour tout j ∈N:
S
i∈Nf(xi)
j =
f(xk)j ∃k ∈N,f(xk)j 6=⊥ et ∀l ≥k,f(xl)j =f(xk)j
⊥ sinon
= f S
i∈Nxi
j = f
y →
xjk ∃k0 ∈N,xjk0 6=⊥
⊥ sinon
(x)
Interpr´ etation de la continuit´ e
Intuitivement
Pour j fix´e, laji`eme valeur du flot de sortie def est
d´etermin´ee par l’image parf sur un pr´efixe fini du flot d’entr´ee Sorte d’axiome de “causes finies”!
Exemple de fonction non continue sur S Soitg :S → S telle que:
g(x) =
(0, . . . ,0, . . .) si x est fini (1, . . . ,1, . . .) si x est infini Soity flot infini et yi,i = 0,1, . . . ,tous ses pr´efixes finis:
S
i∈Nyi =y maisf(S
i∈Nyi) = (1, . . .) et S
i∈Ng(yi) =S
i∈N(0, . . .) = (0, . . .)!
Apart´ e - causalit´ e?
Continuit´e et croissance
A l’origine, Kahn demandait juste cette pr´eservation des bornes sup´erieures. Quid de la croissance (=causalit´e!)?
Cela implique la croissance!
Supposons que l’on ait une fonctionf :S → S telle que pour touteω-chaˆınex0 ≤x1 ≤. . .≤xj ≤. . .,
f
[
j∈N
xj
= [
j∈N
f(xj) Soit, pour x≤y, la suite
X = (x0=x,x1=y, . . . ,xn=y, . . .)∈ S, alors f
S
j∈Nxj
=f(y) maisS
j∈Nf(xj) =Z est tel que f(x)≤Z =f(y) par hypoth`ese; CQFD
S´ emantique des r´ eseaux de Kahn
Principe
Chaque noeudN est une fonction continue fN :Sn→ Sm
On ´ecrit une ´equation de point fixe, d´ecompos´ee sur chaque noeud N, pour tous lesm arcs sortants de N versM1 `aMm:
XM1 = f1N(XL1, . . . ,XLn) . . . = . . .
XMm = f1N(XL1, . . . ,XLn)
Les XL1, . . . ,XLn versN sont lesn arcs entrants enN Par Kleene, on a un plus petit point fixe (tous les fiN sont continues sur un CPO): s´emantique (dans les suite infinies de valeurs) du r´eseau!
Maintenant on va voir en pratique `a quoi cela ressemble, dans
Principes de Lustre
R´eseau de Kahn synchrone!
Synchrone: un message par arc du r´eseau est envoy´e/re¸cu `a chaque “tic” d’horloge (globale) - permet d’´eviter l’utilisation detampons de communications potentiellement non born´es;
puissance de calcul similaire aux r´eseaux de Kahn g´en´eraux Un programme Lustre op`ere sur un flot = une suite de valeurs: une variable xen Lustre repr´esente une suite infinie de valeurs (x0,x1, . . . ,xn, . . .)
xi est la valeur dexau temps i
Un programme prend un flot et renvoie un flot Toutes les op´erations sont globales sur un flot:
L’´equation de flotx=eest un raccourci pour∀n, xn=en
L’expression arithm´etique sur les flotsx+y renvoie le flot (x0+y0,x1+y1, . . . ,xn+yn, . . .)
Op´ erateurs temporels
pre(pr´ec´edent)
Donne la valeur au temps pr´ec´edent, d’un flot argument: pre(x) est le flot (⊥,x0, . . . ,xn−1, . . .)
-> (suivi de)
Est utilis´e pour donner des valeurs initiales d’un flot: x->yest le flot (x0,y1, . . . ,yn, . . .)
Remarque: les flots sont typ´es boolest le type des flots de bool´eens etc.
Quelques constructions syntaxiques
Expressions arithm´etiques et bool´eennes
Les mˆemes que d’habitude, mais ´etendues point `a point aux flots Affectations, conditionnelles, s´equence...
Affectation: let ... = ... tel
Conditionnelles: if ... then ... else S´equence:
Organisation d’un programme Lustre
Noeuds des ´equations
Un programme Lustre est un ensemble d’´equations Chaque ´equation (a priori potentiellement mutuellement r´ecursives) est d´efinie par un noeud identifi´e par le mot cl´e node
Une ´equation ou noeud est une fonction prenant des flots en argument, renvoyant un flot en r´esultat
Exemple
Compteur d’´ev´enements
node Count ( e v t , r e s e t : b o o l ) r e t u r n s ( c o u n t : i n t) ; l e t
c o u n t = i f ( t r u e−>r e s e t ) t h e n 0
e l s e i f e v t t h e n p r e ( c o u n t )+1 e l s e p r e ( c o u n t ) ;
t e l
Explication informelle
true->reset est un flot bool´een: ´egal `a vrai `a l’instant initial et quand resetest vrai
quand il est vrai, la valeur de countest renvoy´ee ´egale `a z´ero sinon, quand evtest vrai, on renvoie la valeur `a l’instant pr´ec´edent decountplus 1; sinon on conserve l’ancienne valeur
Exemple d’utilisation
Compter les minutes et secondes mod60 = Count ( s e c o n d , m i n u t e ) ; m i n u t e = s e c o n d and p r e ( mod60 ) = 5 9 ;
Explication
mod60 est la sortie du noeudCount, qui compte les secondes, et se remet `a z´ero chaque minute
minute est vrai quandseconde est cadenc´e et que sa valeur pr´ec´edente est de 59
Repr´ esentation graphique
Autre exemple: FIR
Filtres lin´eaires `a r´eponse finie Entr´ee `a l’instant n,xn
Sortie `a l’instant n,yn donn´ee par:
yn=
L−1
X
m=0
bmxn−m
Graphiquement
Autre exemple: IIR
Filtres lin´eaires `a r´eponse infinie (filtres r´ecursifs) Entr´ee `a l’instant n,xn
Sortie `a l’instant n,yn donn´ee par:
yn=
L−1
X
m=0
bmxn−m+
M−1
X
m=1
amyn−m
IIR
Graphiquement
Exemple: IIR
Code Lustre
Exemple: yn=xn+ 0.9yn−1:
node f i l t e r ( x : r e a l ) r e t u r n s ( y : r e a l ) ; l e t
y = x +0.0 −> 0 . 9∗p r e ( y ) ; t e l ;
Exemple: chien de garde
“Watchdog”
permet de g´erer des ´ech´eances
´
emet alarmquand watchdogest en attente et quedeadline est vrai:
node WATCHDOG1( s e t , r e s e t , d e a d l i n e : b o o l ) r e t u r n ( a l a r m : b o o l ) ;
v a r w a t c h d o g i s o n : b o o l ; l e t
a l a r m = d e a d l i n e and w a t c h d o g i s o n ;
w a t c h d o g i s o n = f a l s e −> i f s e t t h e n t r u e e l s e i f r e s e t t h e n f a l s e e l s e p r e ( w a t c h d o g i s o n ) ; a s s e r t n o t ( s e t and r e s e t ) :
t e l ;
(les flots bool´eenssetet resetne doivent pas ˆetre vrais en mˆeme temps!)
Causalit´ e?
Restriction syntaxique
let x=x+1;: le flot xd´epend instantan´ement de lui-mˆeme, pas possible! (ou alors r´esolution d’´equations, qui ne
donnerait pas de solution ici!)
condition syntaxique impos´ee: une variable r´ecursive doit ˆetre gard´ee par un d´elai. On ne peut pas ´ecrire les choses
suivantes:
x = x +1;
ni:
x = i f b t h e n y e l s e z ; y = i f b t h e n t e l s e x ;
Calcul d’horloges
Op´erateur de sous ´echantillonnage when
Permet de cadencer diff´eremment des processus (=noeuds), mais toujours selon un multiple du temps de base
Op´erateur de sous-´echantillonageX when B, o`u Xest un flot quelconque,Bun flot bool´een
Exemple:
B false false true true false true
X X0 X1 X2 X3 X4 X5
Y=X when B X2 X3 X5
Sur´ echantillonnage
Op´erateur current
Injecter un flot lent dans un nouveau flot rapide (cadenc´e au temps de base)
Exemple:
B false false true true false true
X X0 X1 X2 X3 X4 X5
Y=X when B X2 X3 X5
Z=current Y ⊥ ⊥ X2 X3 X3 X5 Remarque: au d´ebut Zn’a pas de valeur; on utilise souvent current ...->Y plutˆot que current Y
Exemple (Marc Pouzet)
Additionneur
On consid`ere le code:
node somme ( i : i n t) r e t u r n s ( s : i n t) ; l e t s = i −> p r e s + i
t e l ;
On a par exemple:
1 1 1 1 1 1 1
cond true false true true false true
somme 1 1 2 3 4 5 6
somme(1 when cond) 1 2 3 4
(somme 1) when cond 1 3 4 6
Donc en g´en´eral: f(x when c)6=(f x) when c; de mˆeme current(x when c)6=x
On pourrait vouloir ´ ecrire:
l e t h a l f = t r u e −> n o t ( p r e h a l f ) ; o = x & ( x when h a l f )
Compilation?
Le code correspond au calcul yn=xn&x2n
Il faudrait donc un m´ecanisme de passage de valeurs par buffers
Qui ici ne serait pas born´e! (n, . . . ,2n!) Ceci est interdit pas un calcul d’horloge
Calcul d’horloges, encore!
Les horloges utilis´ees par un noeud doivent ˆetre d´eclar´ees et visibles dans l’interface du noeud:
Exemple: d´eclaration d’horloge node s t a b l e s ( i : i n t)
r e t u r n s ( s :i n t; ncond : b o o l ; ( n s : i n t) when ncond ) ; puis d´eclaration d’horloges locales:
v a r cond : b o o l ;
( l : i n t) when cond ; puis le code lui-mˆeme:
l e t
cond = t r u e −> i <> p r e i ; ncond = n o t cond ; l = somme ( i when cond ) ; s = c u r r e n t ( l ) ; n s = somme ( i when ncond ) :
t e l ;
D´ eclarations d’horloges et choix d’impl´ ementation
Les horloges
les constantes sont cadenc´ees sur l’horloge de base du noeud courant
par d´efaut, les variables sont sur l’horloge de base du noeud clock(e1 op e2) =clock(e1) =clock(e2)
clock(e when c) =c
clock(current(e)) =clock(clock(e)) Choix d’impl´ementation
Les horloges sont d´eclar´ees et v´erifi´ees
Pas d’inf´erence, tout est d´eclar´e (ou r`egles implicites, voir plus haut)
Deux horloges sont exactes si elles sont syntaxiquement ´egales
Pour aller plus loin...
Preuve
On peut v´erifier despropri´et´es temporelles, parlant
d’´ev´enements dans le futur (“toujours dans le futur” ou “un jour dans le futur”) - plus g´en´eral que les invariants de la preuve `a la Hoare
“Si `a un instantn,x (=xn) est positif, alors il existe un instant m>n tel que pour tous les instantsk ≥m,y (=yk) est positif”
Une approche: propri´et´es codables en Lustre! (processus
“observateur” - model-checking etc.) Lucid synchrone
Mariage du paradigme fonctionnel, et r´eactif...
Avant de partir en vacances...
Vous aurez bientˆot de vrais choix `a faire...
En fin de deuxi`eme ann´ee: choisir un PA Puis choisir un stage de recherche...
Puis choisir sa quatri`eme ann´ee
Continuer apr`es la quatri`eme ann´ee? (recherche ou pas recherche?)
La formation universitaire en g´ en´ eral...
R´eforme europ´eenne LMD
Produit duprocessus de Bologne(1999):
L: “license” 3 ans(+), pr´epa plus ann´ee 2 de l’X M: “master” 2 ans, PA (Informatique, Conception et
Management de Syst`emes Informatiques Complexes, Electrical Engineering, Bio-informatique etc.) et stage et quatri`eme ann´ee
D: “doctorat” 3 ans(+), en laboratoire ou mixte laboratoire/industrie
Corps, ´ecoles d’applis, master `a l’etranger?
Corps: 2/3 ans, essentiellement un MPA (“Master of Public Administration”) plus corps de fonctionnaire
Ecoles d’application, 1 an fin de M2 (T´el´ecom, Ensimag, Sup´elec etc.)
Master en France (MPRI, COMASIC etc.), Master `a l’´etranger...
Rien n’empˆeche de faire de la formation par la recherche en cours 66
Surtout...
Commencer `a r´efl´echir...
Parlez `a vos enseignants...
Profitez des stages Visitez des entreprises Parlez avec vos anciens
Allez voir les conf´erences multiples d’anciens etc.
Mais faites un choix avant d’ˆetre “choisi”!
Coh´erence d’un projet professionnel!
Industrie, recherche ou administration?
Apr`es un M ou un D?
C’est tout pour aujourd’hui..
La prochaine fois Pˆale!!! (12 juillet) Bon TD!