• Aucun résultat trouvé

a partir d’une ´echelle de temps logique donn´ee, on peut d´efinir une ´echelle plus fine, grˆace `a laquelle on peut observer de possibles d´ecalages temporels d’´ev´enements produits par le syst`eme durant son ´evolution. Ce raffinement temporel ne modifie pas l’ordre partiel 4b dans les sous-graphes associ´es `a tout comportementbdu processus. Seule l’´echelle de temps change. Puisqu’il y a potentiellement plus de points d’observation sur une ´echelle de temps sur-´echantillonn´e, les sous-graphes peuvent ˆetre ´etir´es de fa¸con `a pr´eciser certains d´ecalages temporels non visibles entre des ´ev´enements sur l’´echelle initiale. Par exemple, la production de la valeur de z dans le processus P≡ z := x + y n´ecessite un certain d´elai apr`es r´eception des valeurs de x et y. Nous pouvons donc imaginer un sch´ema d’ex´ecution2-step, compos´e dedeux instants logiques : le premier d´enote l’acquisition des entr´ees (i.e., valeurs de x et y) et le second, la production des sorties (i.e., valeur de z). Cela revient tout simplement `a d´ecomposer en deux, par sur-´echantillonnage, chaque instant logiquetk de la Fig. 4.5. De fa¸con similaire, on peut continuer `

a raffiner la description jusqu’`a la mise en ´evidence des d´ecalages7entre les instants d’acquisition d’une part et ceux de production d’autre part. On irait alors vers un sch´ema d’ex´ecutionn-step

