How can I transform LTL into Automata in PROMELA? I know that with the command SPIN -f "ltl x" it is possible transform the LTL into a never claim, but I want the automata of the LTL and not the negation one. It is correct If I negate the LTL before to generate the never claim. Can anyone help me?
相关问题
- How to create two dimensional array in Promela?
- Use vim syntax definition with sublime-text2
- Can Coq be used (easily) as a model checker?
- atomic sequences in Promela. Contradictory in docu
- How can i change these into CTL SPEC in NuSMV mode
相关文章
- Use vim syntax definition with sublime-text2
- Can Coq be used (easily) as a model checker?
- atomic sequences in Promela. Contradictory in docu
- How can i change these into CTL SPEC in NuSMV mode
- How to use NuSMV to witness the man-in-the-middle
- How does SPIN decide the order of process executio
- Using (U)ntil operator in SPIN ltl formula
- How to model a transition system with SPIN
Spin generates the Promela code equivalent to the Buchi Automaton which matches the LTL formula, and envelops it into a never block.
From the docs:
Therefore, if you want to have a look at the code that matches a given LTL formula, you can simply type:
e.g.:
An alternative way for obtaining the same code, plus a graphic representation of the Buchi Automaton, is to follow this link.
Looking at both your comments and this other question of yours, it appears that you want to check whether two LTL formulas p and g contradict each other, that is whether it is definitively the case that a model satisfying p would necessarily violate g and vice-versa.
This could be theoretically done using spin. However, this tool does not simplify the code of the Buchi Automaton and therefore it is difficult to deal with its output.
I would reccomend you to download LTL2BA (at the following link) instead. To set it up, you just need to unpack the tar.gz file and type make in the console.
Let's see a usage example:
Since
[] q0
and<> ! q0
contradict each other, the returned Buchi automaton is empty [n.b.: by empty i mean that it has no accepting execution]. In this context, the code never { false; } is the canonical form of an empty Buchi Automaton without any accepting execution.Disclaimer: comparing the output with never { false } to decide whether the Buchi Automaton is empty or not, might lead to spurious results if the simplification steps are unable to transform all empty automatons in the canonical form.