【系統分析與驗證學習筆記】8:無限字上ω正則LT性質的驗證

Bu¨chiωω非確定Büchi自動機\rightleftharpoons \omega 正則語言 \rightleftharpoons \omega 正則表達式

1 無限字上的自動機

1.1 Büchi自動機

Büchi自動機(Büchi Automata)可以用於描述無限字上的LT性質。老師PPT上還是用了Peterson’s banking system的例子,如下面這個【請求服務的最終都能獲得服務】的活性(liveness)性質:
always(reqLeventually @accountL)  always(reqReventually @accountR)always(req_L \Rightarrow eventually \ @account_L) \ \wedge \ always(req_R \Rightarrow eventually \ @account_R)

活性性質是【當某用戶想訪問賬戶時,最終一定能訪問到】,則其對立面就是【存在當某用戶想訪問賬戶時,永遠也訪問不到的情況】。這裏稱後者是一種unlive behavior,它能表示成若干無限長的trace的集合,對應了Büchi自動機:
在這裏插入圖片描述
則要檢查模型TSTS是否滿足活性性質PliveP_{live},也就是在驗證模型的所有trace和活性性質的補表達的ω\omega正則語言是否不交:
Traces(TS)  Lω(Live)=Traces(TS) \ \cap \ \mathcal{L}_{\omega}(\overline{Live})=\varnothing

1.2 ω\omega正則表達式

正則表達式表達的是有限字的語言,ω\omega正則表達式表達的則是無限字語言,字母表Σ\Sigma上的ω\omega正則表達式總能寫爲如下的一般形式:
G=E1.F1ω+ ... +En.Fnω    for n>0G=E_1.F_1^{\omega} + \ ... \ + E_n.F_n^{\omega} \ \ \ \ for \ n > 0

其中EiE_iFiF_i是正則表達式。

例如,(A+B).Bω(A+B)^*.B^{\omega}(B.A)ω(B^*.A)^{\omega}A.Bω+AωA^*.B^{\omega}+A^{\omega}都是ω\omega正則表達式。

1.3 ω\omega正則表達式的語義

首先,有限字上的語言LΣ\mathcal{L} \subseteq \Sigma^*可以理解爲從有限狀態機上初始狀態到終止狀態的各種執行序列所識別的轉移邊上的字母來構成的語言,則有限字上的語言的無限次自連接:
Lω={w1w2w3...  i0.wiL}\mathcal{L}^{\omega} = \{w_1w_2w_3... \ | \ \forall i \geq 0 . w_i \in \mathcal{L} \}

表達的就是無限次“從初始狀態到可接受狀態的任意執行”。具體地,1.2中給出的ω\omega正則表達式的一般形式對應的ω\omega正則語言是這樣的集合:
Lω(G)=L(E1).L(F1)ω  ...  L(En).L(Fn)ω\mathcal{L}_{\omega}(G)=\mathcal{L}(E_1).\mathcal{L}(F_1)^{\omega} \ \cup \ ... \ \cup \ \mathcal{L}(E_n).\mathcal{L}(F_n)^{\omega}

ω\omega正則表達式等價,當且僅當它們所表達的語言是等價的,即:
G1G2   iff   Lω(G1)Lω(G2)G_1 \equiv G_2 \ \ \ iff \ \ \ \mathcal{L}_{\omega}(G_1) \equiv \mathcal{L}_{\omega}(G_2)

1.4 ω\omega正則語言

一語言L\mathcal{L}是正則的,當且僅當存在一ω\omega正則表達式G能表示該語言,即L=Lω(G)\mathcal{L}=\mathcal{L}_{\omega}(G)。例如字母表Σ={A,B}\Sigma=\{ A,B \}上的ω\omega正則語言,可導出爲正則表達式:

  • A無限經常次出現:(B.A)ω(B^*.A)^{\omega}
  • A有限次出現:(A+B).Bω(A+B)^*.B^{\omega}
  • 空語言:ω\varnothing^{\omega}

