本發(fā)明公開了一種基于coq的航空電子模式控制一致性驗(yàn)證方法,主要用于解決航空電子模式控制系統(tǒng)的狀態(tài)轉(zhuǎn)移一致性問題。
背景技術(shù):
在系統(tǒng)開發(fā)早期的模型建立階段就對模型的可調(diào)度性、安全性等方面進(jìn)行驗(yàn)證,可以避免設(shè)計(jì)階段的反復(fù),大大的提高開發(fā)效率?;跁r(shí)間自動(dòng)機(jī)的理論,采用形式化的方法,通過過程模擬對模型的一致性進(jìn)行前期的驗(yàn)證是一種可行且必要的方法。
形式化驗(yàn)證就是基于已建立的形式化規(guī)格,對所規(guī)格系統(tǒng)的相關(guān)特性進(jìn)行分析和驗(yàn)證,以評判系統(tǒng)是否滿足期望的特性。形式化驗(yàn)證并不能完全確保系統(tǒng)的性能正確無誤,但是可以最大限度地理解和分析系統(tǒng),并盡可能地發(fā)現(xiàn)其中的不一致性、模糊性、不完備性等錯(cuò)誤。形式化驗(yàn)證的主要技術(shù)包括模型驗(yàn)證和定理證明。
形式化驗(yàn)證方法主要可以分為三種:定理證明、模型檢測和等價(jià)性驗(yàn)證。定理證明的基本原理是選定一個(gè)數(shù)學(xué)邏輯體系,并用其中的公式來描述系統(tǒng)和系統(tǒng)性質(zhì)刻畫,然后在一定的數(shù)學(xué)邏輯體系中依據(jù)此體系的公理、定理、推導(dǎo)規(guī)則和系統(tǒng)描述公式,考察其能否推導(dǎo)出系統(tǒng)的性質(zhì)刻畫公式,如果可以則驗(yàn)證成功。
現(xiàn)有的航空電子系統(tǒng)中形式化驗(yàn)證中應(yīng)用到了pvs語言,用于航空電子微處理器aamp5的規(guī)格和驗(yàn)證,對209條aamp5指令中的108條進(jìn)行了規(guī)格,驗(yàn)證了11個(gè)有代表性的微代碼。在現(xiàn)有的航空電子系統(tǒng)形式化驗(yàn)證中還沒有基于coq的描述。
原型驗(yàn)證系統(tǒng)(pvs)是支持工具和自動(dòng)定理證明器集成的規(guī)范語言。pvs基于一個(gè)內(nèi)核組成的一個(gè)擴(kuò)展的church的類型的依賴類型的理論,從根本上是一個(gè)經(jīng)典類型的高階邏輯。pvs定理證明器提供強(qiáng)大的原始推理過程的集合,其在后續(xù)的演算框架中在用戶指導(dǎo)下交互地應(yīng)用。原始推論包括命題和量詞規(guī)則,歸納,重寫,使用用于相等和線性算法的決策過程的簡化,數(shù)據(jù)和謂詞抽象以及符號模型檢查。這些基本推理的實(shí)現(xiàn)針對大型證明進(jìn)行了優(yōu)化:在pvs語言特征和證明者之間存在協(xié)同交互,使得與術(shù)語相關(guān)聯(lián)的類型信息被推理機(jī)制利用,并且相反地,證明者中的自動(dòng)化有助于自動(dòng)地釋放tcc。校對產(chǎn)生可以編輯,附加到其他公式并重新運(yùn)行的腳本。這允許許多類似的定理被有效地證明,允許證據(jù)經(jīng)濟(jì)地調(diào)整以跟隨需求或設(shè)計(jì)的變化,并且鼓勵(lì)開發(fā)可讀證據(jù)。pvs包括用于關(guān)系mu演算的基于bdd的判定過程,從而提供定理證明和ctl模型檢驗(yàn)之間的實(shí)驗(yàn)積分。pvs最近已經(jīng)擴(kuò)展到使用yicessmt解算器作為一個(gè)endgame證明器和一個(gè)無限狀態(tài)有界模型檢查器,用于評估地面pvs表達(dá)式的pvsio框架,以及可以在校驗(yàn)期間使用的隨機(jī)測試功能。
coq是一個(gè)正式的證明管理系統(tǒng)。它提供了一種形式語言來寫入數(shù)學(xué)定義,可執(zhí)行算法和定理以及用于機(jī)器檢查證明的半交互式開發(fā)的環(huán)境。典型的應(yīng)用包括對編程語言(例如compcert編譯器認(rèn)證項(xiàng)目或bedrock驗(yàn)證的低級編程庫)的屬性的認(rèn)證,數(shù)學(xué)的形式化(例如feit-thompson定理的完全形式化)教學(xué)等。coq實(shí)現(xiàn)了稱為gallina的程序規(guī)范和數(shù)學(xué)高級語言,該語言基于稱為感應(yīng)建構(gòu)的微積分的表達(dá)性形式語言,其本身組合了高級邏輯和豐富類型的函數(shù)編程語言。通過本地語言的命令,coq允許:定義可以有效評估的函數(shù)或謂詞;狀態(tài)數(shù)學(xué)定理和軟件規(guī)范;交互地開發(fā)這些定理的形式證明;通過相對較小的認(rèn)證“內(nèi)核”對這些證明進(jìn)行機(jī)器檢查;以將已認(rèn)證的程序提取到objectivecaml,haskell或scheme等語言。作為證明開發(fā)系統(tǒng),coq提供交互式證明方法,決策和半決策算法,以及用于讓用戶定義自己的證明方法的策略語言??梢耘c外部計(jì)算機(jī)代數(shù)系統(tǒng)或定理證明器連接。作為數(shù)學(xué)形式化或程序開發(fā)的平臺,coq為高級符號,隱式內(nèi)容和各種其他有用的宏提供了支持。
技術(shù)實(shí)現(xiàn)要素:
[發(fā)明目的]:針對上述背景技術(shù)的不足,提供了基于coq的航空電子系統(tǒng)形式化驗(yàn)證方法,用coq驗(yàn)證航空電子系統(tǒng)的狀態(tài)轉(zhuǎn)移一致性問題。補(bǔ)充了現(xiàn)有技術(shù)中應(yīng)用coq語言形式化驗(yàn)證的空白,也解決了沒有通用描述方法的問題。
[技術(shù)方案]:本發(fā)明方案主要包括以下內(nèi)容:
1)利用定理證明輔助工具coq結(jié)合規(guī)范要求建立系統(tǒng)各個(gè)模塊的狀態(tài)模型;
2)結(jié)合步驟1)中的系統(tǒng)模塊狀態(tài)模型,建立狀態(tài)轉(zhuǎn)移規(guī)則;
3)結(jié)合步驟1)和步驟2)建立模塊的一致性規(guī)則,用來判斷模塊初始狀態(tài)和模塊轉(zhuǎn)移之后的狀態(tài)是否一致;
4)結(jié)合步驟2)和步驟3)列舉出所有可能出現(xiàn)的狀態(tài)和操作,利用狀態(tài)轉(zhuǎn)移規(guī)則得到相應(yīng)的轉(zhuǎn)移后的狀態(tài);
5)結(jié)合步驟3)和步驟4)對航空電子系統(tǒng)形式化規(guī)范進(jìn)行一致性驗(yàn)證。
在步驟1)中,建立模型狀態(tài)的規(guī)范需要分別建立事件規(guī)范和狀態(tài)規(guī)范,最后將完成的各個(gè)規(guī)范匯總。一般的,可基于coq對事件做出如下形式的規(guī)范:
inductiveevents:type:=
|event1|event2|event3|…|eventn.
對軟硬件子模塊的狀態(tài)做出如下形式的規(guī)范:
inductivesoftware_or_hardware_work_state:type:=
|state1|state2|state3|…|staten.
最后的匯總可使用coq中的record關(guān)鍵字建立記錄類型,匯總已有的時(shí)間規(guī)范和軟硬件子模塊規(guī)范為系統(tǒng)狀態(tài)規(guī)范,其中基于coq每個(gè)子狀態(tài)有如下規(guī)范形式:
software_or_hardware1:software_or_hardware_work_statex;
結(jié)合步驟1)即可建立系統(tǒng)狀態(tài)的轉(zhuǎn)移規(guī)范,在建立轉(zhuǎn)移規(guī)范之前,首先要確定系統(tǒng)的初始狀態(tài),基于coq,可以對初始化狀態(tài)的規(guī)則做出如下形式的規(guī)范:
definitioninit(st:states):states:=
matchstwith
|_=>
build_states(software_or_hardware_work_statex1)(software_or_hardware_work_statex2)…(software_or_hardware_work_statexn)
end.
在初始化系統(tǒng)狀態(tài)后即可依次對各個(gè)軟硬件子模塊的轉(zhuǎn)移制定規(guī)范,基本思想為:在航電系統(tǒng)中,不同的事件會導(dǎo)致系統(tǒng)狀態(tài)發(fā)生改變。這些事件使系統(tǒng)從當(dāng)前狀態(tài)(sc)轉(zhuǎn)換到新狀態(tài)(sn):
sc->sn
箭頭表示轉(zhuǎn)換函數(shù)nextstate,是當(dāng)前狀態(tài)(sc)和事件(ev)的函數(shù):
sn=nextstate(sn,ev)
其中對于軟硬件子模塊狀態(tài)在一個(gè)事件觸發(fā)后的轉(zhuǎn)移規(guī)則基于coq可以做出如下形式的規(guī)范:
在完成各個(gè)軟硬件子模塊狀態(tài)的轉(zhuǎn)移規(guī)則的規(guī)范后,即可匯總這些規(guī)范為一個(gè)統(tǒng)一的系統(tǒng)狀態(tài)轉(zhuǎn)移規(guī)范nextstate以便后面的形式化驗(yàn)證。通過匹配觸發(fā)事件的方式,構(gòu)建系統(tǒng)狀態(tài)的轉(zhuǎn)移規(guī)則,其中基于coq,系統(tǒng)狀態(tài)轉(zhuǎn)移規(guī)則有如下形式:
結(jié)合步驟1)和步驟2),即可依據(jù)需求建立相應(yīng)的一致性規(guī)范,其中基于coq,通過匹配軟硬件子模塊并判斷其工作狀態(tài),系統(tǒng)狀態(tài)一致性規(guī)則的判定有如下基本形式:
matchsoftware_or_hardwarex2stwith
|software_or_hardware_work_state1=>true_or_false
結(jié)合步驟3)即可對現(xiàn)有系統(tǒng)進(jìn)行形式化驗(yàn)證工作,基于coq有如下關(guān)鍵過程:
1.使用lemma關(guān)鍵字聲明要驗(yàn)證的有蘊(yùn)含關(guān)系的系統(tǒng)關(guān)系或規(guī)則
2.驗(yàn)證過程中使用induction策略,遍歷各個(gè)軟硬件子模塊可能出現(xiàn)的狀態(tài)
3.基于過程2,使用compute策略,自動(dòng)計(jì)算驗(yàn)證關(guān)系是否成立。若無失敗報(bào)錯(cuò),則驗(yàn)證完成,否則需要修改之前制定的規(guī)范?;赾oq,驗(yàn)證過程有如下形式:
lemmalemma:
forall(st:states),rule1st=true_or_false->rule2st=true_or_false.
proof.
intros.
inductionst0;
inductionsoftware_or_hardware10;
…
inductionsoftware_or_hardwaren0;
compute;
computeinh;
(discriminateh||trivial);
fail.
qed.
[有益效果]:提出了一種基于coq的航空電子模式控制系統(tǒng)形式化驗(yàn)證方法,首先提出了基于coq的航空電子系統(tǒng)建模方法,其次提出了基于coq針對模型建立相應(yīng)轉(zhuǎn)移規(guī)則的方法和一致性驗(yàn)證方法,最后通過遍歷各種可能情況完成對航空電子模式控制系統(tǒng)的形式化驗(yàn)證工作,填補(bǔ)了基于coq的航空電子模式控制系統(tǒng)形式化驗(yàn)證的空白。
附圖說明
圖1為本發(fā)明提出方法的航空電子模式控制系統(tǒng)形式化驗(yàn)證框架;
圖2為航空電子模式控制面板示意圖
具體實(shí)施方式
以下結(jié)合附圖和具體實(shí)例對本發(fā)明做具體的介紹。
如附圖1所示,此實(shí)施方法的過程是:建立系統(tǒng)規(guī)范、定義事件、定義狀態(tài)轉(zhuǎn)移函數(shù)的形式化規(guī)范、建立各模塊規(guī)范、定義初始狀態(tài)和輸入事件、自動(dòng)證明以進(jìn)行形式化驗(yàn)證,對于不滿足形式化驗(yàn)證結(jié)果的規(guī)范需要重新設(shè)定。參考《航空電子技術(shù)航空電子開發(fā)與實(shí)現(xiàn)(下)》一書中的航空電子模式控制面板示意圖,并基于coq構(gòu)造一個(gè)航空電子模式控制面板形式化驗(yàn)證示例,可以說明此實(shí)施方式有如下的具體實(shí)施過程:
1.模型狀態(tài)的規(guī)范
1.1.事件規(guī)范
系統(tǒng)的狀態(tài)代表該系統(tǒng)運(yùn)行屬性的集合。系統(tǒng)狀態(tài)表述的形式化要求決定哪些屬性對充分描述系統(tǒng)的運(yùn)行是必需的,然后選擇一個(gè)合適的形式來表示那些屬性。一般的,可基于coq對事件做出如下形式的規(guī)范:
inductiveevents:type:=
|event1|event2|event3|…|eventn.
其中events是事件統(tǒng)稱名,涵蓋event1、event2等子事件。
例如在該示例中,駕駛員通過按下模式按鍵或者向顯示器輸入預(yù)定的值來與模式控制面板進(jìn)行交互,故做出如下定義:
a)四個(gè)按鍵:att_cws,fpa_sel,alt_eng,cas_eng
b)按下四個(gè)按鍵的動(dòng)作:press_att_cws,press_cas_eng,press_alt_eng,press_fpa_sel
c)把數(shù)值輸入顯示器的動(dòng)作:input_alt,input_fpa,input_cas
d)模式控制面板從傳感器接收到的輸入:alt_reached,fpa_reached,alt_gets_near其中四個(gè)按鍵的定義與按鍵本身有如下對應(yīng)關(guān)系:
a)att_cws=>姿態(tài)控制輪調(diào)節(jié)
b)fpa_sel=>飛行航跡角選擇
c)alt_eng=>高度接通
d)cas_eng=>校正空速接通
這組事件用coq語言規(guī)定如下:
inductiveevents:type:=
|press_att_cws|press_cas_eng|press_fpa_sel|press_alt_eng
|input_alt|input_fpa|input_cas
|alt_gets_near|alt_reached|fpa_reached.
1.2.狀態(tài)規(guī)范
對于系統(tǒng)中的軟硬件,可對相應(yīng)的軟硬件工作狀態(tài)類型按需求做出規(guī)范,以便進(jìn)行接下來的驗(yàn)證工作。一般的,可基于coq對事件做出如下形式的規(guī)范:
inductivesoftware_or_hardware_work_state:type:=
|state1|state2|state3|…|staten.
其中software_or_hardware_work_state標(biāo)識軟硬件,其可以有state1、state2等工作狀態(tài)。
例如在該示例中,有模式面板維持著顯示器的狀態(tài)。顯示器通過狀態(tài)描述符來表明其值是預(yù)先選定值還是來自傳感器的實(shí)際讀數(shù)。用coq語言規(guī)定如下:
inductivedisp_status:type:=
|pre_selected|current.
示例中其他硬件狀態(tài)做類似的規(guī)范即可。
1.3.匯總狀態(tài)
在描述完成系統(tǒng)中各個(gè)軟硬件的工作狀態(tài)后,即可將各個(gè)軟硬件的狀態(tài)作為子狀態(tài),匯總到一個(gè)系統(tǒng)總體狀態(tài)states,在coq語言中可以用記錄類型來實(shí)現(xiàn),可基于coq對事件做出如下形式的規(guī)范:
其中states是系統(tǒng)狀態(tài)統(tǒng)稱,涵蓋了software_or_hardware1、software_or_hardware2等軟硬件的可選狀態(tài)類型(即1.2規(guī)范模式中定義過的狀態(tài)類型)software_or_hardware_work_statex,其中x表示與相應(yīng)的軟硬件相匹配的工作狀態(tài)類型標(biāo)號。
例如在該示例中,對系統(tǒng)中所有的軟硬件工作狀態(tài)定義完成后,即可用coq語言記錄類型進(jìn)行歸納,得到狀態(tài)描述符如下:
2.狀態(tài)轉(zhuǎn)移規(guī)則的規(guī)范
2.1.系統(tǒng)狀態(tài)的初始化
對系統(tǒng)狀態(tài)的初始化可以直接通過初始化規(guī)則產(chǎn)生一個(gè)被初始化過的狀態(tài)來實(shí)現(xiàn),可基于coq對事件做出如下形式的規(guī)范:
其中init標(biāo)識初始化規(guī)則,用match匹配整個(gè)系統(tǒng)狀態(tài)state(即不論當(dāng)前系統(tǒng)狀態(tài)是怎樣的,都進(jìn)行初始化操作),因?yàn)樵赾oq中不支持對已有的變量賦值,故產(chǎn)生一個(gè)新的滿足初始化形式的系統(tǒng)狀態(tài)作為新的系統(tǒng)狀態(tài),其中依次對系統(tǒng)狀態(tài)中的software_or_hardware1、software_or_hardware2等軟硬件子模塊重新填入新狀態(tài)software_or_hardware_work_statex1、software_or_hardware_work_statex2等作為初始化之后的新系統(tǒng)狀態(tài),即相當(dāng)于完成了初始化。
在該示例中,構(gòu)建了一個(gè)為狀態(tài)st賦初值的函數(shù):
2.2.子模塊狀態(tài)轉(zhuǎn)移規(guī)則
對于不同的航空電子系統(tǒng),會用到不同的軟硬件,因此具體的子模塊狀態(tài)轉(zhuǎn)移規(guī)則不盡相同,但制定轉(zhuǎn)移規(guī)范的模式相同,可基于coq對轉(zhuǎn)移規(guī)則做出如下形式的規(guī)范:
其中,translate標(biāo)明了該子模塊狀態(tài)轉(zhuǎn)移規(guī)則的名稱,在規(guī)則中對當(dāng)前系統(tǒng)狀態(tài)state中的某一個(gè)或多個(gè)軟硬件狀態(tài)進(jìn)行匹配,由于在coq中不支持對已有變量的重新賦值,因襲若成功匹配軟硬件狀態(tài),則通過build_states規(guī)則重新生成一個(gè)完成此次轉(zhuǎn)移之后的系統(tǒng)狀態(tài),其中依次對系統(tǒng)狀態(tài)中的software_or_hardware1、software_or_hardware2等軟硬件子模塊重新填入新狀態(tài)software_or_hardware_work_statex1、software_or_hardware_work_statex2等作為轉(zhuǎn)移之后的新系統(tǒng)狀態(tài)。
例如在該示例中,函數(shù)tran_att_cws描述當(dāng)駕駛員按下att_cws按鍵時(shí)系統(tǒng)會發(fā)生什么。必須要用包括所有可能系統(tǒng)狀態(tài)的方式來規(guī)范。根據(jù)英語規(guī)范,如果att_cws模式處于斷開狀態(tài),則按下該按鍵意味著接通這一模式。
在英語規(guī)范中,規(guī)定,“任一時(shí)刻只有att_cws,fpa_sel或cas_eng模式中的一個(gè)可被接通”。因此其他模式必定是engaged之外的其他狀態(tài)。這一假設(shè)意味著它們是被關(guān)閉的。
英語規(guī)范還規(guī)定,當(dāng)一個(gè)模式被解除時(shí)“顯示器應(yīng)回復(fù)到顯示當(dāng)前值”;“如果英按下姿態(tài)控制輪調(diào)節(jié)按鍵,而此時(shí)高度控制輪調(diào)整模式已經(jīng)被接通,那么該按鍵就被忽略”。
但是,英語規(guī)范沒有提出當(dāng)按下att_cws按鍵時(shí),預(yù)選的alt_eng顯示器或是預(yù)選的fpa_sel顯示器會是什么狀態(tài),然而形式化規(guī)范會明確指出,這些模式將被關(guān)閉。在相應(yīng)的模式關(guān)閉時(shí),如果顯示器不被改變,那么該模式可以用以下描述來規(guī)范:
2.3.系統(tǒng)狀態(tài)轉(zhuǎn)移規(guī)則
在航電系統(tǒng)中,不同的事件會導(dǎo)致系統(tǒng)狀態(tài)發(fā)生改變。這些事件使系統(tǒng)從當(dāng)前狀態(tài)(sc)轉(zhuǎn)換到新狀態(tài)(sn):
sc->sn
箭頭表示轉(zhuǎn)換函數(shù)nextstate,是當(dāng)前狀態(tài)(sc)和事件(ev)的函數(shù):
sn=nextstate(sn,ev)
在完成各個(gè)軟硬件子模塊狀態(tài)的轉(zhuǎn)移規(guī)則的規(guī)范后,即可匯總這些規(guī)范為一個(gè)統(tǒng)一的系統(tǒng)狀態(tài)轉(zhuǎn)移規(guī)范nextstate以便后面的形式化驗(yàn)證。nextstate規(guī)范可基于coq對規(guī)則作出如下形式的規(guī)范:
其中,nextstate是對所有軟硬件子模塊轉(zhuǎn)移規(guī)則的匯總規(guī)則,對于每一個(gè)接收到的事件event,與nextstate中的event1、event2等事件類型相匹配,若匹配到的事件類型有相應(yīng)的轉(zhuǎn)移規(guī)則,則轉(zhuǎn)而執(zhí)行相應(yīng)的狀態(tài)轉(zhuǎn)移規(guī)則,從而實(shí)現(xiàn)整個(gè)系統(tǒng)的狀態(tài)轉(zhuǎn)移。
例如在該示例中,定義完所有的軟硬件子模塊狀態(tài)轉(zhuǎn)移規(guī)則后,即可匯總為整個(gè)系統(tǒng)的狀態(tài)轉(zhuǎn)移規(guī)則nextstate?;赾oq可對規(guī)則做出如下形式的規(guī)范:
3.狀態(tài)一致性的規(guī)范
對于不同的航電系統(tǒng),由于系統(tǒng)軟硬件模塊以及相應(yīng)的狀態(tài)轉(zhuǎn)移規(guī)則的不同,其驗(yàn)證狀態(tài)一致性的規(guī)范也不盡相同。但一般的,制定規(guī)則的形式相同,可基于coq對狀態(tài)一致性的檢驗(yàn)規(guī)則做出如下形式的規(guī)范:
即對系統(tǒng)狀態(tài)state中需要檢驗(yàn)的軟硬件子模塊狀態(tài)依次進(jìn)行匹配,若匹配結(jié)果滿足一致性規(guī)則,則返回一個(gè)布爾值true表示當(dāng)前狀態(tài)state一致,否則返回布爾值false表示當(dāng)前狀態(tài)state無效。
在該示例中,模式控制面板的英語規(guī)范中有幾個(gè)語句用來描述系統(tǒng)全面的運(yùn)行狀態(tài)。例如,“在任何時(shí)候應(yīng)接通三個(gè)模式att_cws,fpa_sel或alt_eng中的一個(gè)”。這個(gè)語句可以形式化并且可以被證明:不論出現(xiàn)什么樣的事件結(jié)果,總是適用于系統(tǒng)。該特性可被形式化如下:
4.系統(tǒng)形式化驗(yàn)證過程
狀態(tài)和規(guī)則定義完成后,即可開始形式化驗(yàn)證工作。在coq中可應(yīng)用證明策略induction和compute完成主要的驗(yàn)證工作,一般的,對于命題式規(guī)則的蘊(yùn)含關(guān)系驗(yàn)證,驗(yàn)證一個(gè)命題成立的情況下另一個(gè)命題也要成立,可基于coq對形式化驗(yàn)證過程做出如下形式的規(guī)范:
lemmalemma:
forall(st:states),rule1st=true_or_false->rule2st=true_or_false.
proof.
intros.
inductionst0;
inductionsoftware_or_hardware10;
inductionsoftware_or_hardware20;
inductionsoftware_or_hardware30;
…
inductionsoftware_or_hardwaren0;
compute;
computeinh;
(discriminateh||trivial);
fail.
qed.
其中,對于要驗(yàn)證蘊(yùn)含關(guān)系的規(guī)則rule1和rule2,在證明過程中使用induction證明策略,展開software_or_hardware10、software_or_hardware20等軟硬件子模塊的狀態(tài),進(jìn)行遍歷匹配,并用compute策略自動(dòng)計(jì)算已經(jīng)展開帶入了各個(gè)軟硬件子模塊狀態(tài)的系統(tǒng)狀態(tài),若無報(bào)錯(cuò),則說明驗(yàn)證成功,否則需要修改前面制定的規(guī)則,過程示例如圖1所示。
例如在該模塊中,證明一個(gè)有效狀態(tài)經(jīng)過一個(gè)事件觸發(fā)后得到的轉(zhuǎn)移后事件仍是合法的,可用以下coq程序片段進(jìn)行驗(yàn)證:
lemmavalid_newst_to_nextst:
forall(event:events)(st:states),valid_statest=true->valid_state(nextstateeventst)=true.
proof.
intros.
inductionevent0;
inductionst0;
inductionatt_cws0;
inductioncas_eng0;
inductionfpa_sel0;
inductionalt_eng0;
inductionalt_disp0;
inductionfpa_disp0;
inductioncas_disp0;
inductionaltitude0;
compute;
computeinh;
(discriminateh||trivial).
qed。