Lower bound on the number of rounds in crash stop synchronous consensus
Any consensus algorithm with processes that tolerates crashes requires more than rounds.
We suppose binary consensus in a synchronous model where each round consists of a message sending and message delivery phase. Each non crashed process must agree on a value in .
Here is an informal reasoning and description of the 'chain argument'. The full proof is in Impossibility Results for Distributed Computing.
Structure
First, we reason that there in an initial state with two executions and such that the consensus leads to a different result. In exactly one process crashes at the beginning of the first round. In no processes crash.
Then, we will argue for any round execution with processes, that any execution is equivalent to one without crashes. This result combined with the first gives us the desired lower bound.
We'll use 'chain argument's. A chain argument constructs a sequence (chain) of executions such that every adjacent pair is indistinguishable by at least one correct process. This means that each execution must return the same result.
a) The same configuration can lead to different results
Statement 1: There in an initial state with two executions and such that the consensus leads to a different result. In exactly one process crashes at the beginning of the first round. In no processes crash. Why?
Define to be the initial configuration (state) where processes have input and the others have input . Now, a valid consensus, for executions starting from , where no processes fail, will return starting from and starting from .
There must be some where decide different results.
Intuitively, an execution starting from where crashes at the start is not distinguishable from following . and must decide the same results which means that and must decide different results even though they both start from .

b) Any round execution is equivalent to one without crashes
Statement 2: any round execution with processes is equivalent to one without crashes.
The trick is as follows: in a round where a process crashes, the crash may occur before has had a chance to send all their outbound messages. If we suppose that fails to send a message to , then there must be a live process who cannot distinguish this execution from one where did send a message to . We know must exist because . We can apply this to say that the execution where crashes mid-round is indistinguishable from one where it crashes at the start of the next round.
This gives us an induction. We can move crashes in the th round to the start of non-existent th round. Then, we can move crashes in the th round to the th round and by induction eventually to the start of non-existent th round.