refacto algo crash (todo preuve)

This commit is contained in:
Amaury JOLY
2026-03-02 15:10:18 +00:00
parent d9848967b8
commit 55fa76a272
4 changed files with 111 additions and 108 deletions

View File

@@ -177,65 +177,72 @@ For each $U \in \mathcal{U}$, we instantiate one DenyList object $DL_U$ whose au
\SetKwBlock{LocalVars}{Local Variables:}{}
\LocalVars{
$\texttt{unordered} \gets \emptyset$,
$\texttt{ordered} \gets \emptyset$,
$\texttt{delivered} \gets \emptyset$\;
$\prop[r][j] \gets \bot, \forall r, j \in \pi \times \mathbb{N}$\;
$\texttt{done}[r] \gets \emptyset,$
$\texttt{validate}[r] \gets \emptyset, \forall r \in \mathbb{N}$\;
% $\texttt{winners}[r] \gets \emptyset, \forall r$\;
$\mathit{unordered} \gets \emptyset$,
$\mathit{ordered} \gets \epsilon$,
$\mathit{delivered} \gets \epsilon$\;
$\mathit{prop}[r][j] \gets \bot, \forall j, r \in \Pi \times \mathbb{N}$\;
$\mathit{done}[r] \gets \emptyset, \forall r \in \mathbb{N}$\;
}
\vspace{1em}
\vspace{0.3em}
\For{$r = 1, 2, \ldots$}{
\textbf{wait until} $\texttt{unordered} \setminus \texttt{ordered} \neq \emptyset$\;
$S \gets \texttt{unordered} \setminus \texttt{ordered}$\;
\textbf{wait until} $\mathit{unordered} \setminus \mathit{ordered} \neq \emptyset$\;
$S \gets \mathit{unordered} \setminus \mathit{ordered}$;
$\RBcast(i, \texttt{PROP}, S, r)$\;
\textbf{wait until} $|\texttt{validate}(r)| > n - t$\;
$\texttt{validate}[r] \gets \texttt{validate}(r)$\;
\textbf{wait until} $|\textsf{validated}(r)| \geq n - t$\;
\ForEach{$j \in \Pi$}{
$\BFTAPPEND(\langle j, r\rangle)$\;
}
\ForEach{$j \in \Pi$}{
$\texttt{send}(j, \texttt{DONE}, r)$\;
$\textsf{send}(j, \texttt{DONE}, r)$\;
}
\textbf{wait until} $|\texttt{done}[r]| > n - t$\;
\textbf{wait until} $|\mathit{done}[r]| \geq n - t$\;
$\texttt{winners}[r] \gets \texttt{validate}(r)$\;
$\mathit{winners}[r] \gets \textsf{validated}(r)$\;
\textbf{wait until} $\forall j \in \texttt{winners}[r],\ \prop[r][j] \neq \bot$\;
$M \gets \bigcup_{j \in \texttt{winners}[r]} \prop[r][j]$\;\nllabel{code:Mcompute}
$\texttt{ordered} \gets \texttt{ordered} \cup \ordered(M)$\;
\textbf{wait until} $\forall j \in \mathit{winners}[r],\ \mathit{prop}[r][j] \neq \bot$\;
$M \gets \bigcup_{j \in \mathit{winners}[r]} \mathit{prop}[r][j]$\;\nllabel{code:Mcompute}
$\mathit{ordered} \gets \mathit{ordered} \cdot \ordered(M)$\;
}
\Fn{\texttt{validate}($r$)}{
\Return{$\{j: |\{k: (k, \PROVEtrace(r)) \in \BFTREAD()\}| \geq t+1\}$}\;
\vspace{0.3em}
\Fn{\textsf{validated}($r$)}{
\Return{$\{j: |\{k: (k, r) \in \BFTREAD()\}| \geq t+1\}$}\;
}
\Upon{$\textbf{ABCAST}(m)$}{
$\texttt{unordered} \gets \texttt{unordered} \cup \{m\}$\;
\vspace{0.3em}
\Upon{$\ABbroadcast(m)$}{
$\mathit{unordered} \gets \mathit{unordered} \cup \{m\}$\;
}
\Upon{$\texttt{rdeliver}(\texttt{PROP}, S, \langle j, r \rangle)$ from process $p_j$}{
$\texttt{unordered} \gets \texttt{unordered} \cup S$\;
$\prop[r][j] \gets S$\;
$\BFTPROVE(r)$\;
\vspace{0.3em}
\Upon{$\textsf{rdeliver}(\texttt{PROP}, S, \langle j, r \rangle)$ from process $p_j$}{
$\mathit{unordered} \gets \mathit{unordered} \cup S$;
$\mathit{prop}[r][j] \gets S$\;
$\BFTPROVE(\langle j, r\rangle)$\;
}
\Upon{$\texttt{receive}(\texttt{DONE}, r)$ from process $p_j$}{
$\texttt{done}[r] \gets \texttt{done}[r] \cup \{j\}$\;
\vspace{0.3em}
\Upon{$\textsf{receive}(\texttt{DONE}, r)$ from process $p_j$}{
$\mathit{done}[r] \gets \mathit{done}[r] \cup \{j\}$\;
}
\Upon{$\textbf{ADELIVER}()$}{
\If{$\texttt{ordered} \setminus \texttt{delivered} = \emptyset$}{
\vspace{0.3em}
\Upon{$\ABdeliver()$}{
\If{$\mathit{ordered} \setminus \mathit{delivered} = \emptyset$}{
\Return{$\bot$}
}
$m \gets \ordered(\texttt{ordered} \setminus \texttt{delivered})[0]$\;
$\texttt{delivered} \gets \texttt{delivered} \cup \{m\}$\;
let $m$ be the first message in $\mathit{ordered} \setminus \mathit{delivered}$\;
$\mathit{delivered} \gets \mathit{delivered} \cdot \{m\}$\;
\Return{$m$}
}