%\enlargethispage
% keeps everything on one page so it is returned by latex macro.
\usepackage
\usepackage
\Large\begin
\textbf{Effectively Nonblocking Consensus
Procedures Can Execute Forever – a Constructive Version of FLP
}
\vspace
\large
\normalsize\em
\normalsize\em
\normalsize\em
\footnote
\end
\noindent The Fischer-Lynch-Paterson theorem (FLP) says that it is
impossible for processes in an \emph
to achieve consensus on a binary value when a single process
can fail; it is a widely cited theoretical result about network
computing. All proofs that I know depend essentially on classical
(nonconstructive) logic, although they use the hypothetical
construction of a nonterminating execution as a main lemma.
\flushleft
FLP is also a guide for protocol designers, and in that role there
is a connection to an important property of consensus procedures,
namely that they should not \emph
, i.e. reach a global state
in which no process can decide.
\flushleft
A deterministic fault-tolerant consensus protocol is
\emph
if from any reachable \emph
we can find an execution path that decides. In this article
we effectively construct a nonterminating execution of any such
protocol. That is, given any effectively nonblocking protocol \textbf
and a natural
number $n$, we show how to compute the $n$-th step of an infinitely
\emph
of \textbf
. From this fully constructive
result, the \emph
follows as a corollary as well as a
stronger classical result, called here \emph
. Moreover,
the construction focuses attention on the important role of
nonblocking in protocol design.
\flushleft
An interesting consequence of the constructive proof is that we can, in principle, build an \emph
for a consensus protocol that is provably correct, indeed because it is provably correct. We can do this in practice on certain kinds of networks.