Une Boite `a Outils Pour la Preuve Formelle de Syst`emes Séquentiels
Une Boite `a Outils Pour la Preuve Formelle de Syst`emes Séquentiels
Une Boite `a Outils Pour la Preuve Formelle de Syst`emes Séquentiels
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
116 CHAPITRE 5. CALCUL DE L’IMAGE RÉCIPROQUE D’UNE FONCTION<br />
path <strong>de</strong> <strong>la</strong> fonction “produce-functions”), <strong>de</strong> façon à calculer les termes partiels du type<br />
(S ◦ ⃗ f) <strong>de</strong>s noeuds fils.<br />
Chaque fois qu’une feuille 1 est atteinte, le graphe d’une <strong>de</strong>s fonctions h k est généré.<br />
Ce graphe est celui du terme (S 1 ◦f), ⃗ où S 1 est <strong>la</strong> somme <strong>de</strong> tous les chemins accèdant à 1<br />
en passant par une unique branche terminale. Comme <strong>la</strong> formule g[y 1 ← f 1 ,..., y n ← f n ]<br />
est aussi <strong>la</strong> somme <strong>de</strong> toutes ses interprétations (i.e. chemins) <strong>la</strong> satisfaisant, on a bien :<br />
⎛ ⎞<br />
∨<br />
g[y 1 ← f 1 ,..., y n ← f n ] = ⎝ h k<br />
⎠.<br />
h k ∈ SetFun<br />
L’éc<strong>la</strong>tement <strong>de</strong> <strong>la</strong> composition (χ◦ ⃗ f) en une liste <strong>de</strong> graphes h 1 ,...,h q dont on sait que<br />
<strong>la</strong> somme est (χ◦ ⃗ f), mais qui n’est pas réalisée, permet ensuite d’∃–éliminer les variables<br />
⃗x indépen<strong>de</strong>mment sur chaque graphe h k . Cet algorithme pourrait encore être amélioré<br />
en éliminant directement les variables ⃗x dans les termes partiels (S◦ ⃗ f), <strong>de</strong> façon à réduire<br />
le nombre <strong>de</strong> variables le plus tôt possible.<br />
5.4 Résultats expérimentaux et discussion<br />
La technique <strong>de</strong> vérification <strong>de</strong> formules CTL présentée ici a été appliquée à <strong>de</strong>ux machines<br />
chez BULL. La machine clm1 conçue chez BULL (voir Section 4.7.2, Table 5)<br />
décrit une partie <strong>de</strong> l’interface entre <strong>de</strong>ux bus. Elle est faite <strong>de</strong> 33 registres d’état et <strong>de</strong><br />
14 entrées. Les graphes qui représentent globalement sa fonction <strong>de</strong> transition ont plus<br />
<strong>de</strong> 10000 noeuds, et cinq <strong>de</strong>s registres ont une fonction <strong>de</strong> transition <strong>de</strong> plus <strong>de</strong> 2500<br />
noeuds. Cette machine possè<strong>de</strong> environ 3.8 10 5 états vali<strong>de</strong>s parmi les 2 33 états potentiels.<br />
Le temps CPU nécessaire pour effectuer le calcul symbolique <strong>de</strong> ses états vali<strong>de</strong>s est <strong>de</strong><br />
88.5 secon<strong>de</strong>s sur un Sun SPARC Station 1. La propriété temporelle à vali<strong>de</strong>r sur cette<br />
machine requiert le calcul d’un seul point fixe <strong>de</strong>mandant 38 itérations. Nous n’avons pu<br />
construire le graphe <strong>de</strong> <strong>la</strong> re<strong>la</strong>tion <strong>de</strong> transition <strong>de</strong> cette machine, aussi <strong>la</strong> technique décrite<br />
Section 5.2 ne peut être utilisée. La composition χ( ⃗ f(⃗y,⃗x)) utilisée à chaque itération a<br />
cessé d’être raisonnablement calcu<strong>la</strong>ble avec l’algorithme <strong>de</strong> composition standard après<br />
seulement quelques itérations. Si on utilise <strong>la</strong> composition standard et <strong>la</strong> simplification<br />
décrite Section 5.3.1, le point fixe est calculé en 1502 secon<strong>de</strong>s. La fonction “restrict”<br />
(utilisée conjointement avec le domaine D défini Section 5.3.1) est indispensable pendant<br />
ce calcul, puisqu’il réduit les graphes <strong>de</strong> ⃗ f utilisés dans <strong>la</strong> composition <strong>de</strong> façon à ce que<br />
pendantlecalculdupointfixe, aucun<strong>de</strong>cesgraphesn’aunetaillesupérieureà186, soitun<br />
gain <strong>de</strong> taille al<strong>la</strong>nt jusqu’à 10 pour chacune <strong>de</strong>s fonctions <strong>de</strong> transition f k <strong>de</strong>s variables<br />
d’état. Le temps CPU est ramené à 623 secon<strong>de</strong>s si on utilise en plus <strong>la</strong> minimisation<br />
incrémentale <strong>de</strong> <strong>la</strong> Section 5.3.2 pour évaluer <strong>la</strong> composition.<br />
La machine séquentielle sync est un synchronisateur ayant 21 registres d’états et 4<br />
entrées. La propriété à vali<strong>de</strong>r exprime que <strong>la</strong> valeur d’une sortie ok est égale à 1 pour<br />
tous les états vali<strong>de</strong>s <strong>de</strong> <strong>la</strong> machine. Ceci est traduit par <strong>la</strong> formule (Init |= AG(ok)). Le<br />
temps CPU nécessaire pour prouver cette formule avec <strong>la</strong> composition standard et sans<br />
utilisation <strong>de</strong>s états vali<strong>de</strong>s est <strong>de</strong> 2080 secon<strong>de</strong>s et le point fixe est atteint en 9 étapes.<br />
L’opérateur “restrict” n’a ici été d’aucune utilité puisqu’il n’a pu réduire <strong>la</strong> taille <strong>de</strong>s