🤖 AI Summary
This paper addresses the automatic synthesis of executable, synchronous distributed models (in Promela style) from lightweight formal specifications—comprising action pre/postconditions and first-order relational constraints—augmented with global linear temporal logic (LTL) constraints. We propose a two-phase pruning-based synthesis algorithm that employs counterexample batching: an exploration phase rapidly identifies feasible regions, followed by a refinement phase focused on optimization. Our approach integrates Alloy modeling, symbolic model checking, counterexample-guided incremental search, and Promela semantics encoding, ensuring soundness while significantly improving bounded synthesis efficiency. We implement a prototype tool and evaluate it on several classical distributed protocols, successfully generating synchronous models that satisfy all specified global LTL constraints. Experimental results demonstrate speedups of one to two orders of magnitude over conventional exhaustive enumeration methods.
📝 Abstract
We present an approach to automatically synthesize synchronized models from lightweight formal specifications. Our approach takes as input a specification of a distributed system along with a global linear time constraint, which must be fulfilled by the interaction of the system's components. It produces executable models for the component specifications (in the style of Promela language) whose concurrent execution satisfies the global constraint. The component specifications consist of a collection of actions described by means of pre and post conditions together with first-order relational formulas prescribing their behavior. We use the Alloy Analyzer to encode the component specifications and enumerate their potential implementations up to some bound, whose concurrent composition is model checked against the global property. Even though this approach is sound and complete up to the selected bound, it is impractical as the number of candidate implementations grows exponentially. To address this, we propose an algorithm that uses batches of counterexamples to prune the solution space, it has two main phases: exploration, the algorithm collects a batch of counterexamples, and exploitation, where this knowledge is used to speed up the search. The approach is sound, while its completeness depends on the batches used. We present a prototype tool, describe some experiments, and compare it with related approaches.