• Aucun résultat trouvé

Un langage imp´eratif pour la description des syst`emes ind´eterministes/stochastiques

N/A
N/A
Protected

Academic year: 2022

Partager "Un langage imp´eratif pour la description des syst`emes ind´eterministes/stochastiques"

Copied!
15
0
0

Texte intégral

(1)

Un langage imp ´eratif

pour la description des syst `emes ind ´eterministes/stochastiques

V ´erimag/grenoble

(2)

Motivations

initialement le test (description des environnements),

plus g ´en ´eralement pour la simulation, le prototypage ...

Dans ALIDECS :

Description de la fonctionnalit ´e des composants “non programm ´es”

`a l’ ´etat de sp ´ec.

mod ´elisation de composants mat ´eriels

mod ´elisation d’environnements physiques

description de contrats temporels complexes

(3)

Principes de base

Variables

Un syst `eme r ´eactif dont les variables sont connues :

entr ´ees (non contr ˆolables)

E

sorties (contr ˆolables)

S

(+ ´eventuellement des variables internes

V

) Il ob ´eit au mod `ele synchrone :

fonctionnement sur une horloge discr `ete implicite,

les

S

et les

V

d ´ependent de la valeur courante des

E

, mais aussi des valeurs `a l’instant pr ´ec ´edent (les “pres” de

E

,

S

,

V

)

(4)

R ´eactions

Les r ´eactions sont ind ´eterministes :

les

S

et

V

ne sont pas fonctions des

E

et des

pre

, juste en relation

