据我所知,
单调非减序列。
线性时序逻辑具有X
操作者,允许一个表达是指保持在下一状态一个布尔条件,而不是在先前状态的性质。
然而,可以不直接与一个LTL式中的下一个状态的比较当前状态的整数值,因为X
评估为布尔值。
从理论上讲,有什么可以做的是位爆破它,例如编码的<=
运营商在整数布尔属性通过一些巧妙地利用了模运算的手段或位运算(它不应该是无符号的变量太用力)和相应的布尔值的位对位比较(见最后注)。
然而,从建模的角度来看,最简单的方法是使用prev_value
变量丰富您的模型,并简单地检查在每个状态下属性prev_value <= cur_value
是否成立。请注意,在这种情况下,您应该使用命令d_step
将两个值分配组合在一起,以便它们在单个状态下合并,不存在中间转换,例如。
...
byte prev_value;
byte cur_value;
...
d_step {
prev_value = cur_value;
cur_value = ... non-blocking function ...
}
否则,关于prev_value
到cur_value
的不变性可能导致在相应的自动机被打破一些状态s_i
。(注:这实际上不会妨碍特定LTL财产你有兴趣的验证,但它可以与其他公式的问题)
通配符索引编制。
如果我理解正确,你想表达一个属性s.t. - 在每种状态下,只有从0
到index-1
的存储单元需要为单调不递减,其中index
是一个可以更改值(任意?)的变量。
这种属性的结构应该是:
ltl p1 {
[] (
((1 <= index) -> "... values[0] is monotonically non-decreasing ...") &&
((2 <= index) -> "... values[1] is monotonically non-decreasing ...") &&
((3 <= index) -> "... values[2] is monotonically non-decreasing ...") &&
...
((N <= index) -> "... values[N-1] is monotonically non-decreasing ...")
)
}
我相信回答你的问题是没有。不过,我建议您使用宏作为C预处理器以简化属性的编码并避免一遍又一遍地写同样的东西。
注:
让我们curr_int
和next_int
0-1整数变量S.T. next_int
等于在下一个状态(又名curr_int
是next_int
的前一个值)和curr
布尔变量s.t.中的值curr_int
。 curr
是true
当且仅当curr_int
等于1
。
然后,由LTL语义,X curr
是true
当且仅当curr_int
(next_int
)是在下一(电流)状态等于1
。
考虑以下真值表国有s_i
:
curr_int | next_int | curr_int <= next_int
0 | 0 | 1
0 | 1 | 1
1 | 0 | 0
1 | 1 | 1
从上面的定义,我们可以把它改写为:
curr | X curr | EXPR
false | false | true
false | true | true
true | false | false
true | true | true
从真值表这是可以可见EXPR
对应于
!curr v (X curr)
可以更优雅改写为
curr -> (X curr)
释是我们最后的LTL-encodeable版本的curr_int <= next_int
对于给定的状态s_i
,当两者都0-1整数变量。
我很欣赏你的问题。 ** a)** *单调递增*函数是s.t. f(x + 1)> f(x)',则您编码*单调非递减*函数,即f(x + 1)> = f(x)'。在我的回答中,我认为比较运算符'> ='是你想要的。 ** b)**包含[多个看似无关的问题](https://meta.stackexchange.com/questions/120633/what-do-we-do-with-with-multiple-question-questions)的问题应该是真的分成多个问题;它可以更轻松地查询重复项,因为标题可以更紧密地匹配问题的内容,并且可以产生更清晰的* Q/A *。 –
谢谢帕特里克。我仍然需要深入解答你的答案,但是关于一个职位中的多个问题:我应该知道的更好。有没有分裂的方法?我可以编辑这篇文章,并为第二部分重新提交另一个问题? –
这似乎是最明智的选择,虽然我的意图仅仅是作为未来的建议。我不认为有人会打扰你的帖子,关于这个问题:我们目前在一个非常小的,紧随其后的stackoverflow子社区。 * 1-rep *用户在这里有很多*多个问题包装的问题*,我建议这样做的唯一原因是因为您有*高级代表*。我几次更新了我的答案,以防您错过任何东西。 –