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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

86 CHAPITRE 4. CALCUL DE L’IMAGE D’UNE FONCTION<br />

Soit χ = Img( f,1). ⃗ Evaluer le terme χ(1,...,1) se fait en O(n). Or C est satisfiable si et<br />

seulement si χ(1,...,1) = 1, donc calculer χ est NP–difficile.<br />

✷<br />

Théorème 4.2 Le problème <strong>de</strong> <strong>la</strong> composition se réduit à celui du calcul <strong>de</strong> l’image.<br />

<strong>Preuve</strong>. Rappelons que ⃗x = [x 1 ...x m ], et ⃗y = [y 1 ...y n ]. Soient les DAGs <strong>de</strong>s fonctions<br />

λ⃗x.f 1 (⃗x), ..., λ⃗x.f n (⃗x), et λ⃗y.g(⃗y). Le problème <strong>de</strong> <strong>la</strong> composition consiste à calculer le<br />

DAG <strong>de</strong> <strong>la</strong> fonction λ⃗x.(g(f 1 (⃗x),...,f n (⃗x)). Soit <strong>la</strong> fonction vectorielle ⃗ F définie par :<br />

⃗F = λ(⃗x@⃗y).[x 1 ... x m (y 1 ⇔ f 1 (⃗x)) ... (y n ⇔ f n (⃗x)) g(⃗y)].<br />

Les DAGs <strong>de</strong> F ⃗ se construisent en O(m+|g|+ ∑ n<br />

k=1 |f k |). On a :<br />

(<br />

Img( F,1) ⃗ m<br />

)<br />

∧<br />

= λ[z 1 ...z m+n+1 ].(∃⃗x ∃⃗y (z k ⇔ x k ) ∧<br />

k=1<br />

(<br />

∧ n<br />

)<br />

(z m+k ⇔ (y k ⇔ f k (⃗x))) ∧<br />

k=1<br />

(z m+n+1 ⇔ g(⃗y)))<br />

On a donc :<br />

(<br />

Img( F,1)(z ⃗ m<br />

(<br />

∧ n<br />

)<br />

∧<br />

1 ,...,z m ,1,...,1) = ∃⃗x ∃⃗y z k ⇔ x k<br />

)∧ y k ⇔ f k (⃗x) ∧g(⃗y)<br />

k=1 k=1<br />

( n<br />

)<br />

∧<br />

= ∃⃗y (y k ⇔ f k (z 1 ,...,z m )) ∧g(⃗y)<br />

k=1<br />

= g(f 1 (z 1 ,...,z m ),...,f n (z 1 ,...,z m ))<br />

La composition g(f 1 ,...,f n ) est égale à λ[x 1 ...x m ].Img( ⃗ F,1)(x 1 ,...,x m ,1,...,1). Ce<br />

<strong>de</strong>rnier DAG se calcule en O(|Img( ⃗ F,1)|), ou même en O(n) si le DAG <strong>de</strong> Img( ⃗ F,1)<br />

sur le système {z 1 ,...,z m ,z m+1 ,...,z m+n ,z m+n+1 } est ordonné <strong>de</strong> telle façon que<br />

{z m+1 ,...,z m+n ,z m+n+1 } < {z 1 ,...,z m }. ✷<br />

Le Théorème 4.2 montre que <strong>la</strong> composition se réduit polynomialement au calcul <strong>de</strong><br />

l’image. Les remarques faites Section 2.4.3 sur <strong>la</strong> complexité <strong>de</strong> <strong>la</strong> composition sont donc<br />

applicables. Le calcul <strong>de</strong> l’image est au moins exponentiel en mémoire dans le pire <strong>de</strong>s<br />

cas pour un ordre fixé. Même si un oracle donnait dynamiquement un bon ordre <strong>de</strong>s<br />

variables minimisant les DAGs <strong>de</strong>s fonctions manipulées, le calcul <strong>de</strong> l’image reste au<br />

moins exponentiel en mémoire dans le pire <strong>de</strong>s cas.<br />

Ces résultats <strong>de</strong> complexité exponentielle sont obtenus vis-à-vis <strong>de</strong> <strong>la</strong> mémoire<br />

nécessaire pour construire le DAG <strong>de</strong> Img( ⃗ f,χ). On peut s’interroger sur <strong>la</strong> complexité<br />

<strong>de</strong> problèmes faisant intervenir le calcul <strong>de</strong> l’image avec une sortie bornée (par exemple<br />

un problème dont <strong>la</strong> réponse est “vrai” ou “faux”). Déterminer si Img( ⃗ f,1) = 1 pour<br />

une fonction vectorielle ⃗ f donnée est un <strong>de</strong> ces problèmes, et un <strong>de</strong>s plus intéressants,<br />

car il permettrait d’accélérer considérablement le calcul <strong>de</strong> l’image (voir Section 4.3 sur<br />

l’utilisation du cache). Cependant, les théorèmes suivants affirment <strong>la</strong> non polynomialité<br />

<strong>de</strong> ce test.

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

Saved successfully!

Ooh no, something went wrong!