Knowledge-Based Synthesis of Distributed Systems Using Event Structures
Mark Bickford (Cornell University), Robert Constable (Cornell, University), Joseph Halpern (Cornell University), Sabina Petride (Cornell, University)

TL;DR
This paper presents a method for synthesizing distributed system programs from high-level knowledge-based specifications using formal proof systems, enabling automatic conversion to implementable protocols.
Contribution
It introduces a high-level specification language incorporating knowledge for distributed protocols and demonstrates how to synthesize and transform these specifications into executable protocols within Nuprl.
Findings
Successful synthesis of distributed protocols from knowledge-based specifications.
Application of proof tactics in Nuprl for protocol transformation.
Framework for high-level specification and automatic protocol generation.
Abstract
To produce a program guaranteed to satisfy a given specification one can synthesize it from a formal constructive proof that a computation satisfying that specification exists. This process is particularly effective if the specifications are written in a high-level language that makes it easy for designers to specify their goals. We consider a high-level specification language that results from adding knowledge to a fragment of Nuprl specifically tailored for specifying distributed protocols, called event theory. We then show how high-level knowledge-based programs can be synthesized from the knowledge-based specifications using a proof development system such as Nuprl. Methods of Halpern and Zuck then apply to convert these knowledge-based protocols to ordinary protocols. These methods can be expressed as heuristic transformation tactics in Nuprl.
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
