Safety and Liveness Properties
來自專欄霧雨魔法店45 人贊了文章
在程序運行時, 我們會特別在意程序的一些性質(Program properties), 例如程序正確, 程序停機, 無異常等等. 對於我們關心的程序性質, 將可以分為兩類:
- Safety Properties, 在程序運行中不會進入非預期的狀態(如非法調用參數, 數組下標越界等運行錯誤).
- Liveness Properties, 在程序運行中預期狀態一定會到達(如停機, 獲取資源請求一定有返回結果等等).
下面將介紹程序性質的拓撲結構, 最後展示對於任意程序性質, 均可將其分解為其Safety分量(safety component)與Liveness分量(liveness component)的交.
定義1: 轉移系統(transition system)
轉移系統由一個狀態集合 與轉移關係 構成, 形如 .
其中狀態表示程序執行的當前狀態, 一般由當前執行程序位置(指令指針)與程序符號值(內存空間)構成. 轉移關係由程序語義定義.
定義2: 軌跡(trace)
( 為 的長度)
顯然 , 其中 稱為trace.
定義3: 拼接(concatenation), 前綴(prefix), 後綴(suffix), 拓展(extension)
對於 , , , 記 為 與 的拼接.
對於 , 記 .
若 則稱 為 的前綴, 為 的後綴, 記作 , 稱 為 的拓展, 記作 .
空串為 , 其中有 , .
定義4: Prefix與Extension Closed
令
- 若 有 , 則稱 為prefix closed.
- 若 有 , 則稱 為extension closed.
定義5: Limit Closed與Finite Witnesses
令
- 若 , 對於任意有限長度 均滿足 那麼有 , 則稱 為limit closed.
- 若 , 存在有限長度 使得 , 則稱 為finite witnesses.
命題1: 為prefix closed(extension closed)集, 則 為extension closed(prefix closed)集.
證明:
若 為非extension closed集, 則 即 . 因為 為prefix closed, 故 . 矛盾, 故 為extension closed集.
類似地, 若 為extension closed集, 則 為prefix closed集.
命題2: 為limit closed(finite witnesses)集, 則 為finite witnesses(limit closed)集.
證明:
若 為非finite witnesses集, 則 ( 長度有限) 即 . 因為 為limit closed, 故 . 矛盾, 故 為finite witnesses集.
類似地, 若 為finite witnesses集, 則 為limit closed集.
定義6: Topology space on :
為開集族(open sets), .
命題3: 為開集族
證明:
? , 其中 .
? , 其中 .
? , , 有 , 其中 .
? , 定義 , 類似地定義 .
因此有 , 設 , 那麼
.
故 為 上的一個拓撲.
引理1: 為閉集當且僅當:
若對於任意有限長度 存在 使得 , 那麼 .
證明:
若 為閉集, 則存在 滿足 , 若 , 那麼 , 存在長度有限前綴 , 有 即 , 故逆否命題 成立.
令 , 顯然 . 若 則有 , 那麼 故 即 , . 因此 為開集, 即 為閉集.
命題4: open and closed set
令
- 為閉集當且僅當 為prefix closed與limit closed.
- 為開集當且僅當 為extension closed與finite witnesses.
證明:
? 若 為閉集, 對於任意 , 設 為 的任意有限前綴 , 有 , 根據引理1得 即 為prefix closed.
由引理1直接可得 為limit closed.
若 為prefix closed與limit closed, 若 即 , 由命題1和命題2得, 為extension closed與finite witnesses, 由finite witnesses存在有限長度 使得 , 又由extension closed對於任意 均有 即 , 故其逆否命題 成立. 由引理1得 為閉集.
? 為開集當且僅當 為extension closed與finite witnesses.
為prefix closed與limit closed. (命題1和命題2)
為閉集 (proved above)
為開集
命題5: closure與interior
令
- .
- .
證明:
? 令 , 若對於任意有限長度 存在 使得 , 由 的定義存在 使得 , 故 由引理1得 為閉集.
令 , 為閉集, 設 那麼有 , 又由 為閉集, 根據引理1得 即 .
故 為 的closure.
? 令 , 設 那麼 , 由 的定義 , 故 且 為開集, 因此 為開集.
令 , 為開集, 故存在 滿足 , 因此 , 故 , 根據 定義有 即 .
故 為 的interior.
定義7: safety property與liveness property
- 若 則稱 為safety property.
- 若 則稱 為liveness property.
注: safety property的含義為若某trace違反safety property則能通過其有限長度的前綴識別. liveness property的含義為對於任意的有限長度的trace, 總存在拓展滿足liveness property.
命題6: 為safety property當且僅當 為閉集.
證明:
為safety property
命題7: 為liveness property當且僅當 稠密.
證明:
為liveness property. 設 , 為閉集. 若存在 即 , 由引理1得存在有限長度 對於任意 使得 . 又由 為liveness property, 故存在 滿足 , 矛盾. 故 即 , 稠密.
稠密. 若 不為liveness property, 則存在有限長度 使得 均有 , 因此 即 , 又 為閉集, 而 稠密, 故 , 即 不存在, 矛盾. 故 為liveness property.
定義8: safety component與liveness component
- .
- .
引理2: 為Topology space, 則 稠密.
證明:
設 , 為閉集.
又由 故
為閉集故 亦為閉集, 那麼有 即 , . 因此 稠密.
推論1: 為safety property當且僅當 .
證明:
由命題6得, 為safety property當且僅當 為閉集, 故 .
推論2: 對於任意 , 為safety property.
證明:
為閉集, 由命題6得, 為safety property.
推論3: 為liveness property當且僅當 .
證明:
由命題7得, 為liveness property當且僅當 稠密, 故 .
推論4: 對於任意 , 為liveness property.
證明:
由引理2得其稠密, 由命題7得, 為liveness property.
引理3: 為Topology space, 則
證明:
定理1: property decomposition
對於任意性質 , 其均可分解為safety component與liveness component的交.
證明:
一個例子:
程序total correctness可以分解為partial correctness(safety component)與termination(liveness component).
- 為初始狀態.
- 為終止狀態.
- 為partial correctness relation.
- 為total correctness relation.
partial correctness:
termination:
total correctness:
證明:
好久都沒寫新文章啦, 最近了解了一下程序性質的拓撲結構覺得還蠻有趣的, 所以來寫個小文章介紹一下. 有機會將來再深入介紹一下在此之上與Linear temporal logic(LTL)的一些有趣的性質, 在model checking中有著比較多的應用.
謝謝大家的閱讀~
推薦閱讀: