This notes are based on a discussion with
Viktor Schuppan, Rüdiger Ehlers, and Barbara Jobstmann.
In order to obtain a common format, we have to discuss the following topics:
Subset definitions (e.g., GR-1, Safety, Reachability,…)
Necessary abbreviations: assume, assert, define, other shortcuts? (see Lily syntax)
Order for BDD-based approaches
XML-format (see Unbeast)
LTL syntax (e.g., Wring syntax from below)
Title and Meta-information about case studies
Information about the target: Mealy, Moore, realizability
Regular expressions or automata?
How to embed controller synthesis? Ways to specify partial models (see NuGat/NuSMV)
FORMULA ::= TERM {BINARYOP TERM}
TERM ::= {ATOM | (FORMULA) | UNARYOP FORMULA | TEMPORALOP (FORMULA)}
BINARYOP ::= * | + | ^ | → | ↔ | U | R | V
UNARYOP ::= !
TEMPORALOP ::= G | F | X
ATOM ::= VAR=VALUE
VAR ::= \w+
VALUE ::= 0 | 1
Furthermore, Wring allows you to use the keyword define to avoid writing the same formula multiple times.
Extensions in Lily:
A formula can range over several lines. A semi-colon indicates the end of the formula.
Each formula can be prefixed with the keyword assume or assert
In general, a semi-colon acts as conjunction between formulas unless the assume/assert keywords are used. Then, the list of formulas corresponds to an implication between a conjunction of all formulas assumed and a conjunction of all formulas asserted. E.g.,
assume G(a=1);
assume G(b=1);
assert G(c=1);
corresponds to (G(a=1) * G(b=1)) → G(c=1)