【系統分析與驗證學習筆記】3:基於Transition System的系統模型

TS是一種常用的描述系統行爲的模型,用結點表示狀態,邊表示轉移關係,和KS的主要區別是狀態轉移是需要動作支持的,不同的動作往往對應着不同的狀態轉移。

1 基本概念

1.1 狀態(State)

狀態是在某時刻系統所具有的特性和行爲。和KS一樣用原子命題集合表示狀態,例如{a=2,b>3}\{a=2,b>3\}

  • 對交通燈而言,燈的顏色就是狀態。
  • 對順序程序而言,變量的當前取值以及程序計數器的位置就是狀態。
  • 對同步硬件電路而言,輸入的若干比特以及寄存器的值就是狀態。

1.2 轉移(Transition)

轉移是從一個狀態到其它狀態的演變。

  • 對交通燈而言,從一個顏色變成其它顏色即是它的轉移。
  • 對順序程序而言,語句的執行就是轉移。
  • 對同步硬件電路而言,對於一組新的輸入,寄存器內的值和輸出位的改變即是轉移。單一動作用希臘字母表示。

1.3 動作(Action)

動作這個概念一般用於通信方面的建模,不同進程之間需要進行消息傳遞,這時候會用到動作。

2 數學表示

2.1 定義

上節課學習的KS定義爲四元組,而TS定義爲六元組:
TS=(S,Act,,I,AP,L)TS=(S,Act,\to,I,AP,L)
這之中:

  • SS是狀態集合
  • ActAct是動作集合
  • S×Act×S\to \subseteq S \times Act \times S狀態-動作-狀態的轉移關係集合
  • ISI \subseteq S是初始狀態集合
  • APAP是原子命題集合
  • L:S2APL:S \to 2^{AP}是標籤函數

如果狀態集SS、動作集ActAct、原子命題APAP都是有限的,那麼稱這個TSTS是有限的。

2.2 基於動作的轉移關係

從狀態ss經動作α\alpha轉移到狀態ss'記爲sαss \stackrel{\alpha}{\longrightarrow} s',注意:

  • 狀態ss的下一狀態是非確定的(nondeterministically)
  • 動作α\alphass的下一狀態是ss'這件事確定下來
  • 當初始狀態集包含超過1個狀態時,初始狀態也是非確定的
  • 動作是爲通信建模而引入的機制,其它時候可以忽略動作

2.3 標籤函數

將狀態送入標籤,返回原子命題集合,即L(s)2APL(s) \in 2^{AP},注意:

  • 狀態ss滿足命題邏輯公式Φ\Phi,當且僅當L(s)L(s)使此公式爲真。即sΦ   iff  L(s)=Φs \models \Phi \ \ \ iff \ \ L(s)=\Phi
  • 原子命題集合APAP應當選擇感興趣(即此模型需要考慮)的特徵

注意,L(s)2APL(s) \in 2^{AP}即是L(s)APL(s) \subseteq AP,課件上用的是等式左邊的表述,這裏也保留了下來,實際就按右邊理解即可。

3 可滿足性關係\models

對原子命題集合APAP的定值(真值指派,此處可以理解成對變量的賦值影響相關原子命題的真值,例如設置a=2a=2那麼命題a<0a<0的真值爲假,將所有的命題計算得真假即是對整個合取式的真值指派)是將其映射到0或1上,即μ:AP{0,1}\mu : AP \to \{0,1\},記Eval(AP)Eval(AP)APAP內命題的全部的真值指派方式組成的集合。可滿足關係\models是一個二元關係(μ,ϕ)(\mu,\phi),它指示的是在μ\mu這個定值方式下,命題邏輯公式ϕ\phi的計算結果爲真。顯然有:

  • μtrue\mu \models true
  • μa   iff  μ(a)=1\mu \models a \ \ \ iff \ \ \mu(a)=1
  • μ¬ϕ   iff  μ⊭ϕ\mu \models \neg \phi \ \ \ iff \ \ \mu \not\models \phi
  • μϕψ   iff  μϕμψ\mu \models \phi \wedge \psi \ \ \ iff \ \ \mu \models \phi \wedge \mu \models \psi

4 非確定性(nondeterministic)

4.1 應用

  • 通過interleaving(兩進程交替執行) 對獨立活動的並行執行進行建模。
  • 對兩個進程訪問同一共享資源而出現的複雜狀況建模。
  • 用於抽象目的和underspecification。
  • 對未知或不可預測環境下的接口建模。

4.2 例子:飲料機

在這裏插入圖片描述

  • 狀態集合S={pay,select,soda,beer}S = \{ pay , select, soda, beer \}
  • 初始狀態集合I={pay}I = \{ pay \}
  • 動作集合Act={insert_coin,get_soda,get_beer,τ}Act = \{ insert\_coin, get\_soda, get\_beer, \tau \}

這是一個非確定的系統,因爲在投入硬幣後,既可以選擇提供啤酒,也可以選擇提供蘇打水。

注意,當表示內部活動或者不相關活動時,使用一個特殊符號τ\tau

  • 原子命題是要考慮的性質:
    AP={paid,drink}AP=\{paid,drink\}
  • 標籤函數作用在狀態上,得到的是原子命題的子集
    L(pay)=L(select)={paid}L(soda)=L(beer)={paid,drink} L(pay)=\varnothing \\ L(select) = \{paid\} \\ L(soda)=L(beer)=\{paid,drink\}
    可以理解爲,系統中只有兩個要考慮的量paidpaiddrinkdrink並且只能取值真和假。一開始既沒有付款也沒有喝飲料,所以對paypay取標籤函數得到的是空集;在投入硬幣進入selectselect狀態後,因爲已經付款了,所以取標籤得到的是{paid}\{paid\};在出了飲料之後,即認爲同時也可以喝了,所以取標籤得到的是{paid,drink}\{paid,drink\}

