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