ω\omega正則語言對並、交、補都是封閉的,並且是無空的(不存在ϵ\epsilon)。

2 ω\omega正則性質

2.1 簡述

稱原子命題AP上的一個LT性質P是ω\omega正則的,僅當P是在字母表2AP2^{AP}上的ω\omega正則語言。換句話說,原子命題AP上的一個LT性質P是ω\omega正則的,僅當存在一個能接受此性質P的NBA(非確定Büchi自動機)。

注意,ω\omega正則語言和NBA(非確定Büchi自動機)的表達能力相同,但是NBA和DBA的表達能力不同。

2.2 例子

  • 任何不變性PinvP_{inv}都是ω\omega正則性質,因爲總可以表示成形如Φω\Phi^{\omega}ω\omega正則語言。

  • 任何正則的安全性PsafeP_{safe}都是ω\omega正則性質,因爲其補P=BadPref(P).(2AP)ω\overline{P}=BadPref(P).(2^{AP})^{\omega}ω\omega正則的,而且ω\omega正則語言對補封閉,所以求補之前的PsafeP_{safe}也是ω\omega正則的。

  • 任何活性PliveP_{live}都是ω\omega正則性質,可以從這章最開始的例子直觀理解。

3 非確定性Büchi自動機(NBA)

3.1 簡述

從前面的分析可以知道,有限自動機(FA)只能識別有限字,不能識別無限字,而NBA可以識別無限字。但是NBA中的狀態也和FA中的狀態一樣,是有限個的,因此NBA識別出的無限字中一定有一些狀態會無限經常次出現

NBA類似於NFA,但是其可接受狀態的衡量標準是不同的,對NBA而言,那些總是無限經常次出現的狀態稱爲可接受狀態

3.2 NBA可接受的語言

A=(Q,Σ,δ,Q0,F)A=(Q,\Sigma,\delta,Q_0,F)表示NBA。其中σ:Q×Σ2Q\sigma:Q \times \Sigma \to 2^Q是從QQ中狀態經識別Σ\Sigma中字母,到達2Q2^Q中狀態集的轉移。也就是說,qApq \xrightarrow[]{A} p當且僅當pσ(q,A)p \in \sigma(q,A)

σ=A1A2...Σω\sigma=A_1A_2...\in \Sigma^{\omega}表示無限字。

無限字σ\sigma在NBA AA上的一個可接受運行是一個無限執行序列q0q1q2...q_0q_1q_2...,其中q0Q0q_0 \in Q_0是初始狀態,qiAi+1qi+1q_i \xrightarrow[]{A_{i+1}}q_{i+1}取自識別字母后的狀態轉移,qiFq_i \in F是可接受狀態僅當qiq_i無限經常次出現。

特別注意區分概念,無限字是由動作組成的,而可接受運行是由狀態組成的。

稱無限字σ\sigma能被NBA AA接受,僅當存在σ\sigmaAA上的可接受運行。

則可定義NBA AA可接受語言爲其所有可接受運行組成的集合。

兩NBA等價,當且僅當它們所表達的語言是等價的,即:
A1A2   iff   Lω(A1)Lω(A2)A_1 \equiv A_2 \ \ \ iff \ \ \ \mathcal{L}_{\omega}(A_1) \equiv \mathcal{L}_{\omega}(A_2)

3.3 NBA和NFA對比

下圖中兩個自動機,視爲NFA時,A1A_1A+A^+A2A_2A+A^+;視爲NBA時,A1A_1AωA^{\omega}A2A_2\varnothing。即在有限運行上等價,但在無限運行上不等價。
在這裏插入圖片描述
下圖中兩個自動機,視爲NFA時,A1A_1(AA)(AA)^*A2A_2A(AA)A(AA)^*;視爲NBA時,A1A_1AωA^{\omega}A2A_2AωA^{\omega}。即在有限運行上不等價,但在無限運行上等價。

在這裏插入圖片描述

3.4 ω\omega正則語言與NBA

任一被NBA接受的語言,是一個ω\omega正則語言;對任一ω\omega正則語言,可構造一個能識別它的NBA,所以兩者是等價的。

