1 \JFC{Voir section~\ref{sec:spin:proof}}
3 Cette section donne les preuves des deux théorèmes de correction et complétude
4 du chapitre~\ref{chap:promela}.
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$.
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$.
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
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
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ù
36 $Y^k_{ij}$ est la valeur du cannal \verb+channels[i].sent[j]+
39 $a^k_{ij}$ est la date (antérieure à $t$) mémorisant quand $Y^k_{ij}$ est ajouté et
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$.
44 $M_{ij}^t$ a la signature suivante:
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}).
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]+.
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
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
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} =
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
93 est exécutée et $M_{ij}^{t+1} = M_{ij}^{t+1/2}$.
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:
103 \noindent Si le domaine de $M_{ij}^t$ n'est pas vide, alors
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} \}
115 \noindent De plus, on a :
117 \forall t'\, .\, 1 \le t' \le t \Rightarrow Xd^{t'}_{ji} = X^{D^{t'-1}_{ji}}_i
118 \label{eq:correct_retrieve}
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.
127 La preuve est faite par induction sur le nombre d'itérations.
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}},
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
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.
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+,
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.
151 \paragraph{Inductive case:}
153 Suppose now that lemma~\ref{lemma:execution} is established until iteration $l$.
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} \}$.
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} \}$.
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}$:
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
182 \forall t,k \, .\, D_{ji}^c < t < l \land k \geq t \Rightarrow D_{ji}^k \neq
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.
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
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.
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
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}} =
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}).
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.
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$.
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
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 ?}
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}).
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.
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.
282 % i.e. iterations that are divergent. Executions are
283 % performed under weak fairness property; we then detail what are continuously
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}$.
291 % The simulated DDN does not stabilize and its iterations are divergent.