據我所知,
單調非減序列。
線性時序邏輯具有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 *用戶在這裏有很多*多個問題包裝的問題*,我建議這樣做的唯一原因是因爲您有*高級代表*。我幾次更新了我的答案,以防您錯過任何東西。 –