A Formal Approach to Fault Tolerant Distributed