(o`und´enote le nombre d’instants logiques r´esultant du sur-´echantillonnage de l’´echelle de temps initiale). Plus g´en´eralement, le raffinement temporel d’un processus est d´efini comme suit :

D´efinition 15 (raffinement temporel) Soitp un processus d´efini sur un ensemble de points d’observation T1, le raffinement temporel de p sur un ensemble de points d’observation T2 tel que T1⊂ T2 est d´efini par la clˆoture par ´etirement dep sur T2.

Nous observons ainsi que des comportements temps r´eel peuvent ˆetre d´ecrits de fa¸con pr´ecise dans le mod`ele polychrone. Le plongement de l’ensemble des points d’observation dans une ´echelle de temps physique se fait alors tr`es facilement.

∗ ∗

Le mod`ele polychrone offre `a travers ses caract´eristiques un cadre formel int´eressant pour d´ecrire et ´etudier diff´erents aspects li´es `a la conception de syst`emes temps r´eel. Dans les chapitres suivants, nous nous attacherons `a montrer la pertinence de ce mod`ele `a travers l’utilisation du langageSignal, qui en est le formalisme associ´e.

4.3 Abstraction syntaxique

Un programme Signal Pd´ecrit `a la fois les synchronisations entre ses signaux ainsi que le calcul de leurs valeurs. L’isolation de ces aspects permet de traiter plus facilement des propri´et´es sp´ecifiques du programme. Celui-ci peut donc ˆetre abstrait au travers d’un autre programme

P’ qui refl`ete uniquement les aspects concern´es par les propri´et´es qu’on souhaite v´erifier. Le programmeP’est obtenu `a l’aide de transformations syntaxiques. Celles-ci permettent souvent des d´ecompositions en paires du programme initialP, distinguant par exemple :

– la partiecombinatoire8, induite par les processus ´el´ementaires statiques (fonctions instan-tan´ees, sous-´echantillonnage et m´elange d´eterministe) et la partie m´emorisation, d´efinie par la seule construction primitive dynamique du langage (d´ecalage) ;

– la partie contrˆole, constitu´ee par les bool´eens et les horloges, et la partiecalcul.

Une pr´esentation d´etaill´ee de ces diff´erentes d´ecompositions se trouve dans [166]. Nous in-troduisons ici le principe de base de ces transformations.

4.3.1 Principe

Il r´esulte imm´ediatement de la d´efinition de la composition que pour tous processus P,P’

([[P]]|[[P’]])|vars([[P]])⊆[[P]] On peut montrer plus pr´ecis´ement que

[[P]] = ([[P]] |[[P’]])|vars([[P]]) ssi [[P]]|vars([[P’]])⊆[[P’]]|vars([[P]])

Autrement dit, tout comportement de [[P]] est compatible avec au moins un comportement de [[P’]].

On a donc, lorsque vars([[P]]) =vars([[P’]])

[[P]] |[[P’]] = [[P]] ssi [[P]]⊆[[P’]]

SiP’ d´enote une propri´et´eQ, elle sera donc satisfaite par tous les comportements de Pssi

[[P]] |[[Q]] = [[P]]

L’abstraction syntaxique par d´ecomposition d’un programme Signal P consiste `a d´eriver syntaxiquement, `a partir des ´equations qui constituent celui-ci, un autre programme α(P), o`u

α d´enote cette abstraction. α(P) est ensuite utilisable pour analyser P.

D´efinition 16 (abstraction syntaxique par d´ecomposition) Etant donn´e un processus´ P, le processus α(P) tel que vars([[α(P)]]) vars([[P]]) r´esulte d’une abstraction syntaxique par d´ecomposition α de Pssi :

[[P]] |[[α(P)]] = [[P]]

ou de fa¸con ´equivalente ssi :

[[P]]⊆[[α(P)]]

Puisque l’abstraction α d’un programme P repose sur une d´ecomposition, elle induit une relation de compl´ementarit´e entre α(P) et une partie de P. Si ρ(P) d´enote une telle partie (ρ

est mis pour “r´esidu”), `a une abstractionα d’un programme SignalP, on peut associer une9 d´ecomposition syntaxique (α, ρ) d´efinie par un ensemble de r`egles de r´ecriture :

P −→ α(P) |ρ(P)

8. Appel´ee aussi partiestatique. 9. En fait, parmi une infinit´e.

satisfaisant :

[[P]] = [[α(P) |ρ(P)]] On montre que α(P) est bien une abstraction deP; en effet,

[[P]] |[[α(P)]] = [[α(P) |ρ(P)]]|[[α(P)]] (par d´efinition) = [[α(P)]]|[[ρ(P)]]|[[α(P)]] (par d´efinition de |) = [[α(P)]]|[[α(P)]]|[[ρ(P)]] (par commutativit´e de|) = [[α(P)]]|[[ρ(P)]] (par idempotence de|) = [[α(P) |ρ(P)]] (par d´efinition de|) = [[P]]

L’abstractionα r´esultant de cette d´ecomposition doit de plus ˆetre un endomorphisme idem-potent : lorsqu’on abstrait par α un programmeP’, issu d´ej`a d’une premi`ere application de la mˆeme abstraction `a un programmeP, le r´esultatP’’ne doit pas induire de nouveau relˆachement de la s´emantique deP’.

D´efinition 17 (d´ecomposition syntaxique) On appelle d´ecomposition syntaxique tout couple de transformations (α, ρ) satisfaisant pour tout processus ´el´ementaire P:

[[α(P) |ρ(P)]] = [[P]]

et tel que α est idempotente :

[[α(α(P))]] = [[α(P)]]

La d´ecomposition syntaxique (α, ρ) est alors d´efinie inductivement pour la composition et le confinement :

α(P1 | P2) =α(P1) | α(P2) et ρ(P1 | P2) =ρ(P1) |ρ(P2)

α(P/x) = (α(P))/x et ρ(P/x) = (ρ(P))/x

Exemples d’utilisations :

– Pour ´etudier la consistance des contraintes de synchronisation de P, on abstrait le pro-gramme en ne gardant que ses synchronisations. Celles-ci correspondent `a la plus grande relation qui lie les horloges de P(cf.Fig. 4.10).

– Pour ´etudier la dynamique du syst`eme d’´equations formant P, on abstrait celui-ci par ses variables d’´etat. Elles sont d´efinies par les op´erateurs dynamiques du langage (cf. Fig. 4.8). Par cons´equent, on ne s’int´eresse sp´ecifiquement qu’`a ces op´erateurs.

Dans [166], l’abstraction α a ´et´e reformul´ee dans le cadre de l’interpr´etation abstraite [72] qui est une th´eorie g´en´erale permettant d’approximer la s´emantique des syst`emes dynamiques discrets. L’interpr´etation abstraite exprime l’analyse statique comme une correspondance for-melle entre la s´emantique concr`ete d’un programme et une s´emantique abstraite guid´ee par la propri´et´e `a prouver. Une propri´et´e importante de α qui a ´et´e d´emontr´ee dans [166] est sa monotonie.

Propri´et´e 2 Pour tous programmes P1 et P2, on a

4.3.2 Abstractions usuelles

Nous pr´esentons dans cette section deux exemples d’application d’abstractions syntaxiques `

a un programme Signal pour en extraire des informations. Ces exemples concernent plus pr´ecis´ement l’extraction de la partie statique (i.e., la partie qui ne comporte aucune expression d´efinie `a l’aide de constructions dynamiques comme le retard), et l’extraction de la partie d´efinissant le contrˆole d’un programme.

Abstraction statique (ou combinatoire). Une d´efinition de cette abstraction est obtenue `

a travers le partitionnement des constructions du noyau de Signal en deux classes : d’une part, les primitives portant sur des donn´ees purement combinatoires (fonctions instantan´ees, filtrage et m´elange d´eterministe) et d’autre part, l’unique primitive sur signaux qui induit une

m´emorisation (retard). En utilisant ce partitionnement, un programme P est d´ecompos´e syn-taxiquement en une partie statiqueαstat(P) et une partie dynamique ρstat(P).

La Fig. 4.8 indique les parties αstat(P) et ρstat(P) pour chaque construction de base sur signaux. On remarquera que pour le retard, il existe aussi une partie statique qui exprime le fait que les signaux impliqu´es sont synchrones. On v´erifie facilement que αstat pr´eserve bien la s´emantique des programmes et elle est s´emantiquement idempotente. Pour tout processus ´el´ementaireP, on montre que

[[αstat(P)]] |[[P]] = [[P]]

En effet, pour les fonctions instantan´ees, le filtrage et le m´elange d´eterministe, on le v´erifie par idempotence de la composition. En ce qui concerne l’op´erateur de retard, la propri´et´e reste vraie puisque l’´equationy ^= x n’ajoute aucune contrainte suppl´ementaire `a celle qui correspond `a

P(c’est-`a-dire, y := x $ 1 init c).

P αstat(P) ρstat(P)

y := f(x1,...,xn) y := f(x1,...,xn)

y := x $ 1 init c y ^= x y := x $ 1 init c

y := x when b y := x when b

y := u default v y := u default v

Figure 4.8 – Parties statiques et dynamiques des processus primitifs sur signaux.

Abstraction par le contrˆole. Le contrˆole d’un programme Signal est form´e d’une part, de sa partie purement bool´eenne, et d’autre part, des synchronisations. Pour l’extraire, nous consid´erons donc deux abstractions interm´ediaires permettant d’obtenir les deux parties qui le composent.

Abstraction purement bool´eenne. Etant donn´e un programme´ P, cette abstraction consiste `

a isoler autant que possible le composant αbool(P) d´efini uniquement sur des variables de type bool´een. Des raisonnements purement bool´eens peuvent ainsi ˆetre appliqu´es `a ce composant. La Fig. 4.9 illustre une d´ecomposition syntaxique de P qui permet de d´efinir αbool(P) ainsi que sa partie compl´ementaire ρbool(P). Dans le tableau, expr10,

non_bool_expr11 etbool_expr12 repr´esentent des expressions ´el´ementaires, c’est-`a-dire,

10. Toute expression de valeur non bool´eenne.

11. Typiquement, toute expression d´efinie avec un op´erateur de comparaison arithm´etique comme<,<=,>ou >=.

d´efinies `a l’aide d’op´erateurs ´el´ementaires, o`u les op´erandes sont des variables ou des constantes.

P αbool(P) ρbool(P)

x := expretDom(x)6=B P

x := non bool expretDom(x) =B P

x := bool expret Dom(x) =B P

Figure 4.9 – S´eparation des parties bool´eennes et non bool´eennes d’un processus.

Les variables bool´eennes qui ne sont pas d´efinies dans la partie αbool(P) sont consid´er´ees comme des entr´ees du programme abstrait. La transformation αbool v´erifie bien les pro-pri´et´es d’une abstraction syntaxique :

[[αbool(P)]]|[[P]] = [[P]]

Abstraction par les synchronisations. Pour d´efinir cette abstraction, on se base sur le fait qu’une ´equation Signal sp´ecifie une relation portant `a la fois sur les valeurs des variables impliqu´ees et sur les horloges des variables (repr´esentant les synchronisations). L’abstraction αsync, illustr´ee sur la Fig. 4.10, consiste alors `a ne garder que les infor-mations d’horloges d’un programme P. Le programme αsync(P) r´esultant est en relation de compl´ementarit´e avec P lui-mˆeme (i.e. ρsync(P) = P). D’autre part, puisqu’il n’induit aucune contrainte suppl´ementaire surP, on montre trivialement que :

[[αsync(P)]]|[[P]] = [[P]] P αsync(P) y := f(x1,...,xn) y ^= x1 ^= ... ^= xn y := x $ 1 init c y ^= x y := x when b y ^= x when b y := u default v y ^= u ^+v

Figure4.10 – Extraction des synchronisations.

On observe queαsyncrepr´esente une abstraction de l’abstraction statique αstat d´ej`a men-tionn´ee, c’est-`a-dire :

[[αstat(P)]]⊆[[αsync(P)]]

Au moyen des abstractions αbool etαsync, le contrˆole d’un programmeSignal Pest d´eduit en composant les sous-programmes r´esultant de l’application de celles-ci `a P. On peut donc d´efinir l’abstraction par le contrˆole comme suit :

αcont(P) =αbool(P)|αsyncbool(P))

Celle-ci est en relation de compl´ementarit´e avec la partie calculs (repr´esent´ee par ρcont(P) qui peut ˆetre d´efini commeρbool(P). En effet, de P=αbool(P)|ρbool(P), on d´ecompose ρbool(P) sui-vant les synchronisations ; on obtient alors P = αbool(P) | syncbool(P)) | ρbool(P)), d’o`u on d´eduit l’´egalit´e suivante : P=αcont(P) bool(P))).

Le programme αcont(P) convient pour la v´erification de propri´et´es sur P `a l’aide de l’outil de model-checking Sigali [160], disponible dans Polychrony. Cet outil utilise un encodage du programme fourni en entr´ee dans le corps Z/3Z, repr´esent´e par l’ensemble {−1,0,1} : les valeurs−1, 1 et 0 d´enotent respectivement la “pr´esence avec la valeurfaux”, la “pr´esence avec

la valeur vrai” et l’ “absence”. Cet encodage prend en compte compl`etement la valeur des signaux bool´eens, mais pas celle des signaux num´eriques. Nous reviendrons plus en d´etail sur

Sigalidans le chapitre 6. L’analyse statique effectu´ee par le compilateurSignal, appel´eecalcul d’horloges [39] [16] [167], se base sur la partiecontrˆole statiquedeP. Cette partie est ´equivalente au programmeαstatcont(P)).

