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.

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

<strong>Preuve</strong>. Il suffit <strong>de</strong> constater que <strong>la</strong> composition se réduit à un calcul <strong>de</strong><br />

Pre( f,1,χ). ⃗ Tout ensemble <strong>de</strong> fonctions f 1 ,...,f n ,g peut s’écrire sous <strong>la</strong> forme<br />

λ(⃗y@⃗x).f 1 (⃗y),...,λ(⃗y@⃗x).f n (⃗y),λ⃗y.g(⃗y). Il suffit pour ce<strong>la</strong> d’étendre le système <strong>de</strong>s variables<br />

utilisées, ce qui est fait en O(|g| + ∑ n<br />

k=1 |f k |), donc polynomialement. Alors on a<br />

Pre(λ(⃗y@⃗x).[f 1 (⃗y) ... f n (⃗y)],1,λ⃗y.g(⃗y)) = λ⃗y.(∃⃗x g(f 1 (⃗y),...,f n (⃗y))), ce <strong>de</strong>rnier terme<br />

s’écrivant directement λ⃗y.g(f 1 (⃗y),...,f n (⃗y)), c’est à dire <strong>la</strong> composition <strong>de</strong> g et <strong>de</strong>s fonctions<br />

f 1 ,...,f n .<br />

✷<br />

Nous sommes donc <strong>de</strong> nouveau confronté, comme pour <strong>la</strong> fonction Img dans le<br />

Chapitre 4, à un problème au moins exponentiel en mémoire dans le pire cas pour un<br />

ordre à priori fixé, ou même avec un ordre optimal donné dynamiquement. En fait, ce<br />

nouveau problème est intrinsèquement plus complexe que celui qui consiste à évaluer Img.<br />

Ceci est montré par le Théorème 5.3, qui affirme qu’on peut transformer polynomialement<br />

le calcul <strong>de</strong> Img en un calcul <strong>de</strong> Pre, alors que <strong>la</strong> réciproque est fausse. En effet,<br />

en reprenant les notations <strong>de</strong> <strong>la</strong> preuve <strong>de</strong> 5.3, il est impossible <strong>de</strong> décrire <strong>la</strong> composition<br />

χ ′ (⃗g(⃗y,⃗x)) à partir <strong>de</strong>s seuls composants ⃗g, χ ′ , et Img. <strong>Pour</strong> ce<strong>la</strong>, constatons que<br />

Img( ⃗ f,χ) calcule l’image <strong>de</strong> ⃗ f sur un ensemble χ, et Pre( ⃗ f,1,χ) son image réciproque sur<br />

χ : si on veut utiliser Img pour traduire Pre, il faut disposer <strong>de</strong> <strong>la</strong> fonction réciproque<br />

⃗f −1 . Mais le calcul <strong>de</strong> ⃗ f −1 est lui-même NP–difficile (on peut même montrer que le calcul<br />

<strong>de</strong> l’image <strong>de</strong> ⃗ f sur 1 se réduit au calcul <strong>de</strong> ⃗ f −1 ). Un argument plus simple est <strong>de</strong> voir<br />

que si ⃗ f est une fonction injective <strong>de</strong> {0,1} m dans {0,1} n , alors on obtient une fonction<br />

(évi<strong>de</strong>mment partielle) ⃗ f −1 <strong>de</strong> {0,1} n dans {0,1} m . Mais si ⃗ f n’est pas injective, alors il<br />

faut considérer ⃗ f −1 comme une fonction <strong>de</strong> {0,1} 2n dans {0,1} m . C’est ici que se produit<br />

un saut exponentiel, qui montre <strong>la</strong> non-réduction polynomiale du problème Pre à celui <strong>de</strong><br />

Img. Aussi calculer Pre( ⃗ f,1,χ) est strictement plus difficile que calculer Img( ⃗ f,χ).<br />

Théorème 5.3 Le problème <strong>de</strong> l’évaluation <strong>de</strong> Img se réduit linéairement à celui <strong>de</strong><br />

l’évaluation <strong>de</strong> Pre.<br />

<strong>Preuve</strong>. Soit ⃗ f = [f 1 ...f n ] <strong>de</strong> {0,1} m dans {0,1} n , et χ une fonction booléenne sur<br />

{0,1} m non nulle. Etant donnés les DAGs <strong>de</strong> ⃗ f et χ, nous allons montrer que le calcul<br />

<strong>de</strong> Img( ⃗ f,χ) se transforme polynomialement en l’évaluation <strong>de</strong> Pre(⃗g,1,χ ′ ), où ⃗g et χ ′<br />

sont précisées ci-après. Dans <strong>la</strong> suite, ⃗y dénotera un point [y 1 ...y 2n+1 ] <strong>de</strong> {0,1} 2n+1 , et<br />

⃗x dénotera un point <strong>de</strong> {0,1} m . Soit ⃗g <strong>la</strong> fonction <strong>de</strong> {0,1} 2n+1 ×{0,1} m dans {0,1} 2n+1<br />

définie par :<br />

⃗g = λ⃗y.λ⃗x.[y 1 ... y n f 1 (⃗x) ... f n (⃗x) χ(⃗x)]<br />

Soit χ ′ = λ⃗y.(y 2n+1 ∧ ( ∧ n<br />

k=1 (y k ⇔ y n+k ))). C’est une fonction non nulle sur {0,1} 2n+1 .<br />

Alors on a:<br />

Pre(⃗g,1,χ ′ ) = λ⃗y.(∃⃗x χ ′ (⃗g(⃗y,⃗x)))<br />

( n<br />

)<br />

∧<br />

= λ⃗y.(∃⃗x χ(⃗x)∧ y k ⇔ f k (⃗x) )<br />

k=1<br />

= λ⃗y.Img( ⃗ f,χ)(y 1 ,...,y n )<br />

Finalement, comme Pre(⃗g,1,χ ′ )(⃗y) ne dépend que <strong>de</strong>s variables y 1 ,...,y n , on peut écrire<br />

Img( ⃗ f,χ) = λ[y 1 ...y n ].Pre(⃗g,1,χ ′ )(y 1 ,...,y n ,0 1 ,...,0 n+1 ). Choisissonslesn+1variables

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

Saved successfully!

Ooh no, something went wrong!