The Challenges in Specifying and Explaining Synthesized Implementations of Reactive Systems
This work tackles the challenge of making formal synthesis more accessible and understandable for developers, but it is incremental as it surveys existing approaches rather than introducing new methods.
The paper addresses the problem that automatically synthesized implementations of reactive systems are often unreadable and hinder developer understanding, surveying existing tools that aim to guide specification writing and improve transparency in synthesis outcomes.
In formal synthesis of reactive systems an implementation of a system is automatically constructed from its formal specification. The great advantage of synthesis is that the resulting implementation is correct by construction; therefore there is no need for manual programming and tedious debugging tasks. Developers remain, nevertheless, hesitant to using automatic synthesis tools and still favor manually writing code. A common argument against synthesis is that the resulting implementation does not always give a clear picture on what decisions were made during the synthesis process. The outcome of synthesis tools is mostly unreadable and hinders the developer from understanding the functionality of the resulting implementation. Many attempts have been made in the last years to make the synthesis process more transparent to users. Either by structuring the outcome of synthesis tools or by providing additional automated support to help users with the specification process. In this paper we discuss the challenges in writing specifications for reactive systems and give a survey on what tools have been developed to guide users in specifying reactive systems and understanding the outcome of synthesis tools.