Sous-sections
Mots clés : Signal, transformation de
programme, système dynamique polynomial, vérification,
synthèse de contrÔleur, BDD .
Résumé :
Le principe de transformation des programmes Signal
permet de décomposer un programme en une partie décrivant
le contrÔle booléen et une partie contenant les calculs. Le
contrÔle lui-même définit un système dynamique qui peut
être étudié sous plusieurs aspects à des fins de
vérification et de synthèse : étude de l'ensemble des
états admissibles (partie statique), pour laquelle une
forme canonique arborescente utilisant des
BDD a été définie ; calcul dynamique
s'appuyant sur la représentation équationnelle d'un
automate.
En appliquant le principe de transformation, on décompose
un programme P en une partie
Q(P) contenant le
contrÔle booléen et une partie C(P) contenant les calculs non
booléens, telles que
P = Q(P)|
C(P).
Toute propriété de sûreté, qui peut s'exprimer sous la
forme d'un programme Signal R, satisfaite par Q(P), ce qui s'exprime sous la
forme
R| Q(P) =
Q(P), est également satisfaite par
P, puisqu'il résulte de
P = Q(P)|
C(P) que P =
Q(P)| P (voir 3.1.1).
À une équation purement booléenne I correspond Q(I) = I ; C(I) est alors l'élément neutre
du monoïde.
D'une équation monocadencée, est extraite par Q la partie synchronisation des signaux
; on obtient par exemple pour x := y+z
l'expression :
x ^= y ^= z | x := y+z
(x ^= y ^= z spécifie l'égalité des horloges de
x, y et z).
Une équation de la forme x := y when b, dans
laquelle x est non booléen, est décomposée
en : x ^= (y when b) | x := y when b.
Une équation de la forme x := y default z, dans
laquelle x est non booléen, est décomposée
en : x ^= (y default z) | x := y default
z.
Cette interprétation permet donc d'extraire, de faÇon
automatique, par Q(P), l'aspect système à
événements discrets, du système hybride spécifié par le
programme. En raison de l'opérateur de retard qui introduit
des indices temporels différents, le système est
dynamique.
L'étude de ces systèmes dynamiques repose sur
l'utilisation de techniques algébriques sur les corps de
Galois. Elle vise à exprimer les propriétés des systèmes
dynamiques et à donner une solution algorithmique pour leur
vérification et pour la synthèse de systèmes satisfaisant
certaines spécifications.
Q(P) est défini
sur trois valeurs : { vrai, faux, absent }.
La sémantique des opérateurs de Signal et l'approche flot de
données équationnelle conduisent naturellement à un codage de
Q(P) en équations
polynomiales sur le corps
Z/3Z (ou
3), vrai,
faux, absent étant représentés
respectivement par 1, -1, 0 (+ est l'addition modulo 3, x est la multiplication usuelle).
L'étude de la sémantique abstraite d'un programme Signal
se ramène alors à l'étude des systèmes dynamiques de la
forme :
où X est un vecteur
d'état dans
(Z/3Z)n et
Y un vecteur d'événements
(interprétations abstraites de signaux) qui font évoluer le
système.
Un tel système dynamique n'est qu'une forme particulière
de système de transitions à espace d'états finis. C'est donc
un modèle de système à événements discrets sur lequel il est
possible de vérifier des propriétés [2] ou
bien de faire du contrÔle.
L'étude d'un programme consiste alors en :
- l'étude de sa partie statique, c'est-à-dire
l'ensemble de contraintes
- l'étude de sa partie dynamique, c'est-à-dire
le système de transitions
| Xn + 1 |
= |
P(Xn,
Yn) |
|
Q0(X0) |
= |
0 |
et l'ensemble de ses états atteignables, etc.
Différentes techniques ont été développées pour ces deux
problèmes. Les contraintes statiques sont essentielles pour
la compilation des programmes Signal, et des
techniques très efficaces ont été développées pour cela. La
partie dynamique demande plus de calculs, et est utilisée
principalement pour la vérification de propriétés ; une
technique plus générale -- mais en retour moins efficace -- a
été développée pour la prendre en compte.
Le calcul d'horloges statique est au coeur du compilateur
Signal ; il en détermine largement ses performances. Ce
calcul s'appuie sur l'ordre partiel des horloges, qui
correspond à l'inclusion des ensembles d'instants (une
horloge pouvant être plus fréquente qu'une autre).
La situation suivante doit être considérée :
H est l'horloge d'un signal, par exemple un
signal à valeurs réelles X, et K
est l'ensemble des instants où le signal X
dépasse un seuil : K := when (X >
X_MAX). Alors 1/ chaque instant de K est
un instant de H, et 2/ pour calculer le statut
de K, il faut d'abord connaître le statut de
H. Il y a donc à la fois le fait que
K est moins fréquent que H et qu'il
existe une contrainte de causalité de H vers
K. Ceci est dénoté par H
K. De tels sous-échantillonnages
successifs organisent les horloges en plusieurs
arbres, l'ensemble de ces arbres constituent la
forêt d'horloges du programme considéré. Si un seul
arbre est obtenu, la synchronisation du programme et son
exécution s'en déduisent aisément.
La forêt associée à un programme donné n'est pas unique,
la question de l'équivalence de forêts d'horloges se pose
donc. Une forme canonique de forêt a été définie
[1]. Un algorithme efficace pour trouver cette
forme canonique a été développé. Il repose sur des
manipulations préservant l'équivalence, prenant en compte
l'ordre des variables résultant de la causalité, et combinées
à des techniques BDD ( Binary Decision
Diagrams introduits par Bryant en 1986 [Bry86]).
Le calcul dynamique s'appuie sur la représentation
équationnelle d'un automate : les automates, leurs
états, événements et trajectoires sont manipulés au travers
des équations qui les représentent. Calculer des
trajectoires d'états ou d'événements, des états atteignables,
des projections de trajectoires, des états de
deadlock, etc., s'effectue alors sur les
coefficients des équations polynomiales. De manière
similaire, des techniques de synthèse de contrÔle
ont été développées pour un système dynamique donné pour
différents types d'objectifs de contrÔle proposés par Manna
et Pnueli [MP92,MP95], mais aussi pour des objectifs de
contrÔle portant sur la qualité de service.
La manipulation d'équations dans
3 est tout à fait
similaire à la manipulation d'équations booléennes. Une
variante de la technique BDD, appelée
TDD (Ternary Decision Diagrams -- les noeuds
ont trois valeurs possibles), a été développée pour réaliser
ces calculs. Des expériences ont montré que le système formel
Sigali qui en résulte peut effectuer en un temps raisonnable
des preuves (ou de la synthèse de contrÔleurs) sur des
automates comportant plusieurs millions d'états
atteignables.
Partant d'un modèle global du système, contrÔler un système
dynamique polynomial consiste à se donner un objectif de
commande (propriétés des trajectoires) et à synthétiser un
contrÔleur répondant à cet objectif [10].
Figure 1: Principe du contrÔle
|
|
Dans notre approche, le contrÔleur synthétisé est une
équation polynomiale,
C(X, Y,
U), dépendant de l'état courant du système,
X, des événements
incontrÔlables, Y, et des
commandes, U (figure
1). Le rÔle de
cette équation, ajoutée au système initial, consiste à forcer
la valeur de ceux-ci en restreignant, pour un état donné, le
choix possible des valeurs des commandes admissibles. Les
événements contrÔlables peuvent alors être vus comme des
événements de sortie du contrÔleur (respectivement des
événements d'entrée du système initial).
Différents types d'objectifs de contrÔle peuvent être
considérés : assurer l'invariance, l'atteignabilité ou
l'attractivité d'un ensemble d'états, etc. Les objectifs de
contrÔle peuvent également traduire un critère qualitatif et
non plus logique. Ils s'expriment alors comme des relations
d'ordre ou comme un critère de minimisation sur une
trajectoire bornée du système.
Les différentes mises en oeuvre réalisées sont surtout
axées sur l'intégration des différents algorithmes induits
par les objectifs de contrÔle dans le système de calcul
formel Sigali, mais sont également axés sur l'intégration de
Sigali dans l'environnement Signal de manière à faciliter les
preuves de programmes et la synthèse d'objectifs de
commande.