CA1: If process 1 is nonfaulty, then each nonfaulty process terminates with vi = v.
CA2: If process 1 is faulty, then there is a constant c such that for each nonfaulty process i, vi = c or vi = "process 1 is faulty".
Consider a set of n processes in a fail-stop system, where each process knows the names of the other processes. Each process also has a portion of stable storage that implements an atomic write operation and whose contents is preserved across crashes. For example, suppose process p writes the value v to stable storage and at a later point writes the value v'. If p crashes after the write operation of v' completes, then after p recovers it will find the value v' in stable storage. But, if p crashes during the write operation of v', then upon recovery p will find either v or v' in stable storage. That is, a crash an an inopportune time won't cause the value on stable storage to become some value other than v or v'.
The processes are involved in some computation during which all of the processes eventually crash. We will say that process i failed before process j if process j detects process i's failure. Thus, the condition failed before defines an irreflexive partial order. A process i is one of the last processes to fail if it maximal in this order; that is, no process detects i's failure.
Assume that the processes
start recovering after all of them have failed. The order in which they
recover is not constrained.