by Robert L. Constable
2011 revised version in arXiv:- http://arxiv.org/abs/1109.3370
2008 Cornell University Tech Report Ref Number 11513: http://hdl.handle.net/1813/11512
The Fischer-Lynch-Paterson theorem (FLP) says that it is impossible for
processes in an asynchronous distributed system 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. 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 block, i.e. reach a global
state in which no process can decide. A deterministic fault-tolerant consensus
protocol is effectively nonblocking if from any reachable global state we can
find an execution path that decides. In this article we effectively construct a
nonterminating execution of such a protocol. That is, given the protocol P and a
natural number n, we show how to compute the n-th step of an infinitely
indecisive computation of P. From this fully constructive result, the classical
FLP follows as a corollary as well as a stronger classical result, called here
Strong FLP. Moreover, the construction focuses attention on the important role
of nonblocking in protocol design.