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

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]}.

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

Saved successfully!

Ooh no, something went wrong!