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.
4.5.<br />
L’OPÉRATEUR “CONSTRAIN” 99<br />
Comme (⃗x n ) n>0 est dans S, <strong>la</strong> suite (χ(⃗x n )) n>0 est constante et égale à 1, donc<br />
lim n→∞<br />
χ(⃗x n ) = 1, et donc <strong>la</strong> borne inférieure x min satisfait χ.<br />
✷<br />
On peut ainsi donner une <strong>de</strong>uxième définition <strong>de</strong> <strong>la</strong> Plus Proche Interpretation, et<br />
montrer facilement qu’elle est équivalente à celle donnée par <strong>la</strong> définition 4.2.<br />
Définition 4.3 Soit une fonction χ ≠ 0, et une interprétation ⃗x. L’unique interprétation<br />
notée PPI(χ,⃗x) est <strong>la</strong> plus proche interprétation <strong>de</strong> ⃗x, au sens <strong>de</strong> d, qui satisfait χ.<br />
4.5.3 Définition et évaluation <strong>de</strong> l’opérateur “Constrain”<br />
Définition 4.4 Nous définissons l’opérateur “constrain” , noté “↓”, comme :<br />
↓ = λ ⃗ f.λχ.λ⃗x. ⃗ f(PPI(χ,⃗x)).<br />
On montre facilement que PPI est un projecteur strict, donc que “↓” est un restricteur<br />
d’image strict. L’algorithme ci-<strong>de</strong>ssous calcule le graphe <strong>de</strong> λ⃗x.f(PPI(χ,⃗x)) à partir <strong>de</strong>s<br />
graphes <strong>de</strong>s <strong>de</strong>ux fonctions f et χ [44]. Cet algorithme utilise <strong>la</strong> définition 4.2 <strong>de</strong> PPI, et il<br />
exploite les propriétés <strong>de</strong>s restricteurs d’image stricts données par le Théorème 4.11. Si un<br />
cache est utilisé pour éviter les calculs redondants, alors sa complexité est en O(|f|×|χ|).<br />
Etant donné un vecteur ⃗ f = [f 1 ...f n ], le calcul <strong>de</strong> ( ⃗ f↓χ) est effectué en construisant le<br />
vecteur [(f 1 ↓χ) ... (f n ↓χ)], ce qui est fait en O(| ⃗ f|×|χ|).<br />
function constrain(f,χ) : TDG;<br />
if χ = 0 then error;<br />
return cnst(f,χ);<br />
function cnst(f,χ) : TDG;<br />
if χ = 1 or f = 0 or f = 1 then return f;<br />
if f = χ then return 1;<br />
if f = ¬χ then return 0;<br />
let x = χ.root in {<br />
if χ[x ← 0] = 0 then return cnst(f[x ← 1],χ[x ← 1]);<br />
if χ[x ← 1] = 0 then return cnst(f[x ← 0],χ[x ← 0]);<br />
return (¬x∧cnst(f[x ← 0],χ[x ← 0]))∨(x∧cnst(f[x ← 1],χ[x ← 1]));<br />
}<br />
Figure 27. Fonction “constrain”.<br />
LaFigure28montreunexempled’application<strong>de</strong>l’opérateur“constrain”sur<strong>de</strong>sarbres<br />
réduits <strong>de</strong> Shannon, et <strong>la</strong> Table 4 montre comment les valeurs <strong>de</strong> ⃗x, ⃗ f(⃗x), et PPI(χ,⃗x)<br />
sont implicitement combinées pour mener à ( ⃗ f↓χ)(⃗x) = ⃗ f(PPI(χ,⃗x)). On vérifie aussi<br />
que Img( ⃗ f,χ) et Img( ⃗ f↓χ,1) sont égaux à λ⃗y.(¬y 2 ∧((¬y 1 ∧(⃗y 3 ∨y 4 ))∨(y 1 ∧¬y 3 ∧y 4 ))),<br />
qui dénote l’ensemble {[0001],[0010],[0011],[1001]}.