Skip to main content

Synthesis Technologies for Reactive Systems Software Engineers

Periodic Reporting for period 4 - SYNTECH (Synthesis Technologies for Reactive Systems Software Engineers)

Reporting period: 2020-04-01 to 2022-03-31

Reactive synthesis is an automated procedure to obtain a correct-by-construction reactive system from a given specification. Specifications are different than ordinary code as they focus on what properties the system should satisfy rather than on how it will satisfy them. Rather than manually constructing an implementation and using formal verification or testing to verify it against a specification, synthesis offers an approach where a correct implementation of the system is automatically obtained for a given specification, if such an implementation exists. As the correct-by-construction promise is attractive, much research effort has been invested and much progress has been achieved over the last two decades on reactive synthesis theory, algorithms, and tools. Despite recent advancements on the theory and algorithms of reactive synthesis though, e.g. efficient synthesis for fragments of linear temporal logic, many challenges remain in bringing reactive synthesis technologies to the hands of software engineers.

The SYNTECH project is about bridging this gap. It addresses challenges that relate to the change from writing code to writing specifications, and the development of tools to support a specification-centric rather than a code-centric development process.
The project advanced in four fronts: language, analyses, tools, and evaluation. At the language front, it introduced Spectra, a new expressive yet easy to use specification language, specifically tailored for use in the context of reactive synthesis by software engineers. At the analyses front, it developed analyses that assist software engineers in writing high-quality specifications for synthesis, such as means to identify problems in specifications and debug them. At the tools front, we have implemented and integrated the language and analyses into the popular Eclipse development platform, to allow software engineers to actually use them, and to serve as a test bad for reactive synthesis and a concrete platform for future research. Finally, at the evaluation front, we have introduced Spectra to hundreds of undergraduate computer science students in project classes we have taught and thus collected and published new benchmark specifications and learned about the specific challenges engineers may experience when writing specifications and using a synthesizer.

Overall, the project results advanced the state-of-the-art in reactive synthesis, towards its use by software engineers.
The project progressed beyond the state of the art on each of the four fronts. At the language front, the introduction of the Spectra language advances the state of the art in specification languages. At the analyses front, we advanced the state of the art with new analyses that help engineers identify problems in specifications and debug them. At the tools front, the Spectra synthesizer advanced the state of the art in synthesis tools. Finally, the project advanced the state of the art with new benchmark specifications.