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.
52 CHAPITRE 2.<br />
REPRÉSENTATION DES FORMULES PROPOSITIONNELLES<br />
que <strong>la</strong> substitution d’une variable d’un graphe g par un graphe f peut être au moins en<br />
O(|g|×|f|). Il suffit <strong>de</strong> considérer les variables x 0 < x 1 < ... < x 2n+2m , et prendre<br />
( n<br />
)<br />
∨<br />
g = (x 0 ∨ (x k ∧x n+m+k ) ) et<br />
k=1<br />
( m<br />
)<br />
∨<br />
f = (x n+k ∧x 2n+m+k ) .<br />
k=1<br />
La substitution <strong>de</strong> <strong>la</strong> variable x 0 du graphe g par le graphe f conduit à calculer ( ∨ n+m<br />
k=1 (x k∧<br />
x n+m+k )), dont <strong>la</strong> preuve du Théorème 2.9 a montré <strong>la</strong> taille en O(|f|×|g|). Cependant,<br />
le problème <strong>de</strong> savoir si le pire cas est en O(|g|×|f|) ou en O(|g| 2 ×|f|) reste ouvert.<br />
Le problème <strong>de</strong> <strong>la</strong> composition est une généralisation du problème <strong>de</strong> <strong>la</strong> substitution.<br />
Ce problème est le suivant : étant donnés les graphes <strong>de</strong>s formules f 1 ,...,f n et g, calculer<br />
le graphe <strong>de</strong> <strong>la</strong> formule g[x 1 ← f 1 ,..., x n ← f n ]. La composition est une opération intrinsèquement<br />
plus complexe que celles vues précé<strong>de</strong>mment, comme le montre le théorème<br />
suivant.<br />
Théorème 2.11 La composition sur une forme canonique est NP–difficile.<br />
<strong>Preuve</strong>. Nous donnons <strong>la</strong> preuve sur le cas particulier <strong>de</strong>s graphes <strong>de</strong> décision, son extention<br />
à une forme canonique quelconque ne <strong>de</strong>mandant que <strong>de</strong>s développements techniques.<br />
SoitC = ( ∧ n<br />
k=1 c k )une3–formenormaleconjonctivecomposée<strong>de</strong>nc<strong>la</strong>uses. Chaquec<strong>la</strong>use<br />
est une disjonction <strong>de</strong> trois littéraux, donc son graphe est construit en un temps constant.<br />
Ainsi le calcul <strong>de</strong>s graphes f 1 ,...,f n <strong>de</strong>s n c<strong>la</strong>uses est en O(n). Soit g le graphe <strong>de</strong> <strong>la</strong><br />
fonction λ[x 1 ...x n ].( ∧ n<br />
k=1 x k ). Ce graphe est un peigne construit en O(n). Tester si un<br />
graphe est différent <strong>de</strong> zéro est en O(1). Comme C est satisfiable si et seulement si le<br />
graphe <strong>de</strong> g(f 1 ,...,f n ) est différent <strong>de</strong> 0, calculer g(f 1 ,...,f n ) est NP–difficile. ✷<br />
On obtient un théorème plus précis sur les graphes avec l’hypothèse d’un ordre <strong>de</strong>s<br />
variables fixé.<br />
Théorème 2.12 Etant donné un ordre fixé <strong>de</strong>s variables, <strong>la</strong> composition est un problème<br />
<strong>de</strong> complexité au moins exponentielle vis-à-vis <strong>de</strong> <strong>la</strong> taille <strong>de</strong>s graphes et/ou du nombre <strong>de</strong><br />
variables utilisées. Plus précisément, il existe <strong>de</strong>s graphes f 1 ,...,f n , g ayant 2n variables,<br />
dont <strong>la</strong> taille cumulée est en O(n), tels que le graphe <strong>de</strong> g(f 1 ,...,f n ) est en O(2 n ).<br />
<strong>Preuve</strong>. Nous allons exhiber <strong>de</strong>s graphes g et f 1 ,...,f n , construits sur 2n variables, tels<br />
que (|g| + ∑ n<br />
k=1 |f k |) = O(n), et tels que |g(f 1 ,...,f n )| = O(2 n ). On pose l’ordre <strong>de</strong>s<br />
variables suivant : y 1 < y 2 < ... < y 2n . Soit<br />
( n<br />
)<br />
∧<br />
g = λ[x 1 ...x n ]. x k<br />
k=1<br />
Le graphe <strong>de</strong> cette fonction est une branche <strong>de</strong> profon<strong>de</strong>ur n, donc <strong>de</strong> taille en O(n).<br />
Soient les n fonctions f 1 ,...,f n définies par<br />
f k = λ[y 1 ...y 2n ].(y k ⇔ y 2n−k+1 ),