Interprétation abstraite d'un programme Signal
| |
Le codage polynomial décrit les aspects logiques et la synchronisation des programmes Signal. Les informations représentées sont l'absence ou la présence des signaux ainsi que la valeur des signaux booléens.
Dans le but de modéliser son comportement, un processus Signal est traduit en un système d'équations polynomiales sur les entiers modulo 3 : { -1, 0, 1} . Le principe est de coder les trois valeurs possibles d'un signal booléen A (i.e. present et true, present et false et absent) en une variable a de la manière suivante :
-
Un booléen présent et true est codé par la valeur 1
-
Un booléen présent et faux est codé par la valeur -1
-
Un booléen absent est codé par la valeur 0
Pour les signaux non-booléens dont la valeur ne peut pas être
représentée,seule l'absence et la présence sont codées:
-
Un signal non booléen présent est codé par 1
-
Un signal non booléen absent est codé par 0
Par ce codage, un événement sur n signaux est représenté par un vecteur dans (F3)n. De plus, la présence d'un signal est codée par la valeur 1. Par conséquent un signal A est synchrone avec un signal B si et seulement si ils satisfont l'équation a2 = b2.
Chaque opérateur élémentaire du noyau Signal peut ainsi être codé sous forme équationnelle. Par exemple, C := A when B, signifiant :
if b=1 then c=a else c=0, est réécrit c = a(b-b2).
Le délai $, qui est l'opérateur dynamique, est différent, car il requiert la mémorisation de la dernière valeur dans une variable d'état. Ainsi pour coder A := B$1 init A0, il est nécessaire d'introduire les trois équations suivantes:
L'équation (1) permet de calculer la nouvelle valeur x' de la
variable d'état. Si b est présent, x' est égal à b
(parceque (1-b2)=0 ); autrement x' est égal à la dernière valeur
de b, mémorisé par x. L'équation (2) donne à a la dernière
valeur de b (i.e. la valeur de x) et contraint l'horloge de a à
être égale à celle de b. En effet, on a a2= x2b4 , et dans
F3 nous avons b3 = b , i.e. b4 = b2 , ceci donne donc a2= x2b2 ; Comme de plus x2 = 1 (car x est toujours
présent), et finalement a2 = b2 . L'équation (3) correspond à
la valeur initiale de x, qui est la valeur initiale de a.
Certains opérateurs peuvent être codés de deux façons suivant le
type des signaux. L'ensemble des codages est donné par la table suivante :
En composant les différentes équations résultantes des différents
processus élémentaires, tout programme Signal peut être traduit en
un ensemble d'équations, appelé système dynamique polynomial. En
utilisant ce codage, un processus est donc traduit en un système
d'équations de la forme :
Ce système est constitué
- d'un ensemble de n variables X = { X1,...,Xn} appelées
variables d'états;
- d'un ensemble de m variables Y = { Y1,...,Ym} , appelées
variables d'événements ,
- d'un ensemble de contraintes Q(X,Y)=0. Il est représenté
par un vecteur [Q1,..,Ql], regroupant toutes les
équations caractérisant l'aspect statique du système (invariant pour
tout les instants t);
- d'une fonction d'évolution P(X,Y) de
(F3)n+m dans (F3)n. Cet ensemble regroupe toutes
les équations concernant les variables d'états et caractérise l'aspect
dynamique du système;
- d'un ensemble de n équations [Q01,..,Q0n] , appelées
contraintes d'initialisation notées Q0(X) = 0 et caractérisant
l'initialisation des variables d'états du système. Quand la contrainte
initiale n'est pas précisée, il s'agit d'un système dynamique polynomial
pour lequel tous les états sont des états initiaux, ce qui revient à prendre Q0 = 0 .
Les X proviennent de la traduction des signaux retardés, les Y
représentent les signaux booléens et les horloges du programme. Le
système dynamique décrit les suites de couples états / événements que
peut produire le programme, c'est à dire les suites (xi,yi)i telles que Q0(x0) = 0 .
Ces suites sont appelées les trajectoires du système. Un couple
x,y tel que Q(x,y) = 0 est dit admissible ; on dira aussi
qu'un état x est admissible s'il existe un y tel que Q(x,y) = 0.
Si x et x' sont deux états et qu'il existe un y tel que Q(x,y)
= 0 et x' = (x,y), on dira que x' est un successeur de x
et réciproquement que x est un prédécesseur de x'.
Le programme Signal suivant,
process altern = {? event A,B !}
(| C := not ZC
| ZC := C$1
| synchro{A,when C}
| synchro{B,when ZC}
|)
where
end
est codé par un système dynamique polynomial comprenant les variables a, b,
c et zc, correspondant respectivement aux événements A, B et aux signaux
booléens C et ZC, et une variable d'état x, introduite par le delai. Le
système obtenu est le suivant :
- une équation d'évolution : x = -1,
- une équation d'évolution : x' = c + (1-c2)*x
- un système d'équations de contraintes :
c = -zc, zc = x*c2, a2= when c, b2 = when zc
Système de transition résultant
|
Un système dynamique polynomial peut également être vu comme un système de
transition fini. Les états initiaux de l'automate sont les solutions de
l'équation Q0(X) = 0 . Quand le système est dans l'état x de (F3)n, tout événement y de (F3)m tels que Q(x,y))=0
constitue une transition qui peut être tirée. Dans ce cas le système évolue
dans l'état x' tel que x'=P(x,y).
Webmaster : epatr_webmaster@irisa.fr
Last modified: Wed Mar 24 13:30:06 MET 1999