5 後繼和前任

5.1 直接後繼

TS=(S,Act,,I,AP,L)TS=(S,Act,\to,I,AP,L)中的sSs \in S以及αAct\alpha \in Act,狀態ss對動作α\alpha的直接後繼定義爲:
Post(s,α)={sSsαs}Post(s,\alpha)=\{s' \in S | s \stackrel{\alpha}{\longrightarrow} s'\}
ss經過α\alpha所能到達的狀態ss'的集合,記作αsuccessors\alpha-successors

狀態ss的直接後繼(不說關於某動作)定義爲:
Post(s)=αActPost(s,α)Post(s) = \bigcup\limits_{\alpha \in Act} Post(s,\alpha)
即所有經過任一動作α\alpha能達到的狀態的集合。

5.2 直接前任

TS=(S,Act,,I,AP,L)TS=(S,Act,\to,I,AP,L)中的sSs \in S以及αAct\alpha \in Act,狀態ss對動作α\alpha的直接前任定義爲:
Pre(s,α)={sSsαs}Pre(s,\alpha)=\{s' \in S | s' \stackrel{\alpha}{\longrightarrow} s\}
即經過α\alpha能到達狀態ss的若干前置狀態ss'的集合,記作αpredeccessors\alpha-predeccessors

狀態ss的直接前任(不說關於某動作)定義爲:
Pre(s)=αActPre(s,α)Pre(s) = \bigcup\limits_{\alpha \in Act} Pre(s,\alpha)
即所有由任一動作α\alpha而來此狀態的前置狀態的集合。

5.3 用狀態集合擴展直接後繼和直接前任

提供一個狀態集合CSC \subseteq S,可以在其上定義直接後繼或直接前任,實際上就是對所有其內的狀態sCs \in C求直接後繼或直接前任:
Post(C,α)=sCPost(s,α),Post(c)=sCPost(s)Pre(C,α)=sCPre(s,α),Pre(c)=sCPre(s) Post(C,\alpha)=\bigcup\limits_{s \in C} Post(s,\alpha) ,Post(c) =\bigcup\limits_{s \in C} Post(s) \\ Pre(C,\alpha)=\bigcup\limits_{s \in C} Pre(s,\alpha) ,Pre(c) =\bigcup\limits_{s \in C} Pre(s)

5.4 TS的終止狀態

稱狀態ss是TS的終止狀態,當且僅當它沒有後繼即Post(s)=Post(s)=\varnothing

對順序程序而言,終止狀態標誌着程序運行結束。

對並行程序而言,往往不希望看到終止狀態。

6 確定性的TS

談及TS的確定性,一般可以分爲以下兩種類型。

6.1 關於actionaction的確定TS

對所有狀態ss和動作α\alpha,如有I1|I| \leq 1並且Post(s,α)1|Post(s,\alpha)| \leq 1,即任意狀態經任意動作最多跳轉到1個狀態去,此時稱這個TS是actiondeterministicaction-deterministic的。

6.2 關於APAP的確定TS

對所有狀態ssAPAP的子集A2APA \in 2^{AP}(其實就是AAPA \subseteq AP),如有I1|I| \leq 1並且Post(s){sSL(s)=A}1|Post(s) \cap \{s' \in S | L(s')=A\}| \leq 1,即從某一狀態出發的直接後繼,其Label函數的計算結果一定是不一樣的,此時稱這個TS是APdeterministicAP-deterministic的。

7 執行片段與執行

7.1 有限執行片段

TS的有限執行片段定義爲:
ϱ=s0α1s1α2...αnsn\varrho = s_0 \alpha_1 s_1 \alpha_2 ... \alpha_n s_n
其中對所有的0i<n0 \leq i < n,有siαi+1si+1s_i \stackrel{\alpha_{i+1}}{\longrightarrow} s_{i+1}成立。其中n0n \geq 0是有限執行片段的長度。

7.2 無限執行片段

TS的無限執行片段定義爲:
ρ=s0α1s1α2s2α3...\rho = s_0 \alpha_1 s_1 \alpha_2 s_2 \alpha_3 ...
其中對所有的0i0 \leq i,有siαi+1si+1s_i \stackrel{\alpha_{i+1}}{\longrightarrow} s_{i+1}成立。

7.3 最大/初始的執行片段

一個最大(maximal)執行片段是一個以終止狀態結束的有限片段,或是一個無限執行片段。

當執行片段從初始狀態開始時,稱其爲初始(initial)的片段。

7.4 執行

TS的執行是指一個初始的、最大的執行片段。

7.5 可達狀態

狀態sSs \in S是可達的,意爲存在這樣的初始、有限的執行片段:
s0α1s1α2...αn(sn=s)s_0 \stackrel{\alpha_1}{\longrightarrow} s_1 \stackrel{\alpha_2}{\longrightarrow} ... \stackrel{\alpha_n}{\longrightarrow} (s_n=s)
Reach(TS)Reach(TS)爲TS的所有可達狀態。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章