Skip to main content

Output-Sensitive Algorithms for Reactive Synthesis

Periodic Reporting for period 3 - OSARES (Output-Sensitive Algorithms for Reactive Synthesis)

Reporting period: 2019-07-01 to 2020-05-31

Distributed embedded systems have started to transform the role of computing technology in all sectors of our society. Applications include transport systems, building technology, energy management, health care, infrastructure, and environmental protection. These applications constitute a disruptive technology with the potential of vast savings in terms of energy, environmental pollution, and implementation costs. The flipside of these benefits is the potential for significant economical and possibly even life-threatening damage that could be caused if a distributed system fails to function as intended. Designing distributed systems that are safe, stable, and robust is difficult, because local design decisions may have global consequences, and many objectives can only be realized when multiple components cooperate.
Reactive synthesis has the potential to revolutionize the development of distributed embedded systems. From a given logical specification, the synthesis algorithm automatically constructs an implementation that is correct-by-design. The vision is that a designer analyzes the design objectives with a synthesis tool, automatically identifies competing or contradictory requirements, and obtains an error-free prototype implementation. Coding and testing, the most expensive stages of development, are eliminated from the development process. Recent case studies from robotic control and from hardware design, such as the automatic synthesis of the AMBA AHB bus controller, demonstrate that this vision is in principle feasible. However, previously known synthesis algorithms do not scale to large systems. Even if successful, the algorithms produce code that is much larger and much more complicated than the code produced by human programmers for the same specification.
In the OSARES project, we address both of these fundamental shortcomings at the same time. The goal of the project is to develop output-sensitive synthesis algorithms, i.e. algorithms that, in addition to optimal performance in the size of the specification, also perform optimally in the size and structural complexity of the implementation. Target applications for our algorithms come from both the classic areas of reactive synthesis, such as hardware circuits, and from new and much more challenging application areas such as the distributed coordination of autonomous vehicles and manufacturing robots, which are far beyond the reach of the currently available synthesis algorithms.
During the period covered in this report, the project has made fundamental progress in developing the new, output-sensitive approach to reactive synthesis. We have developed metrics that organize the solution space, constraint solving methods that explore growing fragments of this space with highly efficient, symbolic search techniques, and we have developed new synthesis algorithms that automatically construct executable code for a range of platforms, including FPGA-based hardware and mobile apps. With our new algorithms it is possible to synthesize systems with far greater architectural complexity, including distributed systems with causal memory and with partial observation, and with far more complex requirement specifications, including security requirements like secrecy, than with previous algorithms. We have translated these foundational results to first practical successes. We have synthesized several real-life applications that are significantly beyond the reach of standard algorithms, including an Android music player app and a controller for an autonomous race car.
By the end of the project, we expect to have output-sensitive synthesis algorithms for the entire range of discrete, real-time, and distributed reactive systems. Throughout this range of system types, we will have metrics that structure the space of potential implementations. The expected theoretical result is a comprehensive understanding of the space of synthesis algorithms, drawing distinctions even between synthesis algorithms that have the same complexity in the input. The expected practical result is to have algorithms that produce better implementations, and that scale to larger synthesis problems.
We aim at algorithms that perform optimally both in terms of the output and in terms of the input, in the sense that the lower estimate on the runtime should describe the actual behavior of the algorithm. This excludes standard algorithms for reactive synthesis that process the specification in an eager fashion, because, in such algorithms, the input complexity would dominate the output complexity. The project will therefore develop new lazy algorithms.
Finally, the project will further explore and expand the application areas for reactive synthesis. In addition to the classic application areas, like hardware synthesis, we will expand into more challenging application areas such as the control and coordination problems in autonomous vehicles and the distributed control of manufacturing robots, which are far out of reach for currently available synthesis algorithms.