]> AND Private Git Repository - hdrcouchot.git/blob - annexePromelaProof.tex
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
d56d89b6a6e3b8d2a7fb3dda177927a15b342d73
[hdrcouchot.git] / annexePromelaProof.tex
1 \JFC{Voir section~\ref{sec:spin:proof}}
2
3 Cette section donne les preuves des deux théorèmes de correction et complétude 
4 du chapitre~\ref{chap:promela}.
5
6
7 \begin{lemma}[Strategy Equivalence]\label{lemma:strategy}
8   Soit $\phi$  un système dynamique discret de stratégie  $(S^t)^{t \in  \Nats}$ 
9   et $\psi$  sa traduction en promela. 
10   Il existe une exécution de $\psi$ sous hypothèse d'équité faible telle 
11   le le scheduler met à jour les  elements of $S^t$
12   donnés par \verb+update_elems+ à l'iteration $t$.
13 \end{lemma}
14 \begin{Proof}
15   La preuve est directe pour $t=0$.
16   Supposons qu'elle est établie jusqu'en $t$ vallant un certain $t_0$. 
17   On considère des stratégies pseudo périodiques.
18   Grâce à l'hypothèse d'équité faible, \verb+update_elems+ modifie 
19   les éléments de $S^t$ à l'iteration $t$.
20 \end{Proof}
21
22 Dans ce qui suit, soit     $Xd^t_{ji}$     la valeur de 
23 \verb+Xd[+$j$\verb+].v[+$i$\verb+]+  après le   $t^{\text{th}}$ appel 
24 à la fonction 
25 \verb+fetch_values+. 
26 De plus, soit $Y^k_{ij}$  l'élément à l'indice $k$ 
27 dans le canal  \verb+channels[i].sent[j]+ de taille  $m$,  $m  \le
28 \delta_0$; $Y^0_{ij}$ et $Y^{m-1}_{ij}$ sont  respectivement la tête et la queue
29 du canal.  
30 De plus, soit $(M_{ij}^t)^{t \in  \{1, 1.5, 2, 2.5,\ldots\}}$ une séquence telle que 
31 $M_{ij}^t$ est une fonction partielle qui associe à chaque
32 $k$, $0 \le k \le  m-1$, le tuple $(Y^k_{ij},a^k_{ij},c^k_{ij})$ en entrant
33 dans la fonction \verb+update_elems+ à l'itération $t$ où
34 % \begin{itemize}
35 % \item
36  $Y^k_{ij}$ est la valeur du cannal \verb+channels[i].sent[j]+
37   à l'indice $k$,
38 %\item 
39 $a^k_{ij}$ est la  date (antérieure à $t$) mémorisant quand $Y^k_{ij}$ est ajouté et 
40 %\item 
41 $c^k_{ij}$ est le premier temps où cette valeur est accessible à $j$. 
42 La valeur est supprimée du canal $i\rightarrow j$ à la date $c^k_{ij}+1$.
43 %\end{itemize}
44 $M_{ij}^t$ a la signature suivante:
45 \begin{equation*}
46 \begin{array}{rrcl}
47 M_{ij}^t: & 
48 \{0,\ldots, \textit{max}-1\} &\rightarrow & E_i\times \Nats \times \Nats \\
49 & k  \in \{0,\ldots, m-1\} & \mapsto & M_{ij}(k)= (Y^k_{ij},a^k_{ij},c^k_{ij}).
50 \end{array}  
51 \end{equation*}
52
53 Intuitivement,  $M_{ij}^t$  est la mémoire du cannal
54 \verb+channels[i].sent[j]+ à l'iterations $t$. 
55 On note que le domaine de chaque $M_{ij}^1$ est $\{0\}$ et
56 $M_{ij}^1(0)=(\verb+Xp[i]+,0,0)$:    en effet le processus 
57 \verb+init+  initialise \verb+channels[i].sent[j]+ avec \verb+Xp[i]+.
58
59 Montrons comment l'indéterminisme des deux fonctions 
60 \verb+fetch_values+ et  \verb+diffuse_values+  
61 permet de modéliser l'équation  \Equ{eq:async}.
62 La  function   $M_{ij}^{t+1}$  est  obtenue à l'aide de mises à jour successives
63 de  $M_{ij}^{t}$  au travers des deux   functions   \verb+fetch_values+  and
64 \verb+diffuse_values+.   Par abus,   soit  $M_{ij}^{t+1/2}$  
65 la valeur de  $M_{ij}^{t}$ après la première fonctions pendant l'itération
66  $t$.
67
68 Dans ce qui suit, on  considère les éléments  $i$ et  $j$
69 dans  $\llbracket  n  \rrbracket$. 
70 A l'itération   $t$,  $t   \geq  1$,   soit
71 $(Y^0_{ij},a^0_{ij},c^0_{ij})$ la valeur de  $M_{ij}^t(0)$ en entrant 
72 dans la fonction 
73 \verb+fetch_values+.   
74 Si  $t$  est égal à  $c^0_{ij}+1$ alors on exécute 
75 l'instruction qui affecte $Y^0_{ij}$   (\textit{i.e.}, la valeur de tête du 
76 \verb+channels[i].sent[j]+) à  $Xd_{ji}^t$.  Dans ce cas,  la  fonction
77 $M_{ij}^t$ est mise à jour comme suit: $M_{ij}^{t+1/2}(k) = M_{ij}^{t}(k+1)$ pour chaque  $k$, $0 \le k \le m-2$ et $m-1$ est supprimée du domaine de $M_{ij}^{t+1/2}$.
78 Sinon, (\textit{i.e.}, lorsque  $t < c^0_{ij}+1$ ou lorsque le domaine de $M_{ij}$
79 est vide)  l'instruction  \verb+skip+  est exécutée et   $M_{ij}^{t+1/2}  =
80 M_{ij}^{t}$.
81
82 Dans la fonction \verb+diffuse_values+, 
83 s'il existe un $\tau$, $\tau\ge t$
84 tel que \mbox{$D^{\tau}_{ji} = t$}, soit alors   $c_{ij}$ défini par $ \min\{l \mid
85 D^{l}_{ji} =  t \} $.  Dans ce cas, on exécution l'instruction qui 
86 ajoute la valeur  \verb+Xp[i]+   dans la queue du cannal
87 \verb+channels[i].sent[j]+.    Alors,
88 $M_{ij}^{t+1}$ est défini en étendant $M_{ij}^{t+1/2}$  à $m$ de sorte que 
89 $M_{ij}^{t+1}(m)$ est $(\verb+Xp[i]+,t,c_{ij})$.  
90 Sinon, (\textit{i.e.}, lorsque $\forall l
91 \, .  \, l \ge t  \Rightarrow D^{l}_{ji} \neq t$ est établie) l'instruction
92 \verb+skip+
93 est  exécutée et $M_{ij}^{t+1} = M_{ij}^{t+1/2}$.
94
95
96 \begin{lemma}[Existence d'une exécution SPIN]\label{lemma:execution}
97   Pour chaque  sequence $(S^t)^{t  \in \Nats}$,\linebreak $(D^t)^{t \in \Nats}$, 
98   pour chaque fonction $F$,
99   il existe une exécution SPIN  telle que pour toute itération $t$, $t
100   \ge  1$, et pour chaque  $i$ et $j$ in  $\llbracket n \rrbracket$  
101   on a la propriété suivante:
102    
103 \noindent Si le domaine de $M_{ij}^t$ n'est pas vide, alors
104 \begin{equation}
105   \left\{
106     \begin{array}{rcl}
107       M_{ij}^1(0) & = & \left(X_i^{D_{ji}^{0}}, 0,0 \right) \\
108       \textrm{sit $t \geq 2$ alors }M_{ij}^t(0) & = &
109       \left(X_i^{D_{ji}^{c}},D_{ji}^{c},c \right) \textrm{, }
110       c = \min\{l | D_{ji}^l > D_{ji}^{t-2} \}
111     \end{array}
112   \right.
113   \label{eq:Mij0}
114 \end{equation}
115 \noindent De plus, on a :
116 \begin{equation}
117   \forall t'\, .\,   1 \le t' \le t  \Rightarrow   Xd^{t'}_{ji} = X^{D^{t'-1}_{ji}}_i
118   \label{eq:correct_retrieve}
119 \end{equation}
120 \noindent Enfin, pour chaque $k\in S^t$, la valeurde 
121 la variable  \verb+Xp[k]+  en sortant du processus 
122 \verb+update_elems+  est  égale à
123 $X_k^{t}$          \textit{i.e.},          $F_{k}\left(         X_1^{D_{k\,1}^{t-1}},\ldots,
124   X_{n}^{D_{k\,{n}}^{t-1}}\right)$ à la fin de la  $t^{\text{th}}$ itération.
125 \end{lemma}
126 \begin{Proof}
127 La preuve est faite par induction sur le nombre d'itérations.
128
129 \paragraph{Situation initiale:}
130 Pour le premier item, par definition de $M_{ij}^t$, on a $M_{ij}^1(0) = \left(
131   \verb+Xp[i]+, 0,0 \right)$ qui est égal à  $\left(X_i^{D_{ji}^{0}},
132   0,0 \right)$.
133 Ensuite, lepremier appel à la  fonction \verb+fetch_value+ 
134 soit affecte à la tête de \verb+channels[i].sent[j]+  à   \verb+Xd[j].v[i]+ soit ne modifie par 
135 \verb+Xd[j].v[i]+. 
136 Grâce au processus \verb+init+ process, 
137 les deux cas sont égaux à 
138 \verb+Xp[i]+,  \textit{i.e.}, $X_i^0$.  L'equation (\ref{eq:correct_retrieve})  est ainsi établie.
139
140 Pour le dernier item, soit $k$, $0  \le  k \le  n-1$. 
141 A la fin de la première exécution du processus \verb+update_elems+,
142 la valur   de
143 \ver+Xp[k]+       est       $F(\verb+Xd[+k\verb+].v[0]+,       \ldots,
144 \verb+Xd[+k\verb+].v[+n-1\verb+]+)$.  
145 Ainsi par définition de  $Xd$, ceci est égal à 
146 $F(Xd^1_{k\,0}, \ldots,Xd^1_{k\,n-1})$.  Grâce à l'équation \Equ{eq:correct_retrieve},
147 on peut conclure la preuve.
148
149
150
151 \paragraph{Inductive case:}
152
153 Suppose now that lemma~\ref{lemma:execution} is established until iteration $l$.
154
155 First,  if domain  of definition  of the  function $M_{ij}^l$  is not  empty, by
156 induction  hypothesis $M_{ij}^{l}(0)$  is  $\left(X_i^{D_{ji}^{c}}, D_{ji}^{c},c
157 \right)$ where $c$ is $\min\{k | D_{ji}^k > D_{ji}^{l-2} \}$.
158
159 At iteration $l$, if  $l < c + 1$ then the  \verb+skip+ statement is executed in
160 the   \verb+fetch_values+  function.   Thus,   $M_{ij}^{l+1}(0)$  is   equal  to
161 $M_{ij}^{l}(0)$.  Since $c > l-1$  then $D_{ji}^c > D_{ji}^{l-1}$ and hence, $c$
162 is $\min\{k  | D_{ji}^k  > D_{ji}^{l-1} \}$.  Obviously, this implies  also that
163 $D_{ji}^c > D_{ji}^{l-2}$ and $c=\min\{k | D_{ji}^k > D_{ji}^{l-2} \}$.
164
165 We now consider that at iteration $l$, $l$ is $c + 1$.  In other words, $M_{ij}$
166 is modified depending on the domain $\dom(M^l_{ij})$ of $M^l_{ij}$:
167 \begin{itemize}
168 \item  if $\dom(M_{ij}^{l})=\{0\}$  and $\forall  k\,  . \,  k\ge l  \Rightarrow
169   D^{k}_{ji} \neq l$  is established then $\dom(M_{ij}^{l+1})$ is  empty and the
170   first item of the lemma  is established; 
171 \item if $\dom(M_{ij}^{l})=\{0\}$ and $\exists  k\, . \, k\ge l \land D^{k}_{ji}
172   = l$  is established then $M_{ij}^{l+1}(0)$  is $(\verb+Xp[i]+,l,c_{ij})$ that
173   is  added  in  the  \verb+diffuse_values+ function  s.t.\linebreak  $c_{ij}  =
174   \min\{k  \mid  D^{k}_{ji}  = l  \}  $.   Let  us  prove  that we  can  express
175   $M_{ij}^{l+1}(0)$  as  $\left(X_i^{D_{ji}^{c'}},D_{ji}^{c'},c' \right)$  where
176   $c'$ is  $\min\{k |  D_{ji}^k > D_{ji}^{l-1}  \}$.  First,  it is not  hard to
177   establish that  $D_{ji}^{c_{ij}}= l \geq  D_{ji}^{l} > D_{ji}^{l-1}$  and thus
178   $c_{ij}  \geq   c'$.   Next,  since   $\dom(M_{ij}^{l})=\{0\}$,  then  between
179   iterations $D_{ji}^{c}+1$ and $l-1$, the \texttt{diffuse\_values} function has
180   not updated $M_{ij}$.  Formally we have
181 $$
182 \forall t,k  \, .\, D_{ji}^c <  t < l \land  k \geq t  \Rightarrow D_{ji}^k \neq
183 t.$$
184
185 Particularly, $D_{ji}^{c'} \not  \in \{D_{ji}^{c}+1,\ldots,l-1\}$.  We can apply
186 the     third    item     of    the     induction    hypothesis     to    deduce
187 $\verb+Xp[i]+=X_i^{D_{ji}^{c'}}$ and we can conclude.
188
189 \item  if   $\{0,1\}  \subseteq  \dom(M_{ij}^{l})$   then  $M_{ij}^{l+1}(0)$  is
190   $M_{ij}^{l}(1)$.   Let  $M_{ij}^{l}(1)=  \left(\verb+Xp[i]+, a_{ij}  ,  c_{ij}
191   \right)$.   By  construction $a_{ij}$  is  $\min\{t'  |  t' >  D_{ji}^c  \land
192   (\exists k \, .\, k \geq t' \land D_{ji}^k = t')\}$ and $c_{ij}$ is $\min\{k |
193   D_{ji}^k = a_{ij}\}$.  Let us show  $c_{ij}$ is equal to $\min\{k | D_{ji}^k >
194   D_{ji}^{l-1} \}$ further  referred as $c'$.  First we  have $D_{ji}^{c_{ij}} =
195   a_{ij} >  D_{ji}^c$. Since $c$  by definition is  greater or equal to  $l-1$ ,
196   then $D_{ji}^{c_{ij}}>  D_{ji}^{l-1}$ and then $c_{ij} \geq  c'$.  Next, since
197   $c$ is  $l-1$, $c'$ is $\min\{k |  D_{ji}^k > D_{ji}^{c} \}$  and then $a_{ij}
198   \leq  D_{ji}^{c'}$. Thus,  $c_{ij} \leq  c'$  and we  can conclude  as in  the
199   previous part.
200 \end{itemize}
201
202
203 The case where  the domain $\dom(M^l_{ij})$ is empty but  the formula $\exists k
204 \, .\, k \geq  l \land D_{ji}^k = l$ is established  is equivalent to the second
205 case given above and then is omitted.
206
207
208 Secondly, let us focus on the formula~(\ref{eq:correct_retrieve}).  At iteration
209 $l+1$, let $c'$ be defined as $\min\{k | D_{ji}^k > D_{ji}^{l-1} \}$.  Two cases
210 have to be  considered depending on whether $D_{ji}^{l}$  and $D_{ji}^{l-1}$ are
211 equal or not.
212 \begin{itemize}
213 \item If  $D_{ji}^{l} = D_{ji}^{l-1}$, since $D_{ji}^{c'}  > D_{ji}^{l-1}$, then
214   $D_{ji}^{c'} > D_{ji}^{l}$ and then $c'$  is distinct from $l$. Thus, the SPIN
215   execution detailed  above does not  modify $Xd_{ji}^{l+1}$.  It is  obvious to
216   establish   that   $Xd_{ji}^{l+1}  =   Xd_{ji}^{l}   =  X_i^{D_{ji}^{l-1}}   =
217   X_i^{D_{ji}^{l}}$.
218 \item Otherwise $D_{ji}^{l}$ is greater than $D_{ji}^{l-1}$ and $c$ is thus $l$.
219   According     to     \Equ{eq:Mij0}     we     have    proved,     we     have
220   $M_{ij}^{l+1}(0)=(X_i^{D_{ji}^{l}},D_{ji}^{l},l)$.   Then  the SPIN  execution
221   detailed above  assigns $X_i^{D_{ji}^{l}}$ to $Xd_{ji}^{l+1}$,  which ends the
222   proof of (\ref{eq:correct_retrieve}).
223 \end{itemize}
224
225 We are left to prove the induction of  the third part of the lemma.  Let $k$, $k
226 \in S^{l+1}$. % and $\verb+k'+ = k-1$.
227 At the  end of the first  execution of the \verb+update_elems+  process, we have
228 $\verb+Xp[+k\verb+]+=                                   F(\verb+Xd[+k\verb+][0]+,
229 \ldots,\verb+Xd[+k\verb+][+n\verb+-1]+)+$.  By  definition of $Xd$,  it is equal
230 to      $F(Xd^{l+1}_{k\,0},      \ldots,Xd^{l+1}_{k\,n-1})$.      Thanks      to
231 \Equ{eq:correct_retrieve} we have proved, we can conclude the proof.
232 \end{Proof}
233
234
235 \begin{lemma}
236   Bounding the size of channels  to $\textit{max} = \delta_0$ is sufficient when
237   simulating a DDN where delays are bounded by $\delta_0$.
238 \end{lemma}
239
240 \begin{Proof}
241   For  any $i$,  $j$, at  each  iteration $t+1$,  thanks to  bounded delays  (by
242   $\delta_0$),  element $i$  has to  know at  worst $\delta_0$  values  that are
243   $X_j^{t}$, \ldots, $X_j^{t-\delta_0+1}$.  They  can be stored into any channel
244   of size $\delta_0$.
245 \end{Proof}
246
247
248 \promelasound*
249 \begin{Proof}
250 %   For  the  case  where  the  strategy  is  finite,  one  notice  that  property
251 %   verification  is achieved  under  weak fairness  property.  Instructions  that
252 %   write or read into \verb+channels[j].sent[i]+ are continuously enabled leading
253 %   to  convenient  available  dates  $D_{ji}$.   It is  then  easy  to  construct
254 %   corresponding iterations of the DDN that are convergent.
255 % \ANNOT{quel sens donnes-tu a \emph{convenient} ici ?}
256
257   Let us show the contraposition of the theorem.  The previous lemmas have shown
258   that for any  sequence of iterations of the DDN, there  exists an execution of
259   the PROMELA  model that  simulates them.   If some iterations  of the  DDN are
260   divergent, then  they prevent  the PROMELA model  from stabilizing,  \textit{i.e.},  not
261   verifying the LTL property (\ref{eq:ltl:conv}).
262 \end{Proof}
263
264
265 % \begin{Corol}[Soundness wrt universall convergence property]\label{Theo:sound}
266 % Let $\phi$ be a DDN model where strategy, $X^(0)$ 
267 % are only constrained to be pseudo-periodic and
268 % in $E$ respectively.
269 % Let $\psi$ be its translation.
270 % If all the executions of $\psi$ converge, 
271 % then  iterations of $\phi$ are universally convergent.
272 % \end{Corol}
273
274
275 \promelacomplete*
276
277 \begin{Proof}
278   For models $\psi$  that do not verify the  LTL property (\ref{eq:ltl:conv}) it
279   is easy  to construct corresponding iterations  of the DDN,  whose strategy is
280   pseudo-periodic since weak fairness property is taken into account.
281
282 %   i.e. iterations that  are divergent.   Executions are
283 %   performed under weak  fairness property; we then detail  what are continuously
284 %   enabled:
285 % \begin{itemize}
286 % \item if the strategy is not  defined as periodic, elements $0$, \ldots, $n$ are
287 %   infinitely often updated leading to pseudo-periodic strategy;
288 % \item  instructions  that  write  or read  into  \verb+channels[j].sent[i]+  are
289 %   continuously enabled leading to convenient available dates $D_{ji}$.
290 % \end{itemize}
291 % The simulated DDN does not stabilize and its iterations are divergent.
292  \end{Proof}
293