promela

how to make a non-initialised variable in Spin?

╄→гoц情女王★ 提交于 2019-12-11 01:59:27
问题 It seems that Promela initialises each variable (by default, to 0, or to the value that is given in the declaration). How can I declare a variable that is initialised by an unknown value? The documentation suggests if :: p = 0 :: p = 1 fi but I don't think that it works: Spin still verifies this claim bit p init { if :: p = 0 :: p = 1 fi } ltl { ! p } (and falsifies p ) So what exactly is the semantics of init ? There still is some "pre-initial" state? How can I work around this - and not

Using (U)ntil operator in SPIN ltl formula

﹥>﹥吖頭↗ 提交于 2019-12-11 01:36:30
问题 I am trying to understand how to correctly use the Until operator in an ltl formula. I found this definition (below) to be clear: U ntil A U B: true if there exists i such that: B is true in [s i , s i+1 , s i+2 , … ] for all j such that 0 ≤ j < i, formula A is true in [s j , s j+1 , s j+2 , … ] meaning: B is true at time i for times between 0 and i-1, formula A is true still using the formalization of "true at time i" Sample code with example ltl formula: mtype = {Regular, Reverse, Quit}

Use vim syntax definition with sublime-text2

走远了吗. 提交于 2019-12-06 01:31:17
问题 Does anyone know if you can use (or convert) vim Syntax Highlight Definition Files with Sublime Text? I am searching for a highlighter for promela and only found one for vim, but am using sublime-text as my default editor The Definition i've found https://github.com/vim-scripts/promela.vim/blob/master/syntax/promela.vim 回答1: Sublime Text uses the XML-based PLIST .tmLanguage format for language definitions, and to my knowledge no one has written a converter for vim syntaxes. However, if you'd

Use vim syntax definition with sublime-text2

我们两清 提交于 2019-12-04 06:37:24
Does anyone know if you can use (or convert) vim Syntax Highlight Definition Files with Sublime Text? I am searching for a highlighter for promela and only found one for vim, but am using sublime-text as my default editor The Definition i've found https://github.com/vim-scripts/promela.vim/blob/master/syntax/promela.vim Sublime Text uses the XML-based PLIST .tmLanguage format for language definitions, and to my knowledge no one has written a converter for vim syntaxes. However, if you'd like to take a stab at creating one yourself, I'd recommend installing the PackageDev plugin for ST2 (it

How to compare two LTLs?

限于喜欢 提交于 2019-12-02 09:04:37
问题 How can I compare two LTLs to see if one can contradict each other? I ask this because I have a hierarchical state machine and LTLs describing the behavior in each state. I need to know if a local LTL can contradict a global LTL. I saw in the Article 'Feature Specification and Automated Conflict Detection' that two LTLs properties f and g are inconsistent iff L(f) intersection L(g) is empty. And this is exactly the model checking question with f as the program and ¬g as the property. Can

How to transform LTL into Automato in Promela - SPIN?

↘锁芯ラ 提交于 2019-12-01 22:51:41
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? Patrick Trentin 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 : NAME never - declaration of a temporal claim. SYNTAX never { sequence } DESCRIPTION A never claim can be used to define system behavior

atomic sequences in Promela. Contradictory in documentation

廉价感情. 提交于 2019-11-29 16:49:30
Here, http://spinroot.com/spin/Man/Manual.html , it is written that: In Promela there is also another way to avoid the test and set problem: atomic sequences. By prefixing a sequence of statements enclosed in curly braces with the keyword atomic the user can indicate that the sequence is to be executed as one indivisible unit, non-interleaved with any other processes. It causes a run-time error if any statement, other than the first statement, blocks in an atomic sequence . This is how we can use atomic sequences to protect the concurrent access to the global variable state in the earlier