以下三個操作得到的是NBA:

  • 對一ω\omega正則語言L\mathcal{L}(或說一個NFA AA)只要ϵL\epsilon \notin \mathcal{L},那麼存在能識別Lω\mathcal{L}^{\omega}的NBA——AωA^{\omega}
  • 對兩NBA A1A_1A2A_2存在能識別Lω(A1)Lω(A2)\mathcal{L}_{\omega}(A_1) \cup \mathcal{L}_{\omega}(A_2)的NBA——A1+A2A_1 + A_2
  • 對一ω\omega正則語言L\mathcal{L}(或說一個NFA AA)以及一個NBA AA'存在能識別L.Lω(A)\mathcal{L}.\mathcal{L}_{\omega}(A')的NBA——A.(A)ωA.(A')^{\omega}

接下來3.53.63.7將對它們逐一敘述。

3.5 NFA上的ω\omega操作

NFA上的ω\omega操作用於將NFA變成“能接受無數次其自己所能接受的有限字而形成的無限字”的NBA。記A=(Q,Σ,δ,Q0,F)A=(Q,\Sigma,\delta,Q_0,F)是一個ϵL(A)\epsilon \notin \mathcal{L}(A)的NFA,也就是說初態和終態不交即Q0F=Q_0 \cap F = \varnothing

第一步,初態改造:對所有的初態q0Q0q_0 \in Q_0,如果有進入q0q_0的邊,那麼就要引入一個新狀態qnewq_{new},使得qnewq_newq0q_0具備相同的識別能力,即經過q0q_0所能識別的字母,能到達相同的狀態。

改造後得到的Q0Q_0'將作爲最終的NBA的初始狀態。

第二步,終態改造:對所有能到達NFA的終態FF中的狀態的那些轉移qAqFq \xrightarrow[]{A} q' \in F,添加新的轉移qAq0Q0q \xrightarrow[]{A} q_0 \in Q_0使其能轉移到NFA的初態Q0Q_0的每個狀態上去。

改造後,讓Q0Q_0就作爲最終的NBA的可接受狀態。在這樣的尾首相接後,只有q0Q0q_0 \in Q_0是無限經常次出現的。

得到的NBA即是A=(Q,Σ,δ,Q0,F)A'=(Q,\Sigma,\delta',Q_0',F'),如下圖是將ABA^*Bω\omega操作變成(AB)ω(A^*B)^{\omega}的兩步過程:
在這裏插入圖片描述

3.6 兩NBA的++操作

設定兩NBA A1A_1A2A_2的字母表都是Σ\Sigma(如果不是,就取並得到Σ\Sigma),則:
A1+A2=(Q1Q2,Σ,δ,Q0,1Q0,2,F1F2)A_1 + A_2 = (Q_1 \cup Q_2, \Sigma, \delta, Q_{0,1} \cup Q_{0,2}, F_1 \cup F_2)

要求Q1Q2=Q_1 \cup Q_2 = \varnothing以防止狀態命名出現衝突(如果不是,就把衝突狀態改名),則轉移關係即取自“是誰的狀態,就按誰的轉移”,即δ(q,A)=δi(q,A)\delta(q,A)=\delta_i(q,A)

從而Lω(A1+A2)=Lω(A1)  Lω(A2)\mathcal{L}_{\omega}(A_1 + A_2) = \mathcal{L}_{\omega}(A_1) \ \cup \ \mathcal{L}_{\omega}(A_2)

3.7 NFA和NBA的連接操作

對NFA A=(Q,Σ,δ,Q0,F)A=(Q,\Sigma,\delta,Q_0,F)和NBA A=(Q,Σ,δ,Q0,F)A'=(Q',\Sigma,\delta',Q_0',F')其連接爲:
A=(QQ,Σ,δ,Q0,F)A''=(Q \cup Q',\Sigma,\delta'',Q_0'',F'')

若NFA的終態都不是初態,那麼連接後NBA的初態就是NFA的初態。
否則,NFA可接受的語言可以包含空,當取空時,要從NBA的初態Q0Q_0'出發作爲新的NBA的初態。
即:
Q0={Q0            if Q0F=Q0            otherwise Q_0''= \left\{ \begin{aligned} & Q_0 \ \ \ \ \ \ \ \ \ \ \ \ if \ Q_0 \cap F = \varnothing \\ & Q_0 \ \ \ \ \ \ \ \ \ \ \ \ otherwise \end{aligned} \right.

可接受狀態還是NBA的可接受狀態。
即:
F=FF'' = F

如果是NFA中原有的轉移關係,且轉移後不會到達NFA的終止狀態,則轉移後的狀態還是那些。
如果是NFA中原有的轉移關係,但轉移後會到達NFA的終止狀態,則轉移後的狀態還要包括NBA的初始狀態,因爲NBA連接在NFA後面。
如果是NBA中原有的轉移關係,因爲接下來永遠都在這個NBA中了,故轉移後的狀態還是那些。
即:
δ(q,A)={δ(q,A)            if qQ and δ(q,A)F=δ(q,A)Q0   if qQ and δ(q,A)Fδ(q,A)            if qQ \delta''(q,A)= \left\{ \begin{aligned} & \delta(q,A) \ \ \ \ \ \ \ \ \ \ \ \ if \ q \in Q \ and \ \delta(q,A) \cap F = \varnothing \\ & \delta(q,A) \cup Q_0' \ \ \ if \ q \in Q \ and \ \delta(q,A) \cap F \neq \varnothing \\ & \delta(q,A) \ \ \ \ \ \ \ \ \ \ \ \ if \ q \in Q' \end{aligned} \right.

例如,下圖是一個NFA和NBA的連接,圖中紅線表示了要把NFA的終態和NBA初態無條件連起來,但是由於轉移上必須有字母,所以要將NFA終態的所有前驅添加轉移到NBA的所有初態的轉移,其字母和轉移到NFA終態時所用的字母相同。
在這裏插入圖片描述

3.8 檢查NBA所描述的語言是否爲空

在這之前,先定義擴展的轉移關係。之前使用的轉移關係δ(q,A)\delta(q,A)都是狀態qq經一個字母AA所到達的狀態集合,現在擴展到經過一個有限字所到達的狀態集合。這很好理解,只給出遞歸定義:
δ(q,ϵ)={q}δ(q,A)=δ(q,A)δ(q,A1A2...An)=pδ(q,A1)δ(p,A2...An) \begin{aligned} \delta^*(q,\epsilon) & = \{q\} \\ \delta^*(q,A) & = \delta(q,A) \\ \delta^*(q,A_1A_2...A_n) & = \bigcup_{p\in \delta(q,A_1)} \delta^*(p,A_2...A_n) \end{aligned}

一個NBA可識別的語言L(A)\mathcal{L}(A)不爲空,當且僅當至少存在一個可接受狀態,其位置處在從初始狀態出發所能到達的環上,即:
q0Q0.qF.wΣ.vΣ+. qδ(q0,w)qδ(q,v) \exists q_0 \in Q_0. \exists q \in F. \exists w \in \Sigma^*. \exists v \in \Sigma^+. \ q \in \delta^*(q_0,w) \wedge q \in \delta^*(q,v)

畫成圖直觀表示就是:
在這裏插入圖片描述

4 泛化非確定性Büchi自動機(GNBA)

4.1 簡述

各種各樣的NBA表達能力是一樣的,使用GNBA是因爲它和temporal logic的關聯性更好,GNBA和前面學的NBA很像,僅在可接受狀態上有區別。NBA的可接受狀態是一個狀態集合FF,對無限的狀態序列,若要它是一個可接受的運行,只要求序列中存在qFq\in F無限經常次出現即可。

GNBA的可接受狀態是一系列狀態集合的集合,即F={F1,...,Fk}2QF=\{ F_1,...,F_k \} \subseteq 2^Q限定k0k \geq 0,要求每個可接受的運行中,都總是存在qFiq \in F_i(對所有的ii)無限經常次出現。

顯然,當k=0時所有運行都是可接受的;當k=1時GNBA就退化爲NBA了。

這些可接受運行q0,q1,q2,...q_0,q_1,q_2,...上識別的字σ=A0,A1,...\sigma=A_0,A_1,...,就構成了GNBA的語言。

4.2 GNBA的例子

如下圖所示的自動機中,視其爲GNBA,且可接受狀態集F={{q1},{q2}}F=\{ \{q_1\}, \{q_2\} \},則可以表達每個進程都能無限經常次訪問其臨界區。
在這裏插入圖片描述

4.3 從GNBA到NBA的轉換

對任意GNBA GG總能找到等效的NBA AA,使得:
Lω(G)=Lω(A)   and   A=O(GF)\mathcal{L}_{\omega}(G)=\mathcal{L}_{\omega}(A) \ \ \ and \ \ \ |A|=O(|G| \cdot |F|)

其中FF表示GG中的可接受狀態集的集合,即F={F1,...,Fk}F=\{ F_1,...,F_k \},所以F=k|F|=k

注意這裏不能理解成F=1ikFi|F|=|\bigcup_{1\leq i \leq k}F_i|

可以直觀看到,得到的NBA的狀態數目是GNBA的k倍,這正是後面爲每個狀態都用1ik1 \leq i \leq k標註的結果。

轉換到NBA的過程是一個搜索推進的過程,設G=(Q,Σ,δ,Q0,F)G=(Q,\Sigma,\delta,Q_0,F)是GNBA,A=(Q,Σ,δ,Q0,F)A=(Q',\Sigma',\delta',Q_0',F')是轉換出的NBA,則:

  • Q=Q×{1,...,k}Q'=Q \times \{ 1,...,k \},即在記錄ii標記下要找FiF_i1ik1 \leq i \leq k)裏的終止狀態以跳轉到下個終止狀態集Fi+1F_{i+1}
  • Q0=Q0×{1}={q0,1q0Q0}Q_0' = Q_0 \times \{1\}=\{\langle q_0,1 \rangle | q_0 \in Q_0 \},即生成的NBA的初始狀態是GNBA的初始狀態被標記上1的那些,表示從搜索FF中的第一項F1F_1開始。
  • F=F1×{1}={qF,1qFF1}F'=F_1 \times \{1\}=\{\langle q_F,1 \rangle | q_F \in F_1\},即搜索回到i=1i=1且在F1F_1中時可接受。下一步又會跳轉到i=2i=2去搜索F2F_2繼續下一輪推進。

直觀表達這個搜索推進的過程,如下:
在這裏插入圖片描述

4.4 轉換的例子

例如4.2中的GNBA,轉換爲NBA如下:
在這裏插入圖片描述
核心就是隻要遇到狀態qFjq \in F_j且當前第二標記i=ji=j時,接下來的轉移就要讓第二標記變到i=(i+1)%ki=(i+1)\%k上去。

5 驗證ω\omega正則性質

5.1 方法論

關於ω\omega正則性質的介紹見2,不再重複。

類似於筆記7中驗證正則性質的方法,只是這裏是在無限字上使用GNBA作爲中介工具。要驗證TSPTS \models P,即是驗證Traces(TS)PTraces(TS) \subseteq P,所以應和“性質PP在全體無限字上的補集”不交,即:
Traces(TS)(2AP)ωP=Traces(TS) \cap (2^{AP})^{\omega} \setminus P = \varnothing

其中(2AP)ωP(2^{AP})^{\omega} \setminus P簡記爲P\overline{P},記Lω(A)\mathcal{L}_{\omega}(A)P\overline{P}對應的ω\omega正則語言,其中AA是能識別P\overline{P}的一個NBA,從而:
Traces(TS)Lω(A)=Traces(TS) \cap \mathcal{L}_{\omega}(A) = \varnothing

這就是在考察同步積:
TSA"eventually forever"¬FTS \otimes A \models "eventually \ forever" \neg F

其中【"eventually forever"¬F"eventually \ forever" \neg F】表示【最終(從某狀態開始,其後的所有狀態)會持續滿足¬F\neg F】,這是和【F中有元素無限經常次出現】對立的,也就是在判定【同步積得到的NBA上沒有可接受的運行】。

5.2 持續性質(Persistence property)

5.1中提到的"eventually forever"這種陳述,表達的就是一種持續性質,即無限字中存在某個讓性質啓動的位置ii,從那之後的所有字母都滿足某一命題Φ\Phi

持續性質在這門課裏最早出現在學習公平性時,見筆記62.10節給出的弱公平性的形式化描述。

Ppers={A0A1A2...(2AP)ω  i0. ji. AjΦ}P_{pers}=\{A_0A_1A_2... \in (2^{AP})^{\omega} \ | \ \exists i \geq 0. \ \forall j \geq i. \ A_j \models \Phi \}

其中Φ\Phi稱爲該持續性質PpersP_{pers}的持續性條件。

5.3 構造同步積

構造同步積的過程和之前學的一樣,見筆記72.4節,只要將其中的NFA改成這裏的NBA就可以了。

5.4 驗證ω\omega正則性質

TSTS是原子命題集APAP上的TS,PPAPAP上的ω\omega正則性質,AA是一個non-blocking的NBA滿足Lω(A)=P\mathcal{L}_{\omega}(A)=\overline{P}

這裏non-blocking指的是對NBA的每個狀態q,對每個輸入符號A都有向後的轉移,即δ(q,A)\delta(q,A)對所有的qQq\in QAΣ=2APA \in \Sigma=2^{AP}都不爲\varnothing

則以下幾個命題是等價的:

  • TSPTS \models P
  • Traces(TS)Lω(A)=Traces(TS) \cap \mathcal{L}_{\omega}(A)=\varnothing
  • TSAPpers(A)TS \otimes A \models P_{pers}(A)

其中Ppers(A)P_{pers}(A)即是5.1中的"eventually forever"¬F"eventually \ forever" \neg F,如此驗證ω\omega正則性質就變成了對持續性(persistence)的驗證

5.5 對persistence的驗證

驗證TSPpersTS \models P_{pers},即驗證在某個位置後Φ\Phi條件一直滿足,其對立面TSPpersTS \nvDash P_{pers}只要驗證是否存在一個可達狀態sΦs \nvDash \Phi無限經常次出現,即去看看這些不滿足Φ\Phi的狀態是否在環路中就可以了。因爲若TS能無限經常次訪問不滿足Φ\Phi的狀態,那麼就有TSPpersTS \nvDash P_{pers}

因此,TSPpersTS \nvDash P_{pers}當且僅當sReach(TS). sΦ\exists s \in Reach(TS) . \ s\nvDash \PhissG(TS)G(TS)中的環上。


特別注意,上面只是對TS滿足persistence的分析。具體到本章所學,實際是在同步積上,ω\omega正則性質的補被寫成一個NBA AA,同步積TSATS \otimes A要滿足的persistence其實是:
eventually forever ¬Feventually \ forever \ \neg F

所以只要判斷的是同步積中狀態Label裏帶有可接受狀態FF中元素的狀態是不是都不在從初態開始的可達環路中即可。


例如,要驗證的性質P是【greengreen無限經常次出現】,則取補後形成的NBA中只有q1q_1是可達狀態(下圖右上)。

下面這個例子中性質滿足,因爲同步積得到的TS中兩個帶q1q_1標記的狀態不在初態可達環裏:
在這裏插入圖片描述
但在下面這個例子中性質不滿足,因爲s2,q1s0,q1\langle s_2, q_1 \rangle \rightleftharpoons \langle s_0, q_1 \rangle這個包含了可接受狀態q1q_1的環是從初態可達的:

在這裏插入圖片描述

5.6 環路檢測

可以求圖的強連通子圖(SCC),或者用書上給出的Nested DFS的方式,後者在驗證不通過時更容易求反例。

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