Previous chapter: Model Checking
This is a learning note of a course in CISPA, UdS. Taught by Bernd Finkbeiner
Synthesis
In synthesis, we check automatically if there exists a program that satisfies a given specification.
If the answer is yes, we construct such a program.
We solve it by determine the winner of a two-player game between a system player and an environment player.
Task | Goal | |
---|---|---|
System player | choose the outputs of the system | meet the specification |
Environment player | choose the inputs of the system | falsify the specification |
Therefore, the specification is satisfied if the System player wins.
Such winning strategy can be translated into a program that is guaranteed to satisfy the specification.
Example: coffee machine
In this example, we assume there’s a machine that “outputs coffee” whenever users press a button.