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.
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.