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.

E.4.<br />

RÉDUCTION POLYNOMIALE : L’OPÉRATEUR “RESTRICT” 141<br />

function restrict(f,D) : TDG;<br />

if D = 0 then error;<br />

return rstr(f,D);<br />

function rstr(f,D) : TDG;<br />

if D = 1 or f = 0 or f = 1 then return f;<br />

let x = D.root in {<br />

if D[x ← 0] = 0 then return rstr(f[x ← 1],D[x ← 1]);<br />

if D[x ← 1] = 0 then return rstr(f[x ← 0],D[x ← 0]);<br />

if f[x ← 0] = f[x ← 1] then return rstr(f,D[x ← 0]∨D[x ← 1]);<br />

return (¬x∧rstr(f[x ← 0],D[x ← 0]))∨(x∧rstr(f[x ← 1],D[x ← 1]));<br />

}<br />

Figure 38. Fonction “restrict”.<br />

Théorème E.3 Soient f et D <strong>de</strong>ux fonctions booléennes avec D ≠ 0. Alors pour tout ⃗x<br />

tel que D(⃗x) = 1, on a (f⇓D)(⃗x) = f(⃗x).<br />

Théorème E.4 Soient f et D <strong>de</strong>ux fonctions booléennes avec D ≠ 0. L’arbre réduit <strong>de</strong><br />

Shannon <strong>de</strong> (f⇓D) est <strong>de</strong> taille inférieure ou égale à celui <strong>de</strong> f.<br />

<strong>Preuve</strong>. Par induction sur le nombre <strong>de</strong> variables utilisées dans f et D.<br />

La fonction “restrict” qui opère sur les graphes utilise un cache afin d’éviter les calculs<br />

redondants, d’où une complexité en O(|f|×|D|). Le pendant du Théorème E.4 pour les<br />

graphes n’est évi<strong>de</strong>mment pas vrai. La fonction “restrict” opérant sur les graphes doit<br />

donc comparer les tailles <strong>de</strong>s graphes <strong>de</strong> f et <strong>de</strong> (f⇓D) et retourner le plus petit, avec<br />

priorité à celui <strong>de</strong> (f⇓D). La Figure 39 montre un exemple d’application <strong>de</strong> l’opérateur<br />

“restrict” sur un arbre réduit <strong>de</strong> Shannon 1 .<br />

✷<br />

Figure 39. Exemple d’application <strong>de</strong> l’opérateur “restrict”.<br />

1 Il ne faut pas confondre ⇓ et l’opérateur ↓ présenté Section 4.5.3. Il est vrai que ↓ assure que pour<br />

toute fonction f <strong>de</strong> ({0,1} m → {0,1}) et toute fonction χ ≠ 0, on a (∀⃗x χ(⃗x) ⇒ (f(⃗x) ⇔ (f↓χ)(⃗x))),<br />

tout comme l’opérateur ⇓ <strong>de</strong> part le Théorème E.3. Mais ↓ assure en plus que pour toute fonction ⃗ f <strong>de</strong><br />

({0,1} m → {0,1} n ) et toute fonction χ ≠ 0, on a Img( ⃗ f,χ) = Img( ⃗ f↓χ,1), ce qui n’est absolument pas<br />

le cas pour ⇓.

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

Saved successfully!

Ooh no, something went wrong!