une r ´eaction ind ´eterministe (i.e. un instant dans l’ex ´ecution du syst `eme) peut ˆetre repr ´esent ´ee par une expression bool ´eenne sur les variables et leurs

pre

.

On parlera de contrainte

(5)

Enchaˆınement des contraintes

N.B. le fait d’avoir les

pre

suffit pour exprimer la dynamique d’un syst `eme mais ce n’est pas pratique :

difficile d’exprimer des comportements s ´equentiels (type sc ´enarios)

difficile d’introduire des notions probabilistes

Mod `ele des automates `a poids

structure de contr ˆole explicite ( ´etats/transitions)

les transitions sont ´etiquet ´ees par une contrainte

et par un poids relatif

(6)

Exemple

X Y Z

a[1]

c[4]

b[3]

Depuis

X

, une transition est choisie parmi les satisfiables selon le rapport de leurs poids. Par exemple :

• a

,

b

et

c

satisfiables :

P

a

= 1/7

,

P

b

= 3/7

et

P

c

= 4/7

.

seulement

a

et

c

satisfiables :

P

a

= 1/5

,

P

b

= 0

et

P

c

= 4/5

.

seulement

a

: elle est choisie avec la proba

1

N.B. si aucune transition n’est satisfiable, le syst `eme se bloque !

(7)

Extensions du mod `ele

Les poids dynamiques, fonction des non-contr ˆolables uniquement, permettent d’exprimer des comportements “vivants”

Le poids infini (resp. infime) comme formalisation du choix imp ´eratif (resp. de dernier recours).

Transitions “branchues”, pour exprimer des probabilit ´es complexes

Langage de haut niveau ?

les automates `a poids sont un mod `ele,

besoin d’un langage de plus haut niveau

(8)

Lutin v1

M ˆeme principes de base (variables, contraintes)

Structures de contr ˆole bas ´ee sur des op ´erateurs r ´eguliers :

?

la s ´equence :

t fby t’

?

la boucle :

loop { t }

et ses versions contraintes :

loop˜200:30 { t } loop[100:400] { t }

?

le choix stockastique :

{

t1

weight

w1

|

...

|

tn

weight

wn

}

?

le choix prioritaire :

{

t1

|>

...

|>

tn

}

?

la projection :

assert

c

in

t

Probl `eme essentiel : qu’elle est la bonne notion de modularit ´e ?

(9)

Lutin V2

La notion de syst `eme ind ´eterministe n’est pas la bonne “brique” de base pour une approche modulaire.

La notion retenue est celle de “bouts de comportements”, r ´eutilisables dans le contexte de n’importe quel syst `eme.

Par exemple :

let increase(x : real) = loop { x >= pre x }

Plus g ´en ´eralement : on rajoute une “couche” fonctionnelle `a Lutin, sans ordre supp ´erieur ni r ´ecursivit ´e (on reste “temps-r ´eel”).

Un calcul de type simple permet d’assurer la correction des programmes

(10)

Syst `eme de type

Les types de valeurs pr ´ed ´efinisi

int

,

bool

et

real

Le “type”

trace

comme abstraction de la notion de comportement dynamique

Toute expression

bool

est implicitement une contrainte, donc une

trace

(de longueur

1

)

Les op ´erateurs (y compris les structures de contr ˆole) sont typ ´ees, par exemple :

? fby

:

trace × trace 7→ trace

? weight

:

( trace × int )

+

7→ trace

(11)

Syntaxe abstraite

system

::= node

id

(

varlist

) returns (

varlist

) =

exp

exp

::=

id

|

constant

|

id

(

explist

)

| let

id

:

type

(

params

) =

exp

in

exp

| exist

varlist

in

exp

|

statement

statement :

fby

,

loop

, choix etc.

+ quelques constructions inspir ´ees par les “faiblesses” de la v1

n.b. les op ´erateurs arithm ´etiques et logiques sont des fonctions pr ´ed ´efinies

(12)

Exceptions

L’impossibilit ´e de g ´erer les blocages est un probl `eme : besoin d’un

“catch”

Plus g ´en ´eralement, introduire une notion d’exception pour g ´erer les

“passages” de contr ˆole transversaux

D ´efinition d’une exception, au (top-level, pas de contexte) :

exception

Ident

Une exception pr ´ed ´efinie (mot-cl ´e) :

Deadlock

Lev ´ee :

raise

Id

(type :

exception 7→ trace

)

Interception :

try

exp

with

Id

do

exp

(type :

trace × exception × trace 7→ trace

)

(13)

Concurrence

(en cours de r ´eflexion)

R ´eel besoin, mais difficile `a d ´efinir et maˆıtriser (quid des probas ? quid de l’arr ˆet ?)

Une piste :

{

exp1

||

exp2

}

o `u :

?

termine si quand le dernier termine ( `a la Esterel)

?

r ´esolution des probas par choix `a pile ou face du premier

“joueur”

?

alternative :

{

exp1

&|

exp2

}

, les poids de exp1 sont trait ´es parfaitement, exp2 est “servi” apr `es

(14)

Automates

(en cours de r ´eflexion)

Il “suffit” d’accepter la r ´ecursion terminale pour la d ´efinition des trace :

let rec

X =

{

a

bfy

X

|

b

fby

Y

} and

Y =

{

c

bfy

X

|

d

fby

Z

} and

Z =

{

e

bfy

Y

|

f

fby

Z

} in

A

Est-ce la bonne solution ?

(15)

Avancement

Le langage est impl ´ement ´e (sauf concurrence et automates)

Le compilateur est partiellement ´ecrit :

?

typage “grossier” et port ´ee des ident

?

typage “fin” et expansion

?

reste `a faire la g ´en ´eration d’automate

Références

Documents relatifs

La diff´ erence principale de la description statistique r´ eside dans l’introduction de la matrice-densit´ e (l’op´ erateur-densit´ e) qui remplace la dis- tribution de

– Il ne peut y avoir plus d’un processus dans sa section critique en mˆeme temps – Un processus en dehors de sa section critique ne peut bloquer un autre

Jacques Gangloff (ENSPS) Syst `emes temps r ´eel et syst `emes embarqu ´es Ann ´ee scolaire 2007-2008 1 /

– Obligation de publier les sources (pas de module binaire dans le noyau) – Pas adapt´e aux syst`emes `a taille m´emoire tr`es

3 Programmation d’un syst `eme embarqu ´e La compilation crois

On peut montrer qu’une telle matrice a toujours une direction propre dans le cˆ one positif (ensemble des vecteurs dont toutes les coordonn´ees sont positives), qui correspond ` a

Les deux champs suivants fournissent le nom et le type du fichier (ce dernier ´etant devenu extension dans le syst`eme MS-DOS). Le champ suivant, extension, est n´ecessaire pour

Il avait 45 roses de plus que