Automated Synthesis of Distributed Self-Stabilizing Protocols
Fathiyeh Faghih, Borzoo Bonakdarpour, Sebastien Tixeuil, and Sandeep, Kulkarni

TL;DR
This paper presents an SMT-based automated method for synthesizing distributed self-stabilizing protocols from high-level specifications, enabling the creation of protocols like token rings and mutual exclusion with minimal explicit state descriptions.
Contribution
The authors introduce a novel SMT-based synthesis approach that requires only the temporal behavior, not explicit legitimate states, to generate various self-stabilizing protocols.
Findings
Successfully synthesized well-known protocols including token ring and mutual exclusion.
Extended the approach to ideal-stabilizing and monotonic-stabilizing protocols.
Implemented methods effectively produce protocols with desired stabilization properties.
Abstract
In this paper, we introduce an SMT-based method that automatically synthesizes a distributed self-stabilizing protocol from a given high-level specification and network topology. Unlike existing approaches, where synthesis algorithms require the explicit description of the set of legitimate states, our technique only needs the temporal behavior of the protocol. We extend our approach to synthesize ideal-stabilizing protocols, where every state is legitimate. We also extend our technique to synthesize monotonic-stabilizing protocols, where during recovery, each process can execute an most once one action. Our proposed methods are fully implemented and we report successful synthesis of well-known protocols such as Dijkstra's token ring, a self-stabilizing version of Raymond's mutual exclusion algorithm, ideal-stabilizing leader election and local mutual exclusion, as well as…
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.
