Substituting for Real Time and Common Knowledge in Distributed Systems

We study time and knowledge in synchronous and asynchronous reliable distributed systems. For both types of systems, we describe clocks that can be used as if they were perfectly synchronized real-time clocks in the solution of a large class of problems that we formally characterize. For this same class of problems, we also propose a broadcast primitive that can be used as if it achieves common knowledge. Our clocks and broadcast primitive are tools that considerably simplify the task of designing and proving correct distributed algorithms: the designer can assume that processors have access to real-time clocks and the ability to achieve common knowledge. The latter can be used to implement the abstraction of shared memory.