亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于嵌套樹模型檢測(cè)的研究

        2015-03-11 03:49:42徐中偉李麗梅
        關(guān)鍵詞:嵌套狀態(tài)機(jī)等價(jià)

        郭 婧, 徐中偉, 李麗梅

        (1.同濟(jì)大學(xué) 電子與信息工程學(xué)院,上海 201804;2.九江學(xué)院 圖書館,江西 九江 332005)

        隨著計(jì)算機(jī)技術(shù)的快速發(fā)展,人們對(duì)計(jì)算機(jī)軟件安全的要求不斷提高。模型檢測(cè)作為軟件安全檢測(cè)的重要工具被廣泛應(yīng)用。模型檢測(cè)[1]是軟件自動(dòng)驗(yàn)證技術(shù),它是將要驗(yàn)證的系統(tǒng)用變遷系統(tǒng)來表示,通過驗(yàn)證來觀察該系統(tǒng)是否滿足需求。符號(hào)模型檢測(cè)[2]的出現(xiàn)使模型檢測(cè)得到更大的發(fā)展,可以將狀態(tài)集合用布爾函數(shù)來表示[3]。用有序二叉決策圖(ordered binary decision diagram,OBDD)來處理布爾函數(shù),再通過優(yōu)化方法又可以處理更多的狀態(tài)數(shù),使符號(hào)模型檢測(cè)能更好地投入實(shí)際應(yīng)用中[4]。OBDD仍無法避免狀態(tài)爆炸的問題,無論變量順序如何,需要的存儲(chǔ)空間都是指數(shù)增長(zhǎng)的[5]。因此,可滿足性問題(satisifiability problem,SAT)工具[6]得到廣泛應(yīng)用。限界模型檢測(cè)能解決OBDD的一些檢測(cè)問題,并能給出檢測(cè)的反例[7-9]。

        本文主要討論在軟件系統(tǒng)中進(jìn)行模型檢測(cè),軟件程序被表示為嵌套樹和嵌套狀態(tài)機(jī)2種形式。嵌套樹表現(xiàn)了程序的所有執(zhí)行路線,嵌套狀態(tài)機(jī)則表現(xiàn)了程序語(yǔ)句之間的執(zhí)行關(guān)系[10-12]。在嵌套樹中定義μ演算(NT-μ),其基本語(yǔ)法單位為概要。嵌套樹中多個(gè)結(jié)點(diǎn)可以對(duì)應(yīng)于嵌套機(jī)中1個(gè)結(jié)點(diǎn),概要之間存在等價(jià)關(guān)系而可以轉(zhuǎn)化成一個(gè)概要類,從而在嵌套狀態(tài)機(jī)上提出以概要類為基本單位的模型檢測(cè)。該方法能節(jié)省檢測(cè)時(shí)間,提高檢測(cè)效率。

        1 基本概念

        1.1 嵌套樹、嵌套狀態(tài)機(jī)的定義

        定義1(嵌套樹) T=(S,r,→,|→)。其中,S為結(jié)點(diǎn)集合;r為根節(jié)點(diǎn);→?S×S為邊的變遷關(guān)系集合;|→?S× (S ∪{∞})為跳躍邊的集合[13-14]。對(duì)于結(jié)點(diǎn)s,s→t表示s和t之間存在直接變遷關(guān)系,s為源結(jié)點(diǎn),t為目標(biāo)結(jié)點(diǎn);s|→t表示s為調(diào)用結(jié)點(diǎn),t為返回結(jié)點(diǎn);s|→∞表示s為調(diào)用結(jié)點(diǎn)且調(diào)用沒有返回。T中有限或無限道路表示為π=s1s2…sn…,對(duì)所有i≥1,si→si+1。

        定義2(嵌套標(biāo)記樹) T=(S,r,→,|→,λ)。其中,λ:S→Σ;S為結(jié)點(diǎn)集合;Σ為嵌套樹標(biāo)記集合;λ為兩者之間的一個(gè)映射,其他符號(hào)同定義1。

        為了方便理解,可以用η表示邊與結(jié)點(diǎn)之間的映射關(guān)系,η:E→{call,return,local},E 為邊的集合,E 被分為調(diào)用邊(call)、返回邊(return)和局部邊(local),s→αt則η(s,t)=α。調(diào)用邊表示邊的源結(jié)點(diǎn)為調(diào)用結(jié)點(diǎn),返回邊表示邊的目標(biāo)結(jié)點(diǎn)是返回結(jié)點(diǎn),其余的邊則為局部邊。

        定義3(嵌套狀態(tài)機(jī)) M=〈Vloc,Vcall,Vret,vin,κ,Δloc,Δcall,Δret〉。其中,Vloc為局部狀態(tài)有限集合;Vcall為調(diào)用狀態(tài)的有限集合;Vret為返回狀態(tài)的有限集合;vin為起始狀態(tài)??偁顟B(tài)集合V=Vloc∪Vcall∪Vret∪vin。κ:V→Σ表示狀態(tài)結(jié)點(diǎn)的標(biāo)記關(guān)系。局部變遷關(guān)系 Δloc? (Vloc∪Vret)×(Vloc∪Vcall);調(diào) 用 變 遷 關(guān) 系 Δcall?Vcall×(Vloc∪Vcall);返回變遷關(guān)系Δret? (Vloc∪Vret)×Vcall×Vret。

        嵌套狀態(tài)機(jī)以嵌套樹為語(yǔ)法基礎(chǔ),變遷關(guān)系被分為3類。對(duì)于狀態(tài)結(jié)點(diǎn)s、v、t,如果(s,t)∈Δloc,則sl→oct;如果(s,t)∈Δcall,則sc→allt;如 果(s,t,v)∈Δret,則(s,t)→retv,t為最后一個(gè)未匹配的調(diào)用狀態(tài)結(jié)點(diǎn),返回變遷關(guān)系表現(xiàn)了程序的控制權(quán)由源狀態(tài)結(jié)點(diǎn)交到返回狀態(tài)結(jié)點(diǎn)的過程。

        嵌套狀態(tài)機(jī)的展開可以表示為一個(gè)非順序的標(biāo)簽樹TV(M),該樹被看作執(zhí)行樹,為一個(gè)嵌套樹,即嵌套狀態(tài)機(jī)的展開可以表示成唯一的嵌套樹。它的構(gòu)成形式如下:

        (1)對(duì)于樹的根節(jié)點(diǎn)r,在M 中λ(r)=vin。(2)如果s→αt,α∈{call,loc},那么在 M 中λ(s)→αλ(t)。

        (3)如果s→rett,并且存在狀態(tài)結(jié)點(diǎn)t′使t′|→t,那么在 M 中(λ(s),λ(t′))→retλ(t)。

        1.2 概要的定義

        定義4(概要) 對(duì)于一個(gè)非負(fù)整數(shù)k,k種顏色的概要是一個(gè)數(shù)組〈s,U1,U2,…,Uk〉。其中,s為根結(jié)點(diǎn);U1,U2,…,Uk為 ME(s)的子集,集合中顏色標(biāo)簽與集合中含有的結(jié)點(diǎn)數(shù)量相同。

        一般固定點(diǎn)的計(jì)算是基于狀態(tài)本身的計(jì)算,而對(duì)于軟件來說更注重功能的執(zhí)行。在本文中定義了一個(gè)新的語(yǔ)法結(jié)構(gòu)——概要,是針對(duì)過程內(nèi)容的計(jì)算。首先定義ME(s),即結(jié)點(diǎn)s的匹配出口結(jié)點(diǎn)集合。如果t為s的匹配出口結(jié)點(diǎn)必須滿足以下2個(gè)條件:

        (1)如果s→+t,且存在結(jié)點(diǎn)s′→+s和s′|→t。該條件表示s′為s 前驅(qū)結(jié)點(diǎn),s′、s、t間有道路相連。

        (2)不存在 結(jié) 點(diǎn)v、w,使s′→+v→+s→+w 和v|→w。該條件表示s′、s之間不存在結(jié)點(diǎn)v,該節(jié)點(diǎn)是調(diào)用結(jié)點(diǎn),且相應(yīng)的返回結(jié)點(diǎn)、其他結(jié)點(diǎn)均可到達(dá)。

        從定義來看,從結(jié)點(diǎn)s出發(fā)往樹的道路反方向“遇到”的第1個(gè)調(diào)用結(jié)點(diǎn)相對(duì)應(yīng)的返回結(jié)點(diǎn)集合,并從該集合中剔出與結(jié)點(diǎn)s無道路相連的結(jié)點(diǎn),可得s的匹配出口結(jié)點(diǎn)集合。

        1.3 嵌套樹的舉例

        一段實(shí)例程序如下:

        該段程序?qū)?yīng)的部分嵌套樹如圖1所示,因?yàn)樵摮绦蛑胁捎昧诉f歸調(diào)用以及循環(huán),所以不可能把完整的嵌套樹畫出來。圖1中,結(jié)點(diǎn){wr}表示write語(yǔ)句;結(jié)點(diǎn){en}表示調(diào)用1段新的內(nèi)容;結(jié)點(diǎn){ex}表示從現(xiàn)有內(nèi)容返回到原來的內(nèi)容;結(jié)點(diǎn){clr}表示clear語(yǔ)句;結(jié)點(diǎn){prt}表示print語(yǔ)句;結(jié)點(diǎn){end}表示return語(yǔ)句;而結(jié)點(diǎn){ass}表示變量被重新賦值。

        圖1 實(shí)例程序的部分嵌套樹

        L2、L3都是變量a被重新賦值,將其歸為一類。該結(jié)點(diǎn){end}僅僅是執(zhí)行return語(yǔ)句本身,并可以作為當(dāng)前內(nèi)容的結(jié)束,而結(jié)點(diǎn){ex}則是返回原有的調(diào)用點(diǎn)后繼續(xù)執(zhí)行后面的內(nèi)容,因此在圖1中結(jié)點(diǎn){en}與結(jié)點(diǎn){ex}之間存在調(diào)用與返回的關(guān)系,兩者用跳躍邊(虛線箭頭)相連。對(duì)于該程序每條語(yǔ)句執(zhí)行了一個(gè)功能,如果一句語(yǔ)句執(zhí)行了多個(gè)功能,必須把語(yǔ)句斷開進(jìn)行分解處理。對(duì)于調(diào)用語(yǔ)句來說,有可能能返回,有可能無返回,即此程序有可能陷于被調(diào)用的無限循環(huán)中,用∞來表示。從樹的根結(jié)點(diǎn)到樹的葉子結(jié)點(diǎn)為程序的一條可執(zhí)行路線。

        2 嵌套樹的μ-演算(NT-μ)

        2.1 NT-μ的語(yǔ)法規(guī)則

        根據(jù)樹結(jié)構(gòu)的邏輯公式[15],構(gòu)建基于嵌套樹的μ演算公式。AP為原子命題的集合,var為變量的有限集合,{M1,M2,…}為可數(shù)有序的標(biāo)記集合。對(duì)于p∈AP,x,X∈var,k≥0,NT-μ的公式有多種基本形式,用“|”符號(hào)隔開,定義如下:

        tt為所有結(jié)點(diǎn)都滿足的公式,即所有原子公式的全集,ff為tt的補(bǔ)集,即空公式集。設(shè)α為call、loc、ret則為當(dāng)前結(jié)點(diǎn)向前推α變遷關(guān)系。標(biāo)記被〈call〉和[call]形式的公式所限定,標(biāo)記記錄當(dāng)前內(nèi)容調(diào)用的點(diǎn),當(dāng)新的被調(diào)用內(nèi)容執(zhí)行完畢返回時(shí),返回標(biāo)記的點(diǎn)繼續(xù)執(zhí)行。

        公式Φ最大標(biāo)記用mk(Φ)來表示,對(duì)于不同形式的公式有以下關(guān)系:

        變量x被不動(dòng)點(diǎn)符號(hào)限定為μx.和νx.的形式,該變量稱為非自由變量。公式的自由變量集合free(Φ)有以下關(guān)系:

        公式滿足 mk(Φ)=0、free(Φ)=0分別為標(biāo)記封閉和自由變量封閉。如果兩者都成立,Φ整體被稱為封閉的。

        2.2 環(huán)境下NT-μ公式的語(yǔ)法意義

        定義5(環(huán)境變量) 環(huán)境變量ε:free(Φ)→2S,Φ在環(huán)境中表示把Φ中的自由變量集合映射到嵌套樹中的概要集合。[[Φ]]εT表示在環(huán)境ε滿足Φ的T中的概要集合。一般T從當(dāng)前內(nèi)容能得到,所以可簡(jiǎn)寫成[[Φ]]ε。

        定義6(在環(huán)境下NT-μ公式的語(yǔ)法意義)對(duì)于一個(gè)概要s=〈s,U1,U2,…,Uk〉,s∈[[Φ]]ε,當(dāng)且僅當(dāng)不同形式的公式滿足以下條件:

        (1)Φ=p∈AP,則p∈λ(s)。

        (2)Φ=?p,p∈AP,則p?λ(s)。

        (3)Φ=Φ1∨Φ2,則s∈ [[Φ1]]ε或s∈[[Φ2]]ε。

        (4)Φ=Φ1∧Φ2,則s∈ [[Φ1]]ε和s∈[[Φ2]]ε。

        (5)Φ=〈call〉Φ′{φ1,φ2,…,φk}或Φ=[call]Φ′{φ1,φ2,…,φk}則分別表示s的一個(gè)調(diào)用后續(xù)結(jié)點(diǎn)t(sc→allt)、s的所有調(diào)用后續(xù)結(jié)點(diǎn)集合中的結(jié)點(diǎn)t滿足對(duì)于以t為根結(jié)點(diǎn)的概要t〈t,V1,V2,…,Vn〉所有1≤i≤n,Vi=ME(t)∩{s′:〈s′,U1∩ME(s′),…,Uk∩ME(s′)〉∈[[φi]]ε}。

        (6)Φ=〈loc〉Φ′或Φ=[loc]Φ′則分別表示s的一個(gè)局部后續(xù)結(jié)點(diǎn)t(sl→oct)、s的所有局部后續(xù)結(jié)點(diǎn)集合中的結(jié)點(diǎn)t滿足對(duì)于以t為根結(jié)點(diǎn)的概要t〈t,V1,V2,…,Vn〉,Vi=ME(t)∩Ui且t∈[[Φ′]]ε。

        (7)Φ=〈ret〉Mi或Φ=[ret]Mi則分別表示s的一個(gè)返回后續(xù)結(jié)點(diǎn)t(s→rett)、s的所有返回后續(xù)結(jié)點(diǎn)集合中的結(jié)點(diǎn)t滿足t∈Ui。

        (8)Φ=〈loc〉Φ′或Φ=[loc]Φ′則分別表示s的一個(gè)局部前續(xù)結(jié)點(diǎn)t(tl→ocs)、s的所有局部前續(xù)結(jié)點(diǎn)集合中的結(jié)點(diǎn)t滿足以t為根結(jié)點(diǎn)的概要t〈t,V1,V2,…,Vk〉,對(duì)所有1≤i≤k,滿足Vi?Ui。

        (9)Φ=〈call〉Φ′{φ1,φ2,…,φk}或Φ=[call]Φ′{φ1,φ2,…,φk}則分別表示s的一個(gè)調(diào)用前續(xù)結(jié)點(diǎn)t(tc→alls)、s的所有調(diào)用前續(xù)結(jié)點(diǎn)集合中的結(jié)點(diǎn)t滿足對(duì)于以t為根結(jié)點(diǎn)的概要t〈t,V1,V2,…,Vn〉∈[[Φ′]]ε所有1≤i≤n,{s′:〈s′,V1∩ME(s′),…,Vn∩ME(s′)〉∈[[φi]]ε}?Ui。

        (10)Φ=〈ret〉Φ(Mi)或Φ=[ret]Φ(Mi)則分別表示s的一個(gè)返回前續(xù)結(jié)點(diǎn)t(t→rets)、s的所有返回前續(xù)結(jié)點(diǎn)集合中的結(jié)點(diǎn),其中概要s=〈s,U1,U2,…,Uk〉=〈s〉且s∈Ui,概要t〈t,V1,V2,…,Vk〉滿足[[Φ′]]ε。

        (11)Φ=μx.Φ′則對(duì)一個(gè)滿足最小不動(dòng)點(diǎn)的概要,且包含該概要的集合S 滿足[[Φ′]]ε[x:=S]?S。

        (12)Φ=νx.Φ′則對(duì)于一些 概要集合S 滿足S?[[Φ′]]ε[x:=S],且最大不動(dòng)點(diǎn)在集合S 中。

        3 基于嵌套樹的模型檢測(cè)方法

        3.1 模型檢測(cè)方法的定義

        嵌套樹和嵌套狀態(tài)機(jī)的區(qū)別在于:嵌套樹的結(jié)點(diǎn)集合有可能是無限的,是程序的所有可能執(zhí)行路線;而嵌套狀態(tài)機(jī)是語(yǔ)句執(zhí)行之間的關(guān)系,它的狀態(tài)結(jié)點(diǎn)集合是有限的。嵌套樹TV(M)(簡(jiǎn)寫為T(M))是嵌套狀態(tài)機(jī)M的展開形式。在嵌套狀態(tài)機(jī)的基礎(chǔ)上進(jìn)行模型檢測(cè)比在嵌套樹上進(jìn)行優(yōu)勢(shì)明顯。嵌套樹的基本單位是概要〈s,U1,U2,…,Uk〉,U1,U2,…,Uk為 ME(S)的子集。FC(s)表示離結(jié)點(diǎn)s最近的前驅(qū)調(diào)用結(jié)點(diǎn)(如果不存在FC(s)=⊥),它的返回結(jié)點(diǎn)集合即為 ME(s)。嵌套樹結(jié)點(diǎn)的不同標(biāo)簽對(duì)應(yīng)于嵌套狀態(tài)機(jī)的不同狀態(tài)結(jié)點(diǎn),因此可以基于嵌套狀態(tài)機(jī)來判斷概要的等價(jià)性,定義如下:

        概要S=〈s,U1,U2,…,Uk〉和概要S′=〈s′,U′1,U2′,…,Uk′〉等 價(jià),可 寫 作 S≡MS′,簡(jiǎn)寫為S≡S′,滿足以下條件:

        (1)λ(s)=λ(s′)。

        (2)λ(FC(s))=λ(FC(s′))。

        (3)對(duì)于1≤i≤k,存在一個(gè)Ωi:Ui→U′i,任意結(jié)點(diǎn)u∈Ui都有λ(u)=λ(Ωi(u)),且Ui中結(jié)點(diǎn)個(gè)數(shù)與Ui′中結(jié)點(diǎn)個(gè)數(shù)相等。

        由此可以看出,2個(gè)概要等價(jià)除了要有相同的“規(guī)模”,“三要素結(jié)點(diǎn)”(根節(jié)點(diǎn)、最近前驅(qū)調(diào)用結(jié)點(diǎn)、匹配出口結(jié)點(diǎn)子集)的標(biāo)簽也要相等。標(biāo)簽相等即概要中結(jié)點(diǎn)對(duì)應(yīng)于嵌套狀態(tài)機(jī)中同一個(gè)結(jié)點(diǎn)。判斷概要結(jié)點(diǎn)s對(duì)應(yīng)為將嵌套樹中結(jié)點(diǎn)v為λ(s)=κ(v)。概要全集S分為一個(gè)個(gè)概要集合,每個(gè)概要集合中的概要均等價(jià),即將概要全集劃分為互不相交的等價(jià)類。如果概要集合是等價(jià)類,那么記作該概要是等價(jià)封閉的。環(huán)境變量ε:free(Φ)→2S,如果自由變量集合free(Φ)中每個(gè)自由變量映射的概要集合都是等價(jià)封閉的,則該環(huán)境變量也是等價(jià)封閉的。

        定理1 在等價(jià)封閉的環(huán)境ε中,對(duì)于NT-μ公式Φ,2個(gè)等價(jià)的概要S、S′中有一個(gè)屬于,則另一個(gè)也屬于(一般簡(jiǎn)寫為[[Φ]]ε,嵌套樹T(M)默認(rèn)為當(dāng)前嵌套樹)。

        定義7(概要類的模型檢測(cè)) 設(shè)NT-μ公式Φ,一個(gè) 概 要 類 為 U = 〈v,v′,V1,V2,…,Vk〉,F(xiàn)CM(s,s′)=true。對(duì)1≤i≤k,Vi?MEM(v,v′)。概要類標(biāo)注為SC。嵌套狀態(tài)機(jī)中環(huán)境變量εSC為:free(Φ)→2SC,將公式中自由變量映射成概要類集合,表示在環(huán)境εSC下嵌套狀態(tài)機(jī)M中滿足Φ 的概要類集合(一般簡(jiǎn)寫為[[Φ]]εSC,默認(rèn)為當(dāng)前狀態(tài)機(jī))。

        (3)Φ=Φ1∨Φ2則∪。

        (4)Φ=Φ1∧Φ2則∩。

        (5)Φ=〈call〉Φ′{φ1,φ2,…,φk}或Φ=[call]Φ′{φ1,φ2,…,φk}則分別表示v的一個(gè)調(diào)用后續(xù)結(jié)點(diǎn)、s的所有調(diào)用后續(xù)結(jié)點(diǎn)集合中的結(jié)點(diǎn)t滿足對(duì)于以t為根結(jié)點(diǎn)的概要類t=〈t,v,V1′,V2′,…,Vn′〉∈ [[Φ′]]εSC,對(duì) 所 有 1≤i≤n、u∈Vi′有〈u,v′,U1,U2,…,Uk〉∈[[φi]]εSC,且對(duì)于1≤j≤k,Uj=Vj∩ME(u,v′)。

        (6)Φ=〈loc〉Φ′或Φ=[loc]Φ′則分別表示s的一個(gè)局部后續(xù)結(jié)點(diǎn)t(vl→oct)、s的所有局部后續(xù)結(jié)點(diǎn)集合中的結(jié)點(diǎn)t滿足對(duì)于以t為根結(jié)點(diǎn)的概要類t=〈t,v′,U1,U2,…,Uk〉,Ui=ME(t,v′)∩Vi且t ∈[[Φ′]]εSC。

        (7)Φ=〈ret〉Mi或Φ=[ret]Mi則分別表示v 的一個(gè)返回后續(xù)結(jié)點(diǎn)t((v,v′)r→ett)、s的所有返回后續(xù)結(jié)點(diǎn)集合中的結(jié)點(diǎn)t滿足t∈Vi。

        (8)Φ=μx.Φ′,則對(duì)最小不動(dòng)點(diǎn)的計(jì)算為對(duì)于[[Φ]]ε[X:=x],首先將?帶入x,直到該式的值SC不再改變得到最小不動(dòng)點(diǎn)的概要類集合。

        (9)Φ=νx.Φ′,則對(duì)最大不動(dòng)點(diǎn)的計(jì)算為對(duì)于[[Φ]]ε[X:=x],首先將概要類全集 SC帶入x,SC直到該式的值不再改變得到最大不動(dòng)點(diǎn)的概要類集合。

        分析前驅(qū)關(guān)系NT-μ前驅(qū)公式,向前變遷產(chǎn)生的概要類中U1,U2,…,Un的范圍會(huì)擴(kuò)大。因此,無法具體限制概要類的范圍,只能在已知概要類的情況下判斷是否符合公式,具體判斷如下:

        情形1 Φ=〈loc〉Φ′或Φ=[loc]Φ′則分別表示v的一個(gè)局部前續(xù)結(jié)點(diǎn)t(tl→ocv)、v的所有局部前續(xù)結(jié)點(diǎn)集合中的結(jié)點(diǎn)t滿足以t為根結(jié)點(diǎn)的概要類t=〈t,v′,U1,U2,…,Uk〉,對(duì)所有1≤i≤k滿足Ui?Vi。

        情形2 Φ=〈call〉Φ′{φ1,φ2,…,φk}或Φ=[call]Φ′{φ1,φ2,…,φk}則分別表示v的一個(gè)調(diào)用前續(xù)結(jié)點(diǎn)v′(v′c→allv)、v的所有調(diào)用前續(xù)結(jié)點(diǎn)集合中的結(jié)點(diǎn)v′滿足對(duì)于以v′為根結(jié)點(diǎn)概要類〈v′,s,U1,U2,…,Un〉∈[[Φ′]]εSC(FCM(v,s)=true)所有1≤i≤n,{s′:〈s′,v′,U1∩ME(s′,v′),…,Un∩ME(s′,v′)〉∈[[φi]]εSC}?Vi。

        情形3 Φ=〈ret〉Φ′(Mi)或Φ=[ret]Φ′(Mi)則分別表示v 的一個(gè)返回前續(xù)結(jié)點(diǎn)t((t,v′)→retv)、v的所有返回前續(xù)結(jié)點(diǎn)集合中的結(jié)點(diǎn)t,概要類〈t,v′,V1,V2,…,Vk〉滿足[[Φ′]]εSC且v∈Vi。

        分析概要類的環(huán)境變量εSC為:free(Φ)→2SC,映射到概要類子集。而如果ε(X)是等價(jià)封閉的,表示每個(gè)自由變量映射的概要子集都是等價(jià)封閉的,那么映射到環(huán)境變量εSC中為等價(jià)類。

        3.2 應(yīng)用實(shí)例

        在嵌套狀態(tài)機(jī)中,用狀態(tài)s1、s2、s3、s4、s5、s6、s7分別表示行L1、L2、L3、L4、L5、L6、L7。用s4′表示程序返回到原來調(diào)用執(zhí)行點(diǎn)。局部狀態(tài)集合為s1、s2、s3、s5、s6、s7,調(diào)用狀態(tài)為s4,返回狀態(tài)為s4′,起始狀態(tài)為s1。這些狀態(tài)以行為單位,對(duì)于循環(huán)、條件語(yǔ)句只作為控制語(yǔ)句來執(zhí)行,作為判斷語(yǔ)句執(zhí)行的條件,而語(yǔ)句不執(zhí)行任何具體的動(dòng)作,因此不作為狀態(tài)。狀態(tài)與嵌套樹的標(biāo)簽有以下對(duì)應(yīng)關(guān)系:κ(s1)=wr,κ(s2)=κ(s3)=mod,κ(s4)=en,κ(s5)=clr,κ(s6)=prt,κ(s7)=end,κ(s4′)=ex。嵌套狀態(tài)機(jī)Mp的變遷如下:

        嵌套狀態(tài)機(jī)Mp如圖2所示,返回關(guān)系用虛線表示。

        圖2 實(shí)例程序的嵌套狀態(tài)機(jī)

        若要檢測(cè)需求 AFcprt=μx.(prt∨([loc]x∧[call]δ{x})),其中δ=μy.(prt∨ ([ret]R1∧[loc]y∧[call]y{y}))。先找尋滿足δ的概要類,最小不動(dòng)點(diǎn)y的值帶入?。第1步得到T1={〈s6,s4,{s4′}〉,〈s7,s4,{s4′}〉},第2步將T1帶入y不再變化。計(jì)算 AFcprt=μx.(prt∨([loc]x∧[call]δ{x})),T1′={〈s6,s4,{s4′}〉}即為所求。

        4 結(jié)束語(yǔ)

        本文介紹了嵌套樹表示程序的方法,并給出了嵌套狀態(tài)機(jī)的定義。引出了嵌套樹的μ-演算(NT-μ)完整的語(yǔ)法結(jié)構(gòu),該語(yǔ)法結(jié)構(gòu)有個(gè)基本單位——概要,概要是以調(diào)用返回關(guān)系為基礎(chǔ)來表示程序的執(zhí)行過程,并考慮了可能同時(shí)執(zhí)行的其他過程。并在此基礎(chǔ)上討論了嵌套狀態(tài)機(jī)上概要類的模型檢測(cè)。嵌套狀態(tài)機(jī)的結(jié)點(diǎn)和概要類都是有限的,因此該方法比基于嵌套樹的模型檢測(cè)的效率有所提高。

        [1] Clarke E,Grumberg O,Peled D.Model checking[M].MIT Press,1999:1-20.

        [2] Biere A,Cimatti A,Clarke E,et al.Symbolic model checking without BDDs[C]//Proc of TACAS’99,Netherlands.Springer-Verlag,1999:193-207.

        [3] Brayant R E.Graph-based algorithms for Boolean function manipulation[J].IEEE Transaction on Computers,1986,35(8):677-691.

        [4] Boiling B,Wegener I.Improving the variable ordering of OBDD is NP-complete[J].IEEE Transaction Computers,1996,45(9):993-1001.

        [5] Biere A,Cimatti A,Clarke E,et al.Advances in computers[M].Academic Press,2003:42-60.

        [6] Alessandro A,Luca C.SAT-based model-checking for security protocols analysis[J].International Journal of Information Security,2008,7(1):3-32.

        [7] Latvala T,Biere A,Heljanko K,et al.Simple is better:Efficient bounded model checking for past LTL[C]//International Conference on Verification,Model checking,and Abstract Interpretation,F(xiàn)rance.Springer-Verlag,2005:380-395.

        [8] Penczek W,Wozna B,Zbrzezny A.Bounded model checking for the universal fragment of CTL[J].Fundamental Informaticae,2002,51(1):135-156.

        [9] Wozna B.ACTL* properties and bounded model checking[J].Fundamental Informaticae,2004,62(2):1-23.

        [10] Reps T,Horaitz S,Sagiv S.Precise interprocedural dataflow analysis via graph reachabiliy[C]//Proceedings of the ACM Symposium on Principles of Programming Languages.San Francisco:ACM,1995:49-61.

        [11] 韓江洪,劉征宇,劉曉平,等.工業(yè)控制安全研究綜述[J].合肥工業(yè)大學(xué)學(xué)報(bào):自然科學(xué)版,2010,33(2):161-168,173.

        [12] Alur R,Chaudhuri S,Madhusudan P.Languages of nested trees[C]//Proceedings of the Symposium on Computer-Aided erification.IEEE,2006:329-342.

        [13] Alur R,Chaudhuri S,Madhusudan P.Software model checking using languages of nested trees[J].ACM Transactions on Programming Languages and Systems,2011,33(5):1501-1545.

        [14] Walukiewicz I.Monadic second-order logic on tree-like structures[J].Theor Comput Sci,2002,275(1/2):311-346.

        [15] Jensen T,Metayer D L,Thorn T.Verification of control flow based security properties[C]//Proceedings of the IEEE Symposium on Security and Privacy.IEEE,1999:89-103.

        猜你喜歡
        嵌套狀態(tài)機(jī)等價(jià)
        例析“立幾”與“解幾”的嵌套問題
        基于嵌套Logit模型的競(jìng)爭(zhēng)性選址問題研究
        基于有限狀態(tài)機(jī)的交會(huì)對(duì)接飛行任務(wù)規(guī)劃方法
        n次自然數(shù)冪和的一個(gè)等價(jià)無窮大
        中文信息(2017年12期)2018-01-27 08:22:58
        收斂的非線性迭代數(shù)列xn+1=g(xn)的等價(jià)數(shù)列
        環(huán)Fpm+uFpm+…+uk-1Fpm上常循環(huán)碼的等價(jià)性
        一種基于區(qū)分服務(wù)的嵌套隊(duì)列調(diào)度算法
        無背景實(shí)驗(yàn)到有背景實(shí)驗(yàn)的多重嵌套在電氣專業(yè)應(yīng)用研究
        河南科技(2014年23期)2014-02-27 14:19:17
        關(guān)于環(huán)Fpm+uFpm上常循環(huán)碼的等價(jià)性
        FPGA設(shè)計(jì)中狀態(tài)機(jī)安全性研究
        国产精品_国产精品_k频道w| 中文字幕综合一区二区| 国产极品美女高潮无套| 欧美成人免费全部| 无码日韩AⅤ一区二区三区| 日本福利视频免费久久久| 日韩美女亚洲性一区二区| 国产超碰人人爽人人做人人添 | 国产婷婷丁香久久综合| 人妻无码AⅤ中文系列久久免费| 亚洲视一区二区三区四区| 最新日本人妻中文字幕| 亚洲国产日韩精品一区二区三区| 亚洲 自拍 另类 欧美 综合| 国产一区二区三区爆白浆| 丝袜美腿在线播放一区二区| 欧美老熟妇乱xxxxx| 久久棈精品久久久久久噜噜| 国产福利97精品一区二区| 高潮精品熟妇一区二区三区| 99精品久久精品一区二区| 久久中文字幕av一区二区不卡| 久久99久久99精品免观看不卡 | 91亚洲精品久久久蜜桃 | 午夜少妇高潮在线观看| 无码免费一区二区三区| 中文字幕无码人妻丝袜| 精品女同一区二区三区亚洲| 蜜桃视频一区二区在线观看| 中文亚洲成a人片在线观看| 亚洲欧洲AV综合色无码| 东风日产车是不是国产的 | 囯产精品无码一区二区三区| 伊人久久综合狼伊人久久| 婷婷伊人久久大香线蕉av| 国产成人一区二区三区在线观看| 亚洲无码夜夜操| 国产精品毛片一区二区三区| 国产超碰人人做人人爽av大片| 国产精品免费久久久久软件| 中文一区二区三区无码视频|