We propose to bring together two historically disjoint lines of research: the epistemic analysis of distributed systems on the one hand, which aims at understanding the evolution of the knowledge of the components of a distributed system; and reactive synthesis, which aims at constructing such systems automatically from a formal specification given as a formula of a temporal logic.
Reactive synthesis has the potential to revolutionize the development of distributed systems. From a given logical specification, the synthesis algorithm automatically constructs an implementation that is correct-by-design. This allows the developer to focus on “what” the system should do instead of “how” it should be done. There has been a lot of success in the last years in synthesizing individual components of a distributed system. However, the complete synthesis of distributed protocols is, with currently available methods, far too expensive for practical applications.
Recent advances in the study of knowledge in distributed systems, such as the Knowledge of Preconditions principle, offer a path to significantly improve the situation. Our vision is a new class of synthesis algorithms that gainfully use this potential by constructing the distributed protocol in terms of the evolving knowledge of the components rather than the low-level evolution of the states.
We bring to the project complementing skills and expertise in the two respective fields. The proposed project will begin by carrying out a study on epistemic arguments for the correctness of existing distributed protocols. The goal is to develop a formalization of these arguments in the form of a diagrammatic proof that can be verified automatically. We will then develop systematic methods for the construction of such proofs, based on insights like the Knowledge of Preconditions principle. Finally, we will integrate our formalization of epistemic proofs into a synthesis algorithm that automatically constructs such a proof for a given specification, and then translates the proof into an actual implementation.