07.11.2013 Views

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

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

4.7.<br />

RÉSULTATS EXPÉRIMENTAUX ET DISCUSSION 103<br />

function calcule-valid(n,m,r,ω,(Cns, ⃗ f),Init) : TDG;<br />

var Valid, New, Current : TDG;<br />

Valid = Init;<br />

New = Init;<br />

while (New ∧ Cns) ≠ 0 do {<br />

Current = between(New, Valid);<br />

let Range = vectochar( ⃗ f↓(Current∧Cns)) in {<br />

New = Range ∧¬ Valid;<br />

Valid = Valid ∨ New;<br />

}<br />

}<br />

return Valid;<br />

Figure 32. Fonction “compute-valid” finale.<br />

final 5 présenté Figure 32.<br />

4.7.2 Résultats expérimentaux<br />

Nous comparons ici les <strong>de</strong>ux algorithmes proposés dans les Sections 4.6.1 et 4.6.2. Le<br />

premierestbasésurlerestricteurd’imagestrict“constrain”etunepartitionducodomaine.<br />

Le second utilise une partition du domaine et est correct pour tout restricteur d’image<br />

strict.<br />

Les <strong>de</strong>ux algorithmes sont écrits en C, et les temps CPU en secon<strong>de</strong>s ont été obtenus<br />

sur Sun SPARC station 1. La Table 5 donne les temps CPU nécessaires pour calculer<br />

l’ensemble <strong>de</strong>s états vali<strong>de</strong>s <strong>de</strong> quelques circuits séquentiels. <strong>Pour</strong> chaque circuit, #in est<br />

le nombre <strong>de</strong> ses entrées, #reg le nombre <strong>de</strong> ses variables d’état, <strong>de</strong>pth est le nombre<br />

d’itérations, #valid est le nombre d’états vali<strong>de</strong>s, time-codp (respectivement time-dp)<br />

est le temps CPU <strong>de</strong> l’algorithme basé sur une partition du codomaine (respectivement<br />

<strong>de</strong> l’algorithme basé sur une partition du domaine). La Table 6 présente pour les <strong>de</strong>ux<br />

métho<strong>de</strong>s le nombre <strong>de</strong> récursions <strong>de</strong> “vectochar-recurse” (colonne #rec) requis par le<br />

calcul <strong>de</strong>s états vali<strong>de</strong>s. Elle donne aussi le nombre d’i<strong>de</strong>ntifications obtenues, réparties<br />

en i<strong>de</strong>ntifications exactes (colonne #same), et en i<strong>de</strong>ntifications étendues utilisant les<br />

propriétés <strong>de</strong>s Théorèmes 4.8 ou 4.9 (colonne #diff). Ceci montre que pour <strong>la</strong> plupart<br />

<strong>de</strong>s machines, le gain apporté par l’i<strong>de</strong>ntification étendue est important.<br />

5 Afin d’améliorer “vectochar”, on peut utiliser cette idée [43] : comme les seuls états intéressants sont<br />

ceux qui n’appartiennent pas déjà à Valid, nous pouvons déterminer le domaine D où seuls <strong>de</strong> nouveaux<br />

états peuvent être trouvés. Ce domaine est λ(⃗y@⃗x).(Current(⃗y)∧Cns(⃗y,⃗x)∧¬Valid( ⃗ f(⃗y,⃗x))). L’ensemble<br />

<strong>de</strong>s nouveaux états New est directement égal à vectochar( ⃗ f↓D). Dans certain cas, cette métho<strong>de</strong> réduit<br />

considérablement le nombre <strong>de</strong> recursions <strong>de</strong> <strong>la</strong> fonction “vectochar”. De plus, il est alors suffisant <strong>de</strong><br />

tester si D est égal à 0 pour pouvoir stopper l’itération, ce qui économise <strong>la</strong> <strong>de</strong>rnière évaluation <strong>de</strong> Img.<br />

Mais le calcul <strong>de</strong> D requiert <strong>la</strong> composition Valid ◦ ⃗ f, ce qui peut être très coûteux. <strong>Pour</strong> cette raison,<br />

nous avons abandonné cette technique, au contraire <strong>de</strong> [38].

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!