Concr`etement, ´etant donn´e un programme P `a analyser par le compilateur, ses parties contrˆole et traitements de donn´ees sont d’abord s´epar´ees13[39] [16]. Ensuite, uneanalyse struc-turelle est effectu´ee sur la partie contrˆole statique du programme : cela consiste en un ensemble de transformations s´emantiquement pr´eservantes au syst`eme d’´equations d’horloges. Il en r´esulte alors une forme dite r´esolue de P. La repr´esentation interne de celle-ci, adopt´ee par le compi-lateur, est appel´ee graphe hi´erarchis´e aux d´ependances conditionn´ees (ou GHDC). Ce graphe sert de base `a toutes les analyses propos´ees `a la compilation. Chacun de ses nœuds contient un ensemble de signaux pr´esents `a une mˆeme horloge. Cela permet par exemple d’´etudier la consistance des flots de donn´ees sp´ecifi´es dans un processus (i.e., la compatibilit´e des contraintes impos´ees sur les horloges des signaux). On peut aussi v´erifier des propri´et´es comme l’absence to-tale de r´eaction de la part du syst`eme d´ecrit (en d’autres termes, les contraintes dans le syst`eme d’´equations d’horloges imposent `a toutes les horloges d’ˆetre nulles). Par ailleurs, la forme r´esolue facilite l’´etablissement d’un ordre suivant lequel le programme pourrait ˆetre ex´ecut´e. Le calcul correspondant s’appuie en partie sur l’ordre partiel des horloges, qui correspond `a l’inclusion des ensembles d’instants (une horloge pouvant ˆetre plus fr´equente qu’une autre).