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.

114 CHAPITRE 5. CALCUL DE L’IMAGE RÉCIPROQUE D’UNE FONCTION<br />

Des expériences [106] utilisant cet algorithme “compose2” ont montré qu’il pouvait<br />

réduire <strong>de</strong> 10% à 50% le temps <strong>de</strong> composition par rapport à l’algorithme <strong>de</strong> composition<br />

“compose1”.<br />

5.3.3 Décomposition <strong>de</strong> <strong>la</strong> composition<br />

Les algorithmes <strong>de</strong> composition “compose1” et “compose2” présentés dans <strong>la</strong> Section<br />

précé<strong>de</strong>nte traversent le graphe g en profon<strong>de</strong>ur d’abord, et calculent du bas vers le haut<br />

<strong>la</strong> composition g[y 1 ← f 1 ,..., y n ← f n ]. Un cache est associé à “compose1” pour associer<br />

à chaque noeud le résultat partiel <strong>de</strong> <strong>la</strong> composition obtenue, et faire ainsi un nombre <strong>de</strong><br />

récursion en O(|g|). Le problème est qu’avec cet algorithme, les graphes intermédiaires<br />

associés aux noeuds peuvent <strong>de</strong>venir très grands et saturer <strong>la</strong> mémoire, d’où l’impossiblité<br />

<strong>de</strong> parvenir au résultat final.<br />

L’idée utilisée ici [46] est d’exprimer le terme χ( ⃗ f(⃗y,⃗x)) comme une disjonction <strong>de</strong><br />

formules h k (⃗y,⃗x) (1 ≤ k ≤ q) dont les graphes sont plus petits que celui <strong>de</strong> χ( ⃗ f(⃗y,⃗x)).<br />

L’intérêt <strong>de</strong> cette décomposition est <strong>la</strong> transformation suivante :<br />

Pre( f,Cns,χ) ⃗ = λ⃗y.(∃⃗x Cns(⃗y,⃗x)∧χ( f(⃗y,⃗x))) ⃗ ( q )<br />

∨<br />

= λ⃗y.(∃⃗x Cns(⃗y,⃗x)∧ h k (⃗y,⃗x) )<br />

k=1<br />

(<br />

∨ q )<br />

= λ⃗y.(∃⃗x Cns(⃗y,⃗x)∧h k (⃗y,⃗x) )<br />

k=1<br />

(<br />

∨ q )<br />

= λ⃗y. (∃⃗x Cns(⃗y,⃗x)∧h k (⃗y,⃗x))<br />

k=1<br />

Le terme final signifie que Pre peut être décomposé en <strong>la</strong> somme <strong>de</strong> plusieurs termes<br />

beaucoup plus simple. En effet, il n’y a ici plus <strong>de</strong> composition, et les variables ⃗x peuvent<br />

être ∃–éliminées indépen<strong>de</strong>mment dans chaque composante <strong>de</strong> <strong>la</strong> somme. Le problème est<br />

donc <strong>de</strong> trouver les fonctions h k .<br />

Etant donnés un graphe g et une substitution [y 1 ← f 1 ,..., y n ← f n ], le calcul <strong>de</strong>s<br />

graphes h 1 ,...,h q dont <strong>la</strong> somme est égale à g[y 1 ← f 1 ,..., y n ← f n ] est effectué par <strong>la</strong><br />

fonction “<strong>de</strong>compose-composition” donnée Figure 36.<br />

Chaque noeud du graphe <strong>de</strong> g est accessible par plusieurs chemins 2 . Un chemin est<br />

défini par un unique produit (c’est l’argument path dans l’algorithme), constitué <strong>de</strong>s variables<br />

rencontrées <strong>de</strong> <strong>la</strong> racine du graphe jusqu’au noeud atteint. Le principe est <strong>de</strong><br />

déterminer dans chaque noeud du graphe <strong>la</strong> somme S <strong>de</strong> tous les chemins (i.e. les interprétations)<br />

qui permettent d’accé<strong>de</strong>r à celui-ci, <strong>de</strong> calculer <strong>la</strong> composition (S ◦ ⃗ f), puis<br />

<strong>de</strong> propager ce résultat partiel aux noeuds fils. Le regroupement <strong>de</strong>s chemins permet<br />

<strong>de</strong> factoriser <strong>de</strong>s calculs qui seraient éc<strong>la</strong>tés et reconduits plusieurs fois avec l’algorithme<br />

“compose1” ou “compose2” <strong>de</strong> <strong>la</strong> Section précé<strong>de</strong>nte.<br />

2 un chemin dans un graphe dénote un ensemble d’interprétations

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

Saved successfully!

Ooh no, something went wrong!