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.
Chapitre 4<br />
Calcul <strong>de</strong> l’image d’une fonction<br />
Nous présentons ici <strong>de</strong>s algorithmes <strong>de</strong> calcul <strong>de</strong> l’image d’une fonction vectorielle<br />
booléenne. EtantdonnélesDAGsd’unefonctionvectorielle ⃗ f <strong>de</strong>{0,1} m dans{0,1} n , etle<br />
DAG d’une fonction χ <strong>de</strong> {0,1} m dans {0,1}, nous établissons tout d’abord <strong>la</strong> complexité<br />
d’évaluation <strong>de</strong> <strong>la</strong> fonction Img( ⃗ f,χ), définie <strong>de</strong> {0,1} n dans {0,1}. Puis nous introduisons<br />
<strong>la</strong> notion <strong>de</strong> restricteur d’image, qui permet <strong>de</strong> décomposer le calcul <strong>de</strong> l’image.<br />
Enfin nous donnons le schéma d’un algorithme permettant <strong>de</strong> calculer Img, et nous proposons<br />
<strong>de</strong>ux instances <strong>de</strong> ce schéma. Les résultats présentés seront va<strong>la</strong>bles pour les <strong>de</strong>ux<br />
représentations graphiques BDD et TDG, sauf lorsque ce<strong>la</strong> sera explicitement spécifié.<br />
Nous adoptons les notations suivantes. La fonction booléenne ε est l’i<strong>de</strong>ntité ou <strong>la</strong><br />
négation. <strong>Une</strong> variable du domaine {0,1} m (respectivement du codomaine {0,1} n ) est<br />
notée ⃗x (respectivement ⃗y). <strong>Une</strong> fonction booléenne est confondue avec son DAG. Les<br />
vecteurs <strong>de</strong> fonctions booléennes sont notés ⃗ f ou [f 1 ...f n ]. Nous étendons les opérateurs<br />
booléens aux vecteurs, <strong>de</strong> façon à obtenir une structure d’espace vectoriel. Par exemple,<br />
[f 1 ...f n ] ∨ [f ′ 1...f ′ n] = [(f 1 ∨ f ′ 1)...(f n ∨ f ′ n)], et le vecteur χ ∧ [f 1 ...f n ] est égal à<br />
[(χ∧f 1 )...(χ∧f n )].<br />
4.1 Difficulté du calcul <strong>de</strong> Img( ⃗ f,χ)<br />
La difficulté intrinsèque du problème est indiquée par le théorème suivant. Calculer<br />
Img( ⃗ f,1) est NP–difficile 1 . Il est même certain que le calcul <strong>de</strong> Img( ⃗ f,1) n’appartient pas<br />
à NP. En utilisant l’hypothèse que l’ordre <strong>de</strong>s variables est fixé, on obtient le théorème 4.2<br />
qui précise <strong>la</strong> complexité du problème.<br />
Théorème 4.1 Etant donné <strong>la</strong> forme canonique d’une fonction vectorielle ⃗ f, <strong>la</strong> canonisation<br />
<strong>de</strong> Img( ⃗ f,1) est NP–difficile.<br />
<strong>Preuve</strong>. Nous ne donnons que <strong>la</strong> preuve sur les DAGs. Soit C = ( ∧ n<br />
k=1 c k ) une<br />
3–forme normale conjonctive composée <strong>de</strong> n c<strong>la</strong>uses c k . Chaque c<strong>la</strong>use c k est une disjonction<br />
<strong>de</strong> trois littéraux, donc le calcul <strong>de</strong>s DAGs <strong>de</strong> toutes les c<strong>la</strong>uses se fait en O(n).<br />
1 On a Img( ⃗ f,χ) = λ⃗y.Img( ⃗ f@[χ],1)(y 1 ,...,y n ,1). Donc Img( ⃗ f,χ) = Img( ⃗ f@[χ],1)[y n+1 ← 1], le<br />
terme <strong>de</strong> droite étant calculé en O(|Img( ⃗ f@[χ],1)|). Le calcul <strong>de</strong> Img( ⃗ f,1) est donc aussi difficile que<br />
celui <strong>de</strong> Img( ⃗ f,χ).<br />
85