專利名稱:用于校驗受研究系統(tǒng)的完整模型的屬性的方法和系統(tǒng)的制作方法
技術領域:
本發(fā)明一般涉及設計自動化和校驗,并具體涉及基于符號模型檢查的設計校驗。
背景技術:
模型檢查是一種形式校驗的方法,其作為用于設計集成電路等復雜系統(tǒng)的工具而得到普及。模型檢查通常是由SMV等符號模型檢查程序自動實現(xiàn)的。模型檢查方法由Clarke等人在《模型檢查(Model Checking)》(MIT出版社,1999年)中做了一般性的說明,其被援引而包含于此。
為進行設備設計的模型檢查,使用者閱讀設備的定義和功能規(guī)范,并接著基于此信息,寫出設計應當履行的屬性集合{}(也就是規(guī)范)。該屬性以適當?shù)囊?guī)范語言寫成,用于表達設備的輸入與輸出之間的時間邏輯關系。這種語言普遍基于計算樹邏輯(CTL)和/或線性時序邏輯(LTL)。接著測試通常以VHDL或Verilog等硬件說明語言寫成的設計的硬件模型M(也就是實現(xiàn)),以確信模型滿足了集合中的所有屬性,即M|=,在所有相關輸入序列情況下。
符號CTL模型檢查涉及計算模型的傳遞關系(TR),并接著應用該模型檢查算法以校驗給定公式。模型檢查最有用的特征之一是當發(fā)現(xiàn)M上的屬性為假時,構建導向設計的問題狀態(tài)的狀態(tài)和傳遞(就是路徑或軌跡)的序列的能力。此路徑叫做反例。它可被工程師用于理解和彌補導致模型失敗的缺陷。不過,在許多情形下,整個TR卻大得無法計算,或模型狀態(tài)空間在模型檢查者找到反例或要么校驗所慮及的公式之前就“撐爆(explode)”了。
已經(jīng)提出了對此問題的一些解決方案,其中之一是局限化縮減,其例如由Kurshan記載于《協(xié)作處理的計算機輔助校驗(Computer-Aided VerificationofCoordinating Processes)》(普林斯頓大學出版社,1994年)的第170~172頁,其被援引而包含于此。局限化縮減始于受驗模型的抽象,即始于其中某些變量通過將它們從模型中消去或允許它們賦予任意值而被抽象的模型。作為此抽象的結果,抽象模型的傳遞關系更為精減并更易計算,但抽象模型的行為通常包括完整模型(也稱為具體模型)中不存在的路徑。若發(fā)現(xiàn)抽象模型上的規(guī)范屬性為真(即不存在反例),則完整模型上亦必定為真,而毋需進一步的校驗屬性了。
然而,當在抽象模型上找到反例時,卻不能肯定完整模型中也存在反例。為確定該抽象反例是否有效,模型檢查者試圖找到對應于抽象反例的完整模型上的實際反例路徑。此處理就是抽象路徑的復原。當抽象路徑被成功復原時,反例也在完整模型上表示為有效,并被通知給使用者以證明屬性的失敗。當抽象反例不能在完整模型上被復原時,則被認為是假的并被廢棄。抽象模型接著可被完善,通常是通過將先前被抽象掉的變量再加回來,而模型檢查者繼續(xù)在完善后的抽象模型上尋找反例。復原和完善處理繼續(xù)遞推,直到該屬性證明為真或找到有效的反例。
復原抽象反例并后續(xù)地在抽象縮減失敗后完善抽象模型的方式對于使局限化縮減技術高效運行至關重要。一些作者已試圖解決抽象復原和完善的問題。
例如,Clarke等人在《反例導向的抽象完善(Counterexample-guidedAbstraction Refinement)》中記載了一種使用從錯誤反例得到的信息來自動完善抽象模型的方法,見《第12屆計算機輔助校驗國際會議會志(Proceedings ofthe Twelfth International Conference on Computer-Aided Verification)》(CAV 2000)第154~169頁,其被援引而包含于此。根據(jù)此方法,如作者所述,當找到抽象模型中有反例時,所有相應的具體路徑(即實際路徑)皆在完整模型中計算。當未找到具體路徑時,該抽象反例被認為是假的。模型檢查者接著找到了與整個模型中實際軌跡不對應的抽象反例的最短前導。前導中的上一抽象狀態(tài)以這種方式被分割成不甚抽象的狀態(tài)即從抽象模型中消去假的反例。(注意抽象模型中的每個抽象狀態(tài)皆對應于具體模型中的多個狀態(tài)。)于是,得到了更完善的抽象,其接著被用于尋找和復原新的反例。
盡管Clarke等人表明了其反例導向的完善方法適用于某些情形,但是與復雜系統(tǒng)中的長抽象路徑對應的所有具體路徑的復原本身仍可能導致狀態(tài)撐爆。進而,在各次遞推中確定最佳完善是出了名的難題(NP-hard problem),而Clarke等人使用的近似完善技術不可否認欠妥。因此需要有符號局限化縮減的更高效的自動方法。
發(fā)明內(nèi)容
本發(fā)明的優(yōu)選實施例在局限化縮減處理中將一種新穎的分層方法用于路徑復原。當找到抽象路徑時,本發(fā)明的模型檢查者將一“層”變量添加至抽象模型,從而構建了中間抽象的新抽象模型(不如原抽象模型那麼抽象,但仍比完整的具體模型的變量要少)。模型檢查者接著在中間、不甚抽象的模型上試圖復原抽象路徑。若復原成功,則再加一層,并且在一序列的中間模型上遞推地重復復原,直到找到了完整模型中的對應具體路徑。另一方面,若在任何中間模型上復原皆失敗,則可斷言原抽象模型尚需完善,而不繼續(xù)完成路徑復原了。無論何種情形,分層復原處理皆顯著縮減了復原長路徑所涉及的計算,并于是縮減了狀態(tài)空間撐爆的可能性。
在本發(fā)明的一些優(yōu)選實施例中,在添加一層變量以生成中間抽象模型后,模型檢查者啟發(fā)式地僅計算與先前復原的抽象路徑對應的可能路徑的一個子集。若模型檢查者不能在所限子集內(nèi)復原路徑,則退回上一(更高)級的抽象,并接著選擇一個新子集。如此,模型檢查者仍能在抽象狀態(tài)空間中搜索所有可能路徑,同時仍更進一步縮減狀態(tài)空間撐爆的可能性。
在各層中選擇添加哪些變量是啟發(fā)式的。在本發(fā)明的一些優(yōu)選實施例中,初始抽象模型包括公式變量,即出現(xiàn)在待校驗的規(guī)范屬性中的狀態(tài)變量。在公式變量輔集中的變量的初始層或“圓錐”可添加至抽象模型。(任何給定變量的輔集根據(jù)系統(tǒng)傳遞關系由直接影響給定變量值的變量組成。)在下一層中,又進而添加了在已有模型中變量輔集中的變量,以此類推通過中間模型直到完成復原。寬度優(yōu)先和深度優(yōu)先兩種方法皆可用于選擇新變量以加入各層。
當路徑復原失敗而必須完善抽象模型時,添加至抽象模型的變量也是啟發(fā)式選擇的。加入完善中的變量最好是造成先前路徑復原失敗的那些變量,因為沒有找到與被復原的抽象路徑一致的那些變量的值。若接著在完善后的抽象模型上找到了抽象路徑,則加入到完善階段的變量輔集中的變量最好是在路徑復原階段的早期層引入。
因此,根據(jù)本發(fā)明的優(yōu)選實施例,提供了一種方法,用于校驗受研究系統(tǒng)的完整模型的屬性,該模型基于狀態(tài)變量的集合和狀態(tài)間的傳遞關系而定義系統(tǒng)的狀態(tài),該方法包括從模型中至少抽象出一些變量,以產(chǎn)生系統(tǒng)的抽象模型;
以抽象模型的狀態(tài)空間中的初始狀態(tài)開始,根據(jù)至屬性所定義的目標狀態(tài)的傳遞關系、找到通過抽象模型狀態(tài)空間的抽象路徑;將抽象后的變量的一個子集恢復成抽象模型,從而產(chǎn)生系統(tǒng)的中間模型;和基于中間模型而校驗完整模型上的屬性。
校驗屬性最好包括當抽象模型滿足屬性時確定完整模型滿足屬性。
校驗屬性最好包括在中間模型上進行抽象路徑的部分復原,并基于部分復原而校驗屬性。通常,校驗屬性進一步包括基于中間路徑而復原通過完整模型狀態(tài)空間的完整路徑,其中復原完整路徑包括重復恢復抽象后的變量的一個子集和進行部分復原的步驟,以生成一序列的中間模型,其各中間路徑分別在中間模型上復原,直到復原了完整路徑。
在一個優(yōu)選實施例中,進行部分復原包括識別在復原中間模型上的抽象路徑時的失敗點,并響應失敗點而修正抽象路徑,并基于修正后的抽象路徑而進行部分復原。
在另一優(yōu)選實施例中,進行部分復原包括識別在復原中間模型上的抽象路徑時的失敗點,并響應失敗點而完善抽象路徑,并重復找到抽象路徑、恢復抽象后的變量的子集和基于完善后的抽象模型而進行部分復原的步驟。識別失敗點最好包括識別一個或更多變量,其在中間模型中具有與中間模型上的抽象路徑的復原不一致的值,和完善抽象模型包括將識別出的變量添加至抽象模型。添加識別出的變量最好包括提供第一二進制決策圖(BDD)以代表中間模型中有效狀態(tài)的集合,并提供第二BDD以代表抽象模型中的假的狀態(tài),并找到第一與第二BDD之間的差別。
進而,進行部分復原最好包括復原中間模型上的中間路徑,從而抽象路徑是在抽象模型變量上的中間路徑的射影。
恢復抽象后的變量的子集最好包括添加一層抽象后的變量,從而使添加層中的變量在抽象模型中變量的輔集中。在一個優(yōu)選實施例中,校驗屬性包括進行中間模型上的抽象路徑的部分復原,同時調(diào)整添加層中變量的一個或更多值,從而使抽象路徑的部分復原與中間模型一致。調(diào)整添加層中變量的一個或更多值至少包括以下兩者之一調(diào)整與中間模型不一致的抽象路徑上的第一抽象狀態(tài)中的變量的值,和調(diào)整抽象路徑上第一抽象狀態(tài)之前的第二抽象狀態(tài)中的變量的值。
通常,添加一層抽象后的變量包括添加該層到第一中間模型中,而校驗屬性包括進行第一中間模型上的抽象路徑的部分復原,而該方法進一步包括重復恢復抽象后的變量的子集和進行部分復原的步驟,以生成一序列的中間模型,其始于第一中間模型,從而對于第一中間模型之后的所有中間模型,恢復抽象變量的子集包括添加又一層抽象后的變量,其中添加層中的變量在序列中的前一個中間模型的變量輔集中。
重復進行部分復原的步驟最好包括復原所有中間模型上的各中間路徑,從而對于所有中間模型,各中間路徑是序列中更后的中間模型上復原的中間路徑的射影。進而,添加又一層抽象后的變量最好包括選擇在中間模型的前一個中的變量輔集中的變量的一個子集。
在一個優(yōu)選實施例中,進行部分復原包括找到中間模型狀態(tài)的第一集合,其等價于抽象路徑上的第一抽象狀態(tài);從第一集合中取用候選的部分集合;找到中間模型狀態(tài)的第二集合,其可從部分集合由一個中間模型傳遞達到,并等價于抽象路徑上的第二抽象狀態(tài);遞推地重復以下步驟,即取用部分集合和找到可從部分集合由一個中間模型傳遞達到的中間模型狀態(tài)的又一集合,從而根據(jù)抽象狀態(tài)出現(xiàn)在抽象路徑上的次序找到后繼抽象狀態(tài);在找到又一集合的步驟遞推中確定沒有可從在上次遞推中算出的中間候選集合由一個傳遞而達到的等價的中間模型狀態(tài)時,退回上次遞推并選擇中間模型狀態(tài)的不同部分集合;和當沒有可由一個傳遞而達到的等價的中間模型狀態(tài)時,繼續(xù)重復取用部分集合和找到又一集合以及退回上次遞推的步驟,直到抽象路徑被完全復原或直到原路退回中間模型狀態(tài)的第一集合并斷言不能復原該抽象路徑,籍以斷言該抽象模型尚需完善。
在一個優(yōu)選實施例中,找到抽象路徑包括找到閉合的抽象路徑,而其中校驗屬性包括復原中間模型上的中間路徑,從而使中間路徑包括一個閉環(huán),而抽象路徑是將中間路徑射影至抽象模型。通常,閉合的抽象路徑具有給定的抽象路徑長度,而復原中間路徑包括搜索受以下條件限制的中間路徑,即中間路徑所具有的中間路徑長度是抽象路徑長度的倍數(shù)。
根據(jù)本發(fā)明的優(yōu)選實施例,還提供了一種方法,用于檢查受研究系統(tǒng)的完整模型,該模型基于狀態(tài)變量的集合和狀態(tài)間的傳遞關系而在狀態(tài)空間中定義系統(tǒng)的狀態(tài),該方法包括從模型中至少抽象出一些變量,以產(chǎn)生系統(tǒng)的抽象模型;以抽象模型的狀態(tài)空間中的初始狀態(tài)開始,根據(jù)至目標狀態(tài)的傳遞關系、找到通過抽象模型狀態(tài)空間的抽象路徑;將抽象后的變量的一個子集恢復成抽象模型,從而產(chǎn)生系統(tǒng)的中間模型;復原中間模型狀態(tài)空間上的抽象路徑,從而生成通過狀態(tài)空間的中間路徑;和復原完整模型狀態(tài)空間上的中間路徑,從而生成完整路徑。
復原中間路徑最好包括重復地恢復抽象后的變量的各個子集,以生成一序列的中間模型,并復原序列中的中間模型上的各中間路徑,直到生成了完整路徑。
根據(jù)本發(fā)明的優(yōu)選實施例,還附帶提供了一種設備,用于校驗受研究系統(tǒng)的完整模型的屬性,該模型基于狀態(tài)變量的集合和狀態(tài)間的傳遞關系而定義系統(tǒng)的狀態(tài),該設備包括校驗處理器,其被設成從模型中至少抽象出一些變量,以產(chǎn)生系統(tǒng)的抽象模型,和以抽象模型的狀態(tài)空間中的初始狀態(tài)開始,根據(jù)至屬性所定義的目標狀態(tài)的傳遞關系、找到通過抽象模型狀態(tài)空間的抽象路徑,該處理器被進一步設成將抽象后的變量的一個子集恢復成抽象模型,從而產(chǎn)生系統(tǒng)的中間模型,和基于中間模型而校驗完整模型上的屬性。
根據(jù)本發(fā)明的優(yōu)選實施例,進而提供了一種設備,用于檢查受研究系統(tǒng)的完整模型,該模型基于狀態(tài)變量的集合和狀態(tài)間的傳遞關系而定義狀態(tài)空間中系統(tǒng)的狀態(tài),該設備包括模型處理器,其被設成從模型中至少抽象出一些變量,以產(chǎn)生系統(tǒng)的抽象模型,和以抽象模型的狀態(tài)空間中的初始狀態(tài)開始,根據(jù)至目標狀態(tài)的傳遞關系、找到通過抽象模型狀態(tài)空間的抽象路徑,該處理器被進一步設成將抽象后的變量的一個子集恢復成抽象模型,從而產(chǎn)生系統(tǒng)的中間模型,復原中間模型狀態(tài)空間上的抽象路徑,從而生成通過狀態(tài)空間的中間路徑,和復原完整模型狀態(tài)空間上的中間路徑,從而生成完整路徑。
根據(jù)本發(fā)明的優(yōu)選實施例,又進而提供了一種計算機軟件產(chǎn)品,用于校驗受研究系統(tǒng)的完整模型的屬性,該模型基于狀態(tài)變量的集合和狀態(tài)間的傳遞關系而定義系統(tǒng)的狀態(tài),該產(chǎn)品包括計算機可讀介質(zhì),其上存儲了計算機指令,該指令當由計算機讀取時使得計算機從模型中至少抽象出一些變量,以產(chǎn)生系統(tǒng)的抽象模型,和以抽象模型的狀態(tài)空間中的初始狀態(tài)開始,根據(jù)至屬性所定義的目標狀態(tài)的傳遞關系、找到通過抽象模型狀態(tài)空間的抽象路徑,該指令進一步使得計算機將抽象后的變量的一個子集恢復成抽象模型,從而產(chǎn)生系統(tǒng)的中間模型,和基于中間模型而校驗完整模型上的屬性。
根據(jù)本發(fā)明的優(yōu)選實施例,更進而提供了一種計算機軟件產(chǎn)品,用于檢查受研究系統(tǒng)的完整模型,該模型基于狀態(tài)變量的集合和狀態(tài)間的傳遞關系而定義系統(tǒng)的狀態(tài),該產(chǎn)品包括計算機可讀介質(zhì),其上存儲了計算機指令,該指令當由計算機讀取時使得計算機從模型中至少抽象出一些變量,以產(chǎn)生系統(tǒng)的抽象模型,和以抽象模型的狀態(tài)空間中的初始狀態(tài)開始,根據(jù)至目標狀態(tài)的傳遞關系、找到通過抽象模型狀態(tài)空間的抽象路徑,該指令進一步使得計算機將抽象后的變量的一個子集恢復成抽象模型,從而產(chǎn)生系統(tǒng)的中間模型,復原中間模型狀態(tài)空間上的抽象路徑,從而生成通過狀態(tài)空間的中間路徑,和復原完整模型狀態(tài)空間上的中間路徑,從而生成完整路徑。
通過結合附圖對優(yōu)選實施例進行以下詳細的描述,可更加透徹地理解本發(fā)明,在附圖中
圖1是表示根據(jù)本發(fā)明的優(yōu)選實施例的用于設計校驗的設備的原理性說明圖;圖2是說明了根據(jù)本發(fā)明的優(yōu)選實施例的抽象軌跡的復原的原理性系統(tǒng)狀態(tài)空間的表示圖;圖3是從原理上說明根據(jù)本發(fā)明的優(yōu)選實施例的用于用局限化縮減來檢查模型的方法的流程圖;圖4是從原理上說明根據(jù)本發(fā)明的優(yōu)選實施例的用于復原反例路徑的方法的流程圖;圖5是從原理上說明根據(jù)本發(fā)明的優(yōu)選實施例的帶有抽象的各種級別的模型的集合的方框圖;和
圖6是從原理上說明根據(jù)本發(fā)明的優(yōu)選實施例的用于完善抽象模型的方法的流程圖。
具體實施例方式
系統(tǒng)和方法縱覽圖1是表示根據(jù)本發(fā)明的優(yōu)選實施例的用于符號模型檢查的設備20的原理性說明圖。設備20通常包括模型處理器22,通常是運行合適的模型檢查軟件的通用計算機工作站。該系統(tǒng)由使用者24操作,使用者通常是設計或校驗工程師。模型檢查軟件可以電子形式下載至處理器22,例如經(jīng)過網(wǎng)絡,或可提供于有形介質(zhì),如CD-ROM或非易失性存儲器。處理器22接收目標系統(tǒng)或研發(fā)中的設備30的硬件實現(xiàn)模型26,其可指整個系統(tǒng)或設備或子單元,如電路或功能塊。使用者24備好路徑規(guī)范28,包括用于模型26的模型檢查中的屬性,并選擇模型的初始狀態(tài)。系統(tǒng)20使用以下詳細說明的方法來分析模型,試圖找到初始狀態(tài)與目標狀態(tài)之間的軌跡,該目標狀態(tài)由處理器22基于路徑規(guī)范來指示。
圖2是模型26的狀態(tài)空間31的原理性表示圖,提供了本發(fā)明的方法的概念圖。下面參考圖3詳細說明該方法。在狀態(tài)空間31內(nèi),抽象模型M′以縮減的變量集合來定義。搜索反例始于初始狀態(tài)的集合32,記為S0,其通常由使用者24指定。在傳遞關系的每次遞推中,處理器22將圖像操作應用于縮減的集合中的變量,以將S0映射至狀態(tài)S1的集合34。后續(xù)遞推將各集合Si映射至后繼集合Si+1。此計算的目的是確定是否有通過抽象模型的狀態(tài)空間的反例路徑∏′到達目標狀態(tài)集合33,其中規(guī)范公式之一為假。在圖2的示例中,路徑∏′在抽象模型中狀態(tài)Si的各集合中通過狀態(tài)35,直到該路徑到達與集合33相交的目標狀態(tài)36。抽象模型的狀態(tài)35被概念性地表示成圖2中的延伸區(qū)域,以指明各狀態(tài)實際上對應于完整模型中的一個范圍的狀態(tài)。相似地,路徑∏′對應于完整模型中的數(shù)條可能路徑。
處理器22最好使用飛線方法去找到狀態(tài)空間31中的反例軌跡35。這些方法記載于例如《RCTL公式的飛線模型檢查(On-the-fly Model Checking ofRCTL Formulas)》,見《第10屆計算機輔助校驗國際會議會志(Proceedings ofthe Tenth Intemational Conference on Computer Aided Verification)》CAV1998),其被援引而包含于此。隨著各新集合34被算出,與路徑規(guī)范對照檢查以確定是否有到達集合33中狀態(tài)的通過狀態(tài)空間31的可到達的反例路徑。計算繼續(xù)下去直到該路徑到達目標狀態(tài),或直到確定不存在這一路徑?;蛘?,抽象模型的整個傳遞關系可在搜索反例路徑之前先計算。也可使用其它用于計算傳遞關系和找到反例的方法。
在找到了路徑∏′后,處理器22試圖復原對應于∏′的通過完整模型的狀態(tài)空間31的路徑π。復原處理遞推地前進,通過一序列遞減抽象的中間模型,如下所述。為復原路徑,完整模型的狀態(tài)由圖像操作來映射,始于集合32,至狀態(tài)的后繼集合37。因為抽象模型比完整模型包括較少變量(因而包括更多行為),故各集合37皆是抽象模型狀態(tài)的對應集合34的子集,如圖所示。為成功地復原完整模型中的路徑π,處理器22必須找到路徑∏′上各抽象模型狀態(tài)35范圍內(nèi)的完整模型的至少一個狀態(tài)38,于狀態(tài)39而告終。按符號術語,這意味著狀態(tài)35必須是完整模型的至少一個狀態(tài)38的射影,如下文詳述。在圖2的示例中,在抽象模型的集合S3內(nèi),狀態(tài)35從集合37脫離。因此,完整模型上路徑∏′的復原失敗。初始抽象模型M′接著被完善以生成新的抽象模型,通常通過從M添加變量以縮減M′的抽象,并重復該復原處理。
定義在往下說明由本發(fā)明提供的局限化縮減的特定方法之前,有必要先定義說明中所用的術語,如下·模型M具有有限的變量集合V={v1,…,vn},其被稱為狀態(tài)變量。各狀態(tài)變量vi可等于有限的變量集合之一Di。M中的各狀態(tài)s由賦予變量{v1,…,vn}的特定值來定義。
·表達式由V中的變量來建立,常數(shù)由D來建立,而函數(shù)由符號(通常是數(shù)學或布爾符號)來建立。
·原子公式由表達式和相關符號來構建。所有原子公式的集合叫做Atoms(M)。
·原子公式f的輔集是明確出現(xiàn)在f中的狀態(tài)變量的集合。例如,輔集(v1+1+(v2/v5)=12)={v1,v2,v5}。
如Clarke等人在《模型檢查(Model Checking)》(見上)中所述,模型M可表示為Kripke結構K=(S,I,R,L),包括下列元素·S=D1×…×Dn是狀態(tài)集合·IS是初始狀態(tài)集合。
·R S×S是傳遞關系。
·LS→2Atoms(M)是由L(s)={f∈Atoms(M)|s|=f}給定的S中狀態(tài)s的記號。
基于Kripke結構,應用于M的公式可使用ACTL時序邏輯來代表,其是CTL的片斷,對于符號模型檢查特別有用,如Clarke等人所述。
可將各種方法用于抽象模型而達到局限化縮減的用途。下文所述方法使用此用途的射影,其定義如下·定義1-狀態(tài)射影給定狀態(tài)s=(v1,…,vn)和狀態(tài)變量的子集V′V,令m=|V′|并令i1,…,im成為屬于V′的狀態(tài)變量的升序指數(shù)。接著令V1′=Vi1,]]>V2′=Vi2,...,]]>Vm′=Vim.]]>V′上s的狀態(tài)射影被記為proj(s,V′),其是滿足s′=∃(V/V′)s(V)]]>的多項式s′=(v1′,…,vm′)。換言之,狀態(tài)s被射影至V′中所含變量的坐標系。
·定義2-集合射影給定狀態(tài)集合S和狀態(tài)變量集合V′,V′上集合S的集合射影S′被定義為S′={proj(s,V′)|s∈S}。
·定義3-模型射影給定代表模型M的Kripke結構K和狀態(tài)變量的子集V′,K對于V′(和對應的模型M′)的模型射影K′被定義如下○S′proj(S,V′)○I′=proj(I,V′)○R′={(s1′,s2′)|s1′=proj(s1,V′),s2′=proj(s2,V′),(s1,s2)∈R}○L(s)={f∈Atoms(M′)|s′|=f},其中Atoms(M′)是Atoms(M)的子集,其中僅出現(xiàn)了屬于V′的變量。
注意由模型射影的定義M<M′。
定義4-路徑射影變量集合V′上的路徑π={s0,s1,…sk}的射影是路徑集合∏′={s0′,s1′,…,sk′},其中對于所有i,Si′=proj(si,V′)。為簡便起見我們記∏i′≡Si′。路徑的射影具有狀態(tài)集合作為路徑元素,并因此對應于完整模型中的路徑集合。
在本發(fā)明的優(yōu)選實施例的以下說明中,術語抽象和射影互換使用。盡管本發(fā)明的原理可使用其它抽象方法而適用,但射影卻特別有助于此述的符號抽象縮減方法的自動實施。當使用二進制決策圖(BDD)以代表模型的狀態(tài)時,如在許多符號模型檢查程序中的情形,狀態(tài)集合的射影可方便地由現(xiàn)有定量的標準BDD操作來計算。以下在表I中給出了這種射影子程序的示例實現(xiàn)。
表I-BDD射影<pre listing-type="program-listing">/*給定一列變量“a”和BDD“b”/*子程序proj生成了BDD,其是/*“b”在“a”中變量上的射影。bdd_ptr proj(var_list a,bdd_ptr b){bdd_ptr result;if(b==ONE‖b==ZERO)retum(b);if(a==ONE)retum ONE;int alevel=GETLEVEL(a);int blevel=GETLEVEL(b);if(alevel<blevel) result=proj(a->next,b);else if(alevel==blevel) result=find_bdd(blevel,proj(a->next,b->left), proj(a->next,b->right));else result=or_bdd(proj(a,b->left),proj(a, b->right));return(result);}</pre>傳遞關系R可根據(jù)狀態(tài)變量分區(qū)為R=∩Ri,其中RiSi×Vi′。這里Vi′是S′在{Vi′}上的射影,而Si是S在某些SuppiV上的射影,其中Suppi是變量vi的輔集,即出現(xiàn)在說明vi下一狀態(tài)行為的原子公式中的狀態(tài)變量的集合。vi的下一值與其輔集外部的其它變量無關。狀態(tài)變量間的輔集關系可畫成圖表,其中各變量是節(jié)點,而若vj∈Suppi則從vi到vj有一個邊。這種分區(qū)特別適宜模型硬件實現(xiàn)并有助于下述分層路徑復原方法。
抽象完善處理圖3是流程圖,其從原理上描繪了根據(jù)本發(fā)明的優(yōu)選實施例的用于憑局限化縮減來檢查模型的方法。參照圖1注意到,當使用者24將模型26和規(guī)范屬性28輸入處理器22時校驗處理開始于初始化步驟40。在初始射影步驟42處理器22將輸入模型M射影至初始抽象模型M′。對于所給特定的受驗屬性,M′中的變量最好選擇為的原子公式輔集之中的。
在模型檢查步驟44處理器22對M′進行自動模型檢查,如以上參照圖2所述。若在M′上未找到反例,則意味著屬性在抽象模型上為真,并因此在M上亦必定為真。在此情形下,在通過步驟46處理器22向使用者返回指示即設計模型通過此測試。
另一方面,若在步驟44處找到模型M′中的反例軌跡∏′,則在復原步驟48處理器22試圖復原M上的反例路徑π。路徑π的找到辦法是∏′是π的射影,如以上所定義。通過添加變量的后繼層以創(chuàng)建后繼的較不抽象的中間模型M″、復原被遞推地進行,如以下參照圖4所述。在完成復原處理時,在完成步驟50處理器22確定是否可在M上找到路徑π。若是,則在失敗步驟52處理器22通知使用者24設計滿足不了屬性,并返回其找到的反例軌跡。
若處理器22不能在其射影是軌跡∏′的M上找到路徑π,則在完善步驟54處理器完善抽象模型M′。該完善利用了在步驟48處收集的信息。完善步驟的細節(jié)將在下文參照圖6來說明。完善后的抽象模型接著在步驟44處再測試,而子程序如上述繼續(xù),直到模型在步驟44處成功地滿足了屬性,或在步驟50處在M上找到路徑π。
分層復原下面參照圖4和圖5,其從原理上表示了根據(jù)本發(fā)明的優(yōu)選實施例的復原步驟48的細節(jié)。圖4是說明用于分層路徑復原的優(yōu)選方法的流程圖。圖5是說明在抽象的不同級別處的模型的方框圖,有助于理解此處使用的層的概念。
為開始路徑復原處理,在初始抽象步驟60′通過初始的、縮減的變量集V′={v1′,…,vm′}給定抽象模型M′,如上所述。最好一開始選擇V′包括的原子公式輔集中的變量,而M′是由將M射影至V′而得到的。在M′上找到抽象反例軌跡∏′,如上參照步驟44所述。在添加步驟62接著將一層新變量添加至V′。在模型射影步驟64通過將M射影至新縮減的變量集V′而獲得縮減抽象的新抽象模型M″。
通過步驟62在各次遞推處添加的新層最好從前一層脫離并含有已有V′的輔集中的變量。形式上,一層變量Ui的定義如下,從初始集V′開始1.U0=V′是一層。
2.任何集合Ui輔集[∪UK0≤k≤i-1]/∪Uk0≤k≤i-1]]>是一層。
于是,新層可含有前一層的整個輔集(而非早在前一層中的變量),或可含有輔集的一個子集??刹扇挾葍?yōu)先或深度優(yōu)先兩種方法來選擇輔集變量以加入各層。若前一復原步驟失敗,而在步驟54處進行模型的完善,則在完善階段添加的變量輔集中的變量最好是被給予優(yōu)先權以在步驟62處添加至模型。
層的概念被形象地表示在圖5中。記為M的完整模型80含有狀態(tài)變量82的完整集合。屬性p的原子公式由操作數(shù)84從原理上代表,其帶有公式變量集合86,標識為初始V′。原子公式的輔集88中的變量被添加至V′以生成第一抽象模型90,記為M′。爾后,M中變量的剩余集合92中的變量82被相繼添加至模型以創(chuàng)建新層。例如,記為M″的后續(xù)抽象模型94包括輔集88中變量的輔集中的變量82。進而通過步驟62遞推地添加層,直到完全復原了路徑π,或直到復原處理失敗。
返回圖4,一旦在步驟64處創(chuàng)建了新抽象模型M″,則在路徑層復原步驟66復原新抽象路徑∏′。新抽象路徑的找到是通過使用新模型M″以及抽象路徑∏′和前一抽象模型M′(在其上確定抽象路徑∏′)。在步驟64處使用的方法取決于所找到的路徑的類型,其是由模型M和規(guī)范屬性所確定的。下面將說明一些用于復原路徑層的替代方法。在任何情形下,在各次通過步驟66時,在試圖復原延展變量集上的路徑之前皆將較少量的變量添加至模型。
在各次通過步驟66后,在路徑評估步驟68處理器22評估新路徑∏′是否成功復原了。若沒有新路徑可復原,則處理器斷言復原失敗(步驟50),并繼續(xù)以完善原抽象模型(步驟54)。若成功地復原了∏″,則在變量檢查步驟70處理器確定是否還有任何更多的新變量需添加至M″。若集合92(圖5)中不再留有這種變量了,則意味著M″=M,從而復原了完整路徑。換言之,在路徑完成步驟72處理器確定∏″=π。處理器在步驟52處返回路徑π作為規(guī)范屬性的反例,如上所述。
反之,只要尚余有要添加至抽象模型的變量,則處理器繼續(xù)以復原路徑的另一層。為此,在取代步驟74它將新模型M″代之以M′,并將新抽象模型∏″代之以∏′,接著繼續(xù)進行以再次遞推該方法,始于步驟62。
為完整起見,以下表II提供了代表圖4所示方法的偽代碼。
表II-分層復原<pre listing-type="program-listing">reconstruct(∏′,M′,M″){ ∏0=∏′; i=1; U=variables_of(M′); while((U≠)∧(Πi≠)){ U=choose_n_variables(support(U)/U)∪U; M″=project_model(M,U); ∏i+l=reconstruct_one_layer(∏i,M′,M″); if(∏i+l=)return ;/*尚需完善*/ i=i+1; } return choose_one_counterexample(∏i); }</pre>表II中的函數(shù)“reconstruct)_one_layer”對應于圖4的方法中的步驟66。此步驟各種不同的實現(xiàn)是可能的,如以下在表III,IV和V中以偽代碼的形式所示。實現(xiàn)的選擇取決于尋找的反例路徑是否包括閉環(huán)。如在模型檢查現(xiàn)有技術中已知,對于安全屬性的反例軌跡(如AG屬性,在時序邏輯概念中)不含閉環(huán)。另一方面,對于活潑屬性的反例軌跡(如AF屬性)則必含閉環(huán)。表III和IV表示兩種對于無閉環(huán)路徑的復原方法,而表V表示對于閉環(huán)路徑的方法。這些特定的對于分層復原的啟發(fā)式方法是通過實例給出的。替代方法對本領域技術人員來說是明顯的,并認為是在本發(fā)明的范圍內(nèi)。
表III-無閉環(huán)的復原-方法1<pre listing-type="program-listing">reconstruct_one_layer_no_oop1(∏′,M′,M″){last=|∏′|-1;s=S0;i=0;V′=variables_of(M′);<!-- SIPO <DP n="14"> --><dp n="d14"/> while(i<last){ next_s=Si+1; new=image(s,M″)∩ next_s if(new=){ /*力圖查看V″/V′中的值的選擇 /*可否變更*/ suspect=preimage(proj(next_s,V′),M′); if((suspect ∩s)≠){ /*檢查Si+1是否可替換*/ new=image(s,M″)∩proj(next_s,V′); if(new=) return ;/*尚需完善*/ else/*替換Si+1*/ Si+1=new; } else retum ;/*尚需完善*/}i=i+1;s=new;} return ∏″;}</pre>在以上列表中,∏′={S0,S1,…,Slast},而函數(shù)image和preimage對應于系統(tǒng)傳遞關系的正向和逆向操作,如上所述。表III的方法從初始狀態(tài)I″開始遞推地進行抽象模型M″上的正向成像步驟,并將各步結果與∏'中的對應步驟結合。若該結合到達死局(new=),則方法返回上一步并試圖將∏′修改為與M″一致。表III的方法當復原到達目標狀態(tài)Slast時成功,而若對于∏′上某些Si不能在M″中找到對應狀態(tài)則方法失敗。
具體∏′的選擇是隨意的,而∏′狀態(tài)中的變量可采取與M′一致的任何值。參照圖5,例如,被添加以創(chuàng)建模型90(M′)的V′的輔集88中的變量82被“割裂(cut-free)”了與集合92中其余變量的行為依賴。因此,這些“割裂”的變量在M′中無依賴地行動,而它們的值可自由變更以使它們與M″一致。在表III的方法中進行此變更需通過將有不一致狀態(tài)(next_s)射影在V′上并預成像射影狀態(tài)以僅保留V′中想要的變量。預成像操作最好是在M′上進行,而非在更大的M″狀態(tài)空間上進行,以避免狀態(tài)撐爆。表III的方法接著試圖找到使下一狀態(tài)與模型一致的M″中但非M′中的變量V″的其它值(即V″/V′)。
根據(jù)以上方法的分層復原在較簡單情形下給出了好結果,但在更大狀態(tài)空間中會導致?lián)伪?,因為在抽象模型中要搜索的反例?shù)量隨各次遞推而增長。當然,只要在作為完整反例的射影的抽象模型中找到單個反例就足矣。因此,在以下表IV所示的替代方法中,抽象反例被不足近似,而期望該不足近似集合仍含有效反例。該期望可能受挫,因為不足近似可能保留非法反例,其被證實不是完整反例的射影,同時又廢棄了有效反例。因此,在表IV的方法中,當分層復原處理到達死局時,它通過預成像計算退回上一步,直到它找到可能有效的新抽象反例。
表IV-無閉環(huán)的復原-方法2<pre listing-type="program-listing">reconstruct_one_layer no_loop2(∏′,M′,M″){last=|∏′|-1;for(i=0 to last-1)Siall=;1=0;V′=variables_of(M′);S0=I″∩proj(S0,V′);while(i≥0 and i<last){ prev=proj(Si,V′); new=proj(Si+1,V′); step=preimage(new,M″); if(step∩ Si≠)/*步驟正向*/{ Si+1=image(step,M″)∩ Si+1; Si+1=subset(Si+1); i=i+1;} else if(step∩prev≠)/*退回*/{<!-- SIPO <DP n="16"> --><dp n="d16"/> Si=preimage(Si+1,M″)∩prev/Siall; If(Si=)retum ; Si=subset(Si); Siall=Siall∪Si; i=i-1; } else retum ;/*尚需完善*/ } return ∏″;}</pre>不足近似在表IV的方法中是是通過子集函數(shù)來實現(xiàn)的,如在模型檢查現(xiàn)有技術中所已知的。子集例如由Ravi等人記載于《(高密度到達性分析(High-Density Reachability Analysis)》,見計算機輔助設計國際會議(Intemational Conference on Computer Aided Design)(ICCAD 1995,加利福尼亞州圣何賽(San Jose,Califomia))第154~158頁,其被援引而包含于此。該技術抽取由給定BDD代表的狀態(tài)集的一個小而密的子集,從而子集的BDD很小。子集BDD的大小是啟發(fā)式地設定的,以一方面防止狀態(tài)撐爆,另一方面避免過量退回。發(fā)明人已找到子集BDD大小為縮減的5000節(jié)點有助于硬件設計的模型檢查。其它不足近似也可類似地使用。
表IV的方法只要可能即進行正向和反向(成像和預成像)步驟。正向步驟一直前進只要路徑的下一步與模型M″一致,繼續(xù)直到復原了整個軌跡∏″或直到下一正向步驟不與抽象路徑∏″上的下一狀態(tài)相交。在后一種情形下,該方法退回以找到對于V″/V′的不同行為、其使下一個正向步驟成為可能。繼續(xù)退回直到正向步驟再次可能了,或直到不能再退回了。在后一種情形下,復原失敗。
為復原帶有閉環(huán)的抽象路徑,對應的具體路徑亦必須含有閉環(huán)。一種稚嫩的、反復試驗的用于找到閉環(huán)路徑的方法在許多情形下有效果。
以下表V的方法提供了一種更系統(tǒng)的、定點方法以復原抽象路徑中的閉環(huán)。(定點算法在集合上反復地計算變換,直到?jīng)]有變更。)在此方法中,抽象模型M′中的輸入路徑Π″被假定為閉環(huán)路徑,沒有從模型初始狀態(tài)到閉環(huán)開始的“尾巴”。由于具體路徑在一個對應抽象路徑閉環(huán)的閉環(huán)中可循環(huán)數(shù)次,故本發(fā)明復原的路徑的長度是抽象路徑閉環(huán)的長度的數(shù)倍,|∏′|-1。
表V-有閉環(huán)的復原<pre listing-type="program-listing">reconstruct_a_loop(∏′,M′,M″){ old=TRUE; new=S0; last=|∏′|-1;∏=; while((new∩old≠)∧(new≠old)){ i=1; new=new ∩old; old=new; step=new; append(step,∏); while(i≤last){ step=image(step,M″)∩Si; if(step=) refine; else{append(step,∏);Si=step; i=i+1; } new=step; } } if(new∩old≠){ S0=new; Retum extract_loop_trace(∏′,M″); } else refine;<!-- SIPO <DP n="18"> --><dp n="d18"/>}</pre>當已知抽象路徑∏′含有閉環(huán)時激活表V的方法。如上所注,路徑通常還具有從初始狀態(tài)導向閉環(huán)中某些狀態(tài)的前導。前導是由表III或IV的方法來復原的,同時路徑的閉環(huán)部分是如表V所詳細復原的。于是子程序reconstruct a loop接收僅含路徑閉環(huán)部分的路徑∏′。在表V中,將TRUE賦予變量old從符號上意味著最初包括整個狀態(tài)空間S。在各次遞推中,定點算法從old去除狀態(tài)(閉環(huán)中的第一抽象狀態(tài),其對應于具體狀態(tài)的集合)。該方法當其到達old不變的遞推時終止。注意到各次遞推皆含長度為|∏′|-1的內(nèi)環(huán),從而最終具體閉環(huán)是此長度的數(shù)倍。若定點是空集,則路徑中沒有閉環(huán)。
在表V的定點方法中,在定點終止時(new=old),若new非空,則具體閉環(huán)對應于抽象閉環(huán)而存在。然而實際上有可能不是閉環(huán)起始處的狀態(tài)的抽象集合S0中的所有狀態(tài)皆在閉環(huán)上。因此例程extract_loop_trace從S0中選擇狀態(tài)之一并從選定狀態(tài)遞推地進行反向(預成像)步驟,直到S0中的某些狀態(tài)被不止一次地遇到。
抽象模型的完善圖6是流程圖,其從原理上表示根據(jù)本發(fā)明的優(yōu)選實施例的完善步驟54的細節(jié)。如上所注,處理器22當它確定基于在步驟44處在初始抽象模型M′中找到的抽象路徑∏′不可能復原路徑時采取步驟54。圖6的方法接著通過識別V″/V′中的一小變量集合、其中不可能找到允許從∏′復原完整路徑π的值,從而完善初始模型。此方法將以下作為分離點即步驟66處的分層復原(圖4)成功地在模型M″中復原路徑∏j+l以至∏j上的一些狀態(tài)Si,但接著卻不能復原該路徑至下一狀態(tài)Si+1。于是,圖6的方法涉及特定模型M′和M″(帶有其對應變量V′和V″)以及M中特定的狀態(tài)集合Si和Si+1。
在射影步驟100,Si中的狀態(tài)被射影至變量集合V′。在成像步驟102接著使用M的傳遞關系以成像M″中射影的狀態(tài)集合。在差別找到步驟104處理器22找到M″中射影狀態(tài)中V″/V′中的變量的值與Si+1中相同變量的值之間的不一致。處理器使用啟發(fā)式的算法以找到不一致值變量的最小集合。在變量檢查步驟105它接著檢查這些變量以確信這些變量是否早就存在于抽象模型M′中。在模型局限化步驟106不在M中的最小集合中的任何變量被添加至M′。接著將此完善后的模型用于抽象路徑分析和復原的下一階段。
或者,若處理器在步驟105處確定不在M′中的最小集合中沒有變量,則在新射影步驟108其去將下一狀態(tài)集合Si+1射影至M′中的變量V′。在預成像步驟110這些射影的狀態(tài)被預成像回上一狀態(tài)集合。在此情形下,在新差別找到步驟112處理器22找到M″中預成像狀態(tài)中的變量的值與S中相同變量的值之間的不一致,再次使用啟發(fā)式的算法以找到不一致值變量的最小集合。不在M′中的最小集合中的變量接著在步驟106處被添加至M′,以用于抽象路徑分析和復原的下一階段。
以下表VI以偽代碼的形式呈現(xiàn)了圖6的方法表VI-完善<pre listing-type="program-listing">refine(Si,Si+1,M′,M″){V′=variables_of(M′);prev=proj(Si,V′);D=differ(image(prev,M″),Si+1);If(DV′){new=proj(Si+l,V′);D=differ(preimage(new,M″),Si);} retum add_to_model(M′,D);}</pre>表中所示方法使用啟發(fā)式函數(shù)differ(A,B)以找到不一致值變量的最小集合(圖6中步驟104)。函數(shù)differ取用兩個狀態(tài)集合A和B,A∩B=,其最好表示為BDD,并找到變量集合P以使proj(A,P)∩ proj(B,P)=。該函數(shù)通過設定P=V″而開始其在以上方法中的操作。它隨機地從P中V″/V′消去變量,直到proj(A,P)∩proj(B,P)≠。接著,通過在變量消去處理中退回一步,找到差別變量的最小集合。處理器22最好試圖消去數(shù)個不同次序的序列中的變量,并接著選擇給出變量最小集合的序列以在步驟106處添加。
實驗結果發(fā)明人已將上述分層復原的方法在數(shù)個實際硬件模型上進行了測試。他們將結果與非局限化的模型檢查所得的結果進行比較,并與使用在背景技術中所述Clarke等人的方法的非分層局限化所得的結果進行比較。對于安全屬性,在模型通過屬性的情形下,本發(fā)明的局限化方法一般可成功地校驗屬性,比Clarke的局限化方法或非局限化方法明顯地時間更短并花費更低的計算機存儲器。此改進明確地緣于,即本發(fā)明一般允許安全屬性在比現(xiàn)有技術的方法小得多的模型上校驗。有數(shù)個模型,計算機在其上使用Clarke的方法或非局限化方法進行模型檢查、而在完成校驗處理之前就耗盡了存儲器。本發(fā)明的方法一般成功地處理了這些情形,在某些實例中顯著地改進了性能。
當受測模型在給定屬性中失敗,本發(fā)明的方法所得的結果與非局限化模型檢查方法的結果相近。顯然,當屬性失敗時,通常需要通過圖3的復原/完善方法進行更大數(shù)量的遞推,從而局限化的優(yōu)勢不甚明顯。
在測試活潑屬性時,在一些情形下發(fā)現(xiàn)本發(fā)明的方法比非局限化方法快很多并使用少得多的存儲器。上述用于復原閉環(huán)路徑的表V的定點方法和“稚嫩”的方法皆可給出如意的結果。本發(fā)明比非局限化方法的優(yōu)勢在測試活潑屬性中不如測試安全屬性那么明顯。
盡管上述優(yōu)選實施例使用了符號模型檢查工具和狀態(tài)代表,但本發(fā)明的原則可類似地、略作修正而應用于形式校驗的其它方法,如ATPG和SAT解等。例如,Wang等人在《以帶有形式、仿真和混和引擎的抽象完善來校驗形式屬性(Formal Property Verification by Abstraction Refinement with Formal,Simulation and Hybrid Engines)》中記載了使用ATPG解、在軌跡復原中抽象完善的使用,見第38屆IEEE設計自動化會議(38th IEEE Design AutomationConference)(DAC 2001,Las Vegas,Nevada),第35~40頁。在SAT解中抽象完善的使用由Clarke等人記載于《使用ILP和機器學習技術的基于SAT的抽象完善(SAT Based Abstraction-Refinement Using ILP and Machine LeamingTechniques)》,見第16屆計算機輔助校驗國際會議會志(Proceedings of theSixteenth International Conference on Computer-Aided Verification)(CAV 2002,Copenhagen);并由Chauhan等人記載于《使用基于SAT的沖突分析的對于模型檢查大狀態(tài)空間的自動抽象完善(Automated Abstraction Refinement forModel Checking Large State Spaces using SAT based Conflict Analysis)》,見計算機輔助設計中的形式方法(Formal Methods in Computer AidedDesign)(FMCAD 2002)。這些出版物被援引而包含于此。將上述方法適用于如基于ATPG和SAT的技術對于本領域技術人員顯而易見,并認為落入了本發(fā)明的范圍內(nèi)。
于是應注意到上述優(yōu)選實施例是通過示例來引征的,而本發(fā)明不限于此處具體表示出并說明的內(nèi)容。相反,本發(fā)明的范圍包括上述各種特征的組合和子組合、及其變形和修改,其對于本領域技術人員來說,可以通過閱讀前面的說明書而獲悉,并且是現(xiàn)有技術所未揭示的。
權利要求
1.一種用于校驗受研究系統(tǒng)的完整模型的屬性的方法,所述模型基于狀態(tài)變量的集合和所述狀態(tài)間的傳遞關系而定義系統(tǒng)的狀態(tài),所述方法包括從所述模型中至少抽象出一些變量,以產(chǎn)生所述系統(tǒng)的抽象模型;以所述抽象模型的狀態(tài)空間中的初始狀態(tài)開始,根據(jù)至所述屬性所定義的目標狀態(tài)的傳遞關系、找到通過所述抽象模型狀態(tài)空間的抽象路徑;將所述抽象后的變量的一個子集恢復成所述抽象模型,從而產(chǎn)生所述系統(tǒng)的中間模型;和基于所述中間模型而校驗所述完整模型上的所述屬性。
2.根據(jù)權利要求1所述的方法,其中校驗所述屬性包括當所述抽象模型滿足所述屬性時確定所述完整模型滿足所述屬性。
3.根據(jù)權利要求1所述的方法,其中校驗所述屬性包括在所述中間模型上進行所述抽象路徑的部分復原,并基于所述部分復原而校驗所述屬性。
4.根據(jù)權利要求3所述的方法,其中校驗所述屬性進一步包括基于所述中間路徑而復原通過所述完整模型狀態(tài)空間的完整路徑。
5.根據(jù)權利要求4所述的方法,其中復原所述完整路徑包括重復恢復所述抽象后的變量的所述子集和進行所述部分復原、以生成一序列的中間模型、其各中間路徑分別在所述中間模型上復原的步驟,直到復原了所述完整路徑。
6.根據(jù)權利要求3所述的方法,其中進行所述部分復原包括識別在復原所述中間模型上的所述抽象路徑時的失敗點,并響應所述失敗點而修正所述抽象路徑,并基于所述修正后的抽象路徑而進行所述部分復原。
7.根據(jù)權利要求3所述的方法,其中進行所述部分復原包括識別在復原所述中間模型上的所述抽象路徑時的失敗點,并響應所述失敗點而完善所述抽象路徑,并重復找到所述抽象路徑、恢復所述抽象后的變量的所述子集和基于所述完善后的抽象模型而進行所述部分復原的步驟。
8.根據(jù)權利要求7所述的方法,其中識別所述失敗點包括識別一個或更多在所述中間模型中具有與所述中間模型上的所述抽象路徑的所述復原不一致的值的變量,而其中完善所述抽象模型包括將所述識別出的變量添加至所述抽象模型。
9.根據(jù)權利要求8所述的方法,其中添加所述識別出的變量包括提供第一二進制決策圖(BDD)以代表所述中間模型中有效狀態(tài),并提供第二BDD以代表假的抽象模型狀態(tài),并找到所述第一與第二BDD之間的差別。
10.根據(jù)權利要求3所述的方法,其中進行所述部分復原包括復原所述中間模型上的中間路徑,從而使所述抽象路徑是所述中間路徑在所述抽象模型的變量上的射影。
11.根據(jù)權利要求1所述的方法,其中恢復所述抽象后的變量的子集包括添加一層所述抽象后的變量,從而使所述添加層中的所述變量在所述抽象模型中所述變量的輔集中。
12.根據(jù)權利要求11所述的方法,其中校驗所述屬性包括進行所述中間模型上的所述抽象路徑的部分復原,同時調(diào)整所述添加層抽象路徑中所述變量的一個或更多值,從而使所述抽象路徑的所述部分復原與所述中間模型一致。
13.根據(jù)權利要求12所述的方法,其中調(diào)整所述添加層抽象路徑中所述變量的一個或更多值至少包括以下兩者之一調(diào)整與所述中間模型不一致的所述抽象路徑上的所述第一抽象狀態(tài)中的變量的值,和調(diào)整所述抽象路徑上所述第一抽象狀態(tài)之前的第二抽象狀態(tài)中的所述變量的值。
14.根據(jù)權利要求11所述的方法,其中添加一層所述抽象后的變量包括添加所述層到第一中間模型中,而其中校驗所述屬性包括進行所述第一中間模型上的所述抽象路徑的部分復原,并包括重復恢復所述抽象后的變量的所述子集和進行所述部分復原的步驟,以生成一序列的中間模型,其始于所述第一中間模型,從而對于所述第一中間模型之后的所有中間模型,恢復所述抽象變量的所述子集包括添加又一層所述抽象后的變量,其中所述添加層中的變量在所述序列中的前一個中間模型的變量輔集中。
15.根據(jù)權利要求14所述的方法,其中重復進行所述部分復原的步驟包括復原所有中間模型上的各中間路徑,從而對于所有中間模型,各中間路徑是復原的中間路徑在所述序列中更后的中間模型上的射影。
16.根據(jù)權利要求15所述的方法,其中添加又一層抽象后的變量包括選擇在所述中間模型的前一個中的所述變量輔集中的變量的一個子集。
17.根據(jù)權利要求16所述的方法,其中進行所述部分復原包括找到等價于所述抽象路徑上的第一抽象狀態(tài)的中間模型狀態(tài)的第一集合;從所述第一集合中取用候選的部分集合;找到可從所述部分集合由一個中間模型傳遞達到,并等價于所述抽象路徑上的第二抽象狀態(tài)的所述中間模型狀態(tài)的第二集合;遞推地重復以下步驟,即取用所述部分集合和找到可從所述部分集合由一個中間模型傳遞達到的所述中間模型狀態(tài)的又一集合,從而根據(jù)所述抽象狀態(tài)出現(xiàn)在所述抽象路徑上的次序找到后繼抽象狀態(tài);在找到又一集合的所述步驟遞推中確定沒有可從在上次遞推中算出的中間候選集合由一個中間模型傳遞而達到的等價的中間模型狀態(tài)時,退回所述上次遞推并選擇所述中間模型狀態(tài)的不同部分集合;和當沒有可由一個傳遞而達到的等價的中間模型狀態(tài)時,繼續(xù)重復取用所述部分集合和找到所述又一集合以及退回上次遞推的步驟,直到所述抽象路徑被完全復原或直到原路退回中間模型狀態(tài)的所述第一集合并斷言不能復原所述抽象路徑,籍以斷言所述抽象模型尚需完善。
18.根據(jù)權利要求1所述的方法,其中找到所述抽象路徑包括找到閉合的抽象路徑,而其中校驗所述屬性包括復原所述中間模型上的中間路徑,從而使所述中間路徑包括一個閉環(huán),而所述抽象路徑是所述中間路徑至所述抽象模型的射影。
19.根據(jù)權利要求18所述的方法,其中所述閉合的抽象路徑具有給定的抽象路徑長度,而其中復原所述中間路徑包括搜索受以下條件限制的所述中間路徑,即所述中間路徑所具有的中間路徑長度是所述抽象路徑長度的倍數(shù)。
20.一種用于檢查受研究系統(tǒng)的完整模型的方法,該模型基于狀態(tài)變量的集合和所述狀態(tài)間的傳遞關系而定義系統(tǒng)的狀態(tài),所述方法包括從所述模型中至少抽象出一些變量,以產(chǎn)生所述系統(tǒng)的抽象模型;以所述抽象模型的狀態(tài)空間中的初始狀態(tài)開始,根據(jù)至目標狀態(tài)的傳遞關系、找到通過所述抽象模型狀態(tài)空間的抽象路徑;將所述抽象后的變量的一個子集恢復成所述抽象模型,從而產(chǎn)生所述系統(tǒng)的中間模型;復原所述中間模型狀態(tài)空間上的所述抽象路徑,從而生成通過所述狀態(tài)空間的中間路徑;和復原所述完整模型狀態(tài)空間上的所述中間路徑,從而生成完整路徑。
21.根據(jù)權利要求20所述的方法,其中復原所述中間路徑包括重復地恢復所述抽象后的變量的各子集,以生成一序列的中間模型,并復原所述序列中的所述中間模型上的各中間路徑,直到生成了所述完整路徑。
22.一種用于校驗受研究系統(tǒng)的完整模型的屬性的設備,所述模型基于狀態(tài)變量的集合和所述狀態(tài)間的傳遞關系而定義系統(tǒng)的狀態(tài),所述設備包括校驗處理器,其被設成從所述模型中至少抽象出一些變量,以產(chǎn)生所述系統(tǒng)的抽象模型,和以所述抽象模型的狀態(tài)空間中的初始狀態(tài)開始,根據(jù)至所述屬性所定義的目標狀態(tài)的所述傳遞關系、找到通過所述抽象模型狀態(tài)空間的抽象路徑,所述處理器被進一步設成將所述抽象后的變量的一個子集恢復成所述抽象模型,從而產(chǎn)生所述系統(tǒng)的中間模型,和基于所述中間模型而校驗所述完整模型上的所述屬性。
23.根據(jù)權利要求22所述的設備,其中所述處理器被設成當所述抽象模型滿足所述屬性時確定所述完整模型滿足所述屬性。
24.根據(jù)權利要求22所述的設備,其中所述處理器被設成在所述中間模型上進行所述抽象路徑的部分復原,并基于所述部分復原而校驗所述屬性。
25.根據(jù)權利要求24所述的設備,其中所述處理器被設成基于所述中間路徑而復原通過所述完整模型狀態(tài)空間的完整路徑。
26.根據(jù)權利要求25所述的設備,其中為復原所述完整路徑,所述處理器被設成重復恢復所述抽象后的變量的后續(xù)子集和進行后續(xù)部分復原,以生成一序列的中間模型,其各中間路徑分別在所述中間模型上復原,直到復原了所述完整路徑。
27.根據(jù)權利要求24所述的設備,其中所述處理器被設成識別在復原所述中間模型上的所述抽象路徑時的失敗點,并響應所述失敗點而修正所述抽象路徑,并基于所述修正后的抽象路徑而進行所述部分復原。
28.根據(jù)權利要求24所述的設備,其中所述處理器被設成識別在復原所述中間模型上的所述抽象路徑時的失敗點,并響應所述失敗點而完善所述抽象路徑,并重復找到所述抽象路徑、恢復所述抽象后的變量的子集和基于所述完善后的抽象模型而進行所述部分復原。
29.根據(jù)權利要求28所述的設備,其中所述處理器被設成識別一個或更多在所述中間模型中具有與所述中間模型上的所述抽象路徑的所述復原不一致的值的變量,并通過將所述識別出的變量添加至所述抽象模型完善所述抽象模型。
30.根據(jù)權利要求24所述的設備,其中在進行所述部分復原中,所述處理器被設成復原所述中間模型上的中間路徑,從而使所述抽象路徑是所述中間路徑在所述抽象模型的所述變量上的射影。
31.根據(jù)權利要求22所述的設備,其中所述處理器被設成通過添加一層所述抽象后的變量恢復所述抽象后的變量的子集,從而使所述添加層中的所述變量在所述抽象模型中所述變量的輔集中。
32.根據(jù)權利要求31所述的設備,其中所述處理器被設成進行所述中間模型上的所述抽象路徑的部分復原,同時調(diào)整所述添加層中變量的一個或更多值,從而使所述抽象路徑的部分復原與所述中間模型一致。
33.根據(jù)權利要求31所述的設備,其中所述處理器被設成將所述層添加到第一中間模型中,和進行所述第一中間模型上的所述抽象路徑的部分復原,并接著重復恢復所述抽象后的變量的所述子集和進行所述部分復原,以生成一序列的中間模型,其始于所述第一中間模型,從而將又一層所述抽象后的變量添加至所述第一中間模型之后的所有中間模型,其中所述添加層中的變量在所述序列中的前一個中間模型的變量輔集中。
34.根據(jù)權利要求33所述的設備,其中所述處理器被設成復原所有中間模型上的各中間路徑,從而對于所有中間模型,各中間路徑是復原的中等路徑在所述序列中更后的中間模型上的射影。
35.根據(jù)權利要求22所述的設備,其中所述處理器被設成找到閉合的抽象路徑,并復原所述中間模型上的中間路徑,從而使所述中間路徑包括一個閉環(huán),而所述抽象路徑是所述中間路徑至所述抽象模型的射影。
36.根據(jù)權利要求35所述的設備,其中所述閉合的抽象路徑具有給定的抽象路徑長度,而其中所述處理器被設成搜索受以下條件限制的中間路徑,即所述中間路徑所具有的中間路徑長度是所述抽象路徑長度的倍數(shù)。
37.一種用于檢查受研究系統(tǒng)的完整模型的設備,該模型基于狀態(tài)變量的集合和所述狀態(tài)間的傳遞關系而定義狀態(tài)空間中所述系統(tǒng)的狀態(tài),所述設備包括模型處理器,其被設成從模型中至少抽象出一些變量,以產(chǎn)生所述系統(tǒng)的抽象模型,和以所述抽象模型狀態(tài)空間中的初始狀態(tài)開始,根據(jù)至目標狀態(tài)的所述傳遞關系、找到通過所述抽象模型狀態(tài)空間的抽象路徑,所述處理器被進一步設成將所述抽象后的變量的一個子集恢復成所述抽象模型,從而產(chǎn)生所述系統(tǒng)的中間模型,復原所述中間模型狀態(tài)空間上的所述抽象路徑,從而生成通過所述狀態(tài)空間的中間路徑,和復原所述完整模型狀態(tài)空間上的所述中間路徑,從而生成完整路徑。
38.根據(jù)權利要求37所述的設備,其中所述處理器被設成重復地恢復所述抽象后的變量的各子集,以生成一序列的中間模型,并重復地復原所述序列中的中間模型上的各中間路徑,直到生成了所述完整路徑。
39.一種用于校驗受研究系統(tǒng)的完整模型的屬性的計算機軟件產(chǎn)品,所述模型基于狀態(tài)變量的集合和所述狀態(tài)間的傳遞關系而定義系統(tǒng)的狀態(tài),所述產(chǎn)品包括計算機可讀介質(zhì),其上存儲了計算機指令,該指令當由計算機讀取時使得所述計算機從所述模型中至少抽象出一些變量,以產(chǎn)生所述系統(tǒng)的抽象模型,和以所述抽象模型的狀態(tài)空間中的初始狀態(tài)開始,根據(jù)至所述屬性所定義的目標狀態(tài)的所述傳遞關系、找到通過所述抽象模型狀態(tài)空間的抽象路徑,所述指令進一步使得所述計算機將所述抽象后的變量的一個子集恢復成抽象模型,從而產(chǎn)生所述系統(tǒng)的中間模型,和基于所述中間模型而校驗所述完整模型上的所述屬性。
40.一種用于檢查受研究系統(tǒng)的完整模型的計算機軟件產(chǎn)品,該模型基于狀態(tài)變量的集合和所述狀態(tài)間的傳遞關系而定義狀態(tài)空間中所述系統(tǒng)的狀態(tài),所述產(chǎn)品包括計算機可讀介質(zhì),其上存儲了計算機指令,該指令當由計算機讀取時使得所述計算機從模型中至少抽象出一些變量,以產(chǎn)生所述系統(tǒng)的抽象模型,和以所述抽象模型的所述狀態(tài)空間中的初始狀態(tài)開始,根據(jù)至目標狀態(tài)的所述傳遞關系、找到通過所述抽象模型所述狀態(tài)空間的抽象路徑,所述指令進一步使得所述計算機將所述抽象后的變量的一個子集恢復成所述抽象模型,從而產(chǎn)生所述系統(tǒng)的中間模型,復原所述中間模型狀態(tài)空間上的所述抽象路徑,從而生成通過所述狀態(tài)空間的中間路徑,和復原所述完整模型狀態(tài)空間上的所述中間路徑,從而生成完整路徑。
全文摘要
一種用于校驗受研究系統(tǒng)的完整模型的屬性的方法,包括從模型中至少抽象出一些變量,以產(chǎn)生系統(tǒng)的抽象模型。以抽象模型的狀態(tài)空間中的初始狀態(tài)開始,根據(jù)至屬性所定義的目標狀態(tài)的傳遞關系、找到通過抽象模型狀態(tài)空間的抽象路徑。將抽象后的變量的一個子集恢復成抽象模型,從而產(chǎn)生系統(tǒng)的中間模型,并基于中間模型而校驗完整模型上的屬性。
文檔編號G06F17/50GK1510738SQ20031011872
公開日2004年7月7日 申請日期2003年12月2日 優(yōu)先權日2002年12月20日
發(fā)明者丹尼爾·蓋斯特, 沙倫·凱達, 安娜·格林高茲, 丹尼爾 蓋斯特, 凱達, 格林高茲 申請人:國際商業(yè)機器公司