目標與範圍
給定有限模型 (S,Init,Step,Halt):S={s0,s1,s2,s3,s4,s5,s6},Init={s0},Halt={s3},原始邊資料 {(s0,s1),(s0,s2),(s1,s3),(s1,s5),(s2,s4),(s4,s2),(s3,s6)}。依 MKO 規則截斷停止狀態的外出邊,以不動點迭代算出可達集,找出停止狀態、卡住狀態與可達循環,給出合法的停止、卡住與無窮執行,排除三條不合法的 trace,並說明為何尚未窮盡可達圖的有限深度探索,不能僅憑未見反例就斷言所有極大執行終止。
在 MKO 範圍內工作:S 是明示有限狀態集,Step 是可具非確定性的有向關係(假設 a1);到達 Halt 即停止,分析前截斷其外出邊(假設 a2)。不處理有效編碼、公平性或確定性與非確定性模型的分層,不改動 canonical MKO 或英文 edition。
逐步主鏈
S01 · implies
操作前
\mathrm{Init}=\{s_0\},\ \mathrm{Halt}=\{s_3\},\ E_{\mathrm{raw}}操作後
\mathrm{Init},\mathrm{Halt}\subseteq S,\ E_{\mathrm{raw}}\subseteq S\times S條件:無
規則:subset_def · 依賴:G1, G2
葉節點依據:subset_def + cartesian_product_def + mko_computational_model_def
先檢查資料是否構成 MKO 的模型:s0 與 s3 都在 S 中,所以 Init、Halt⊆S;E_raw 的七個有序對,兩個分量都在 S 中,所以 E_raw⊆S×S。有序對保留方向,例如 (s2,s4) 與 (s4,s2) 是兩條不同的邊。
S02 · implies
操作前
E_{\mathrm{raw}}操作後
\mathrm{Step}=E_{\mathrm{raw}}\setminus\{(s_3,s_6)\}=\{(s_0,s_1),(s_0,s_2),(s_1,s_3),(s_1,s_5),(s_2,s_4),(s_4,s_2)\}條件:\mathrm{Halt}=\{s_3\}
規則:set_operations_def · 依賴:S01, G3
葉節點依據:set_operations_def + numeric_evaluation
依 MKO 假設 a2,刪去所有從 Halt 狀態出發的邊。七條邊中只有 (s3,s6) 的起點 s3∈Halt,刪去後剩 6 條。資料中雖有 (s3,s6),但模型規定到達 s3 即停止,這條邊不屬於執行語義。
S03 · implies
操作前
\mathrm{Post}(s)=\mathrm{Step}[\{s\}]操作後
\mathrm{Post}:\ s_0\mapsto\{s_1,s_2\},\ s_1\mapsto\{s_3,s_5\},\ s_2\mapsto\{s_4\},\ s_4\mapsto\{s_2\},\ s_3,s_5,s_6\mapsto\varnothing條件:無
規則:mko_relation_def · 依賴:S02, mko_relation_def
葉節點依據:mko_relation_def + set_builder
對每個狀態收集 Step 中以它為起點的邊的終點。s0 與 s1 各有兩個後繼,所以模型是非確定性的;s3、s5、s6 沒有後繼。後繼表是之後所有計算的基礎。
S04 · theorem_application
操作前
R_0=\mathrm{Init},\ R_{k+1}=R_k\cup\mathrm{Step}[R_k]操作後
R_{m+1}=R_m\ \Rightarrow\ \mathrm{Reach}=R_m條件:S\ \text{finite}
規則:L_fix · 依賴:S03, reach_def
葉節點依據:nat_induction + set_operations_def + reach_def
可達性是從 Init 出發沿 Step 的零步或多步閉包(MKO 第一段)。套用引理 L_fix(在 S04.1、S04.2 證明):逐輪加入後繼,一旦某輪不再增加,當下的集合就是 Reach。因為 R_k 遞增且都在有限的 S 中,至多 |S|=7 輪後必定停止增加。
S05 · implies
操作前
R_0=\{s_0\}操作後
R_1=\{s_0,s_1,s_2\},\ R_2=\{s_0,s_1,s_2,s_3,s_4,s_5\},\ R_3=R_2\ \Rightarrow\ \mathrm{Reach}=R_2條件:無
規則:L_fix · 依賴:S03, S04
葉節點依據:set_operations_def + mko_relation_def + numeric_evaluation
R_1=R_0∪Post(s0)={s0,s1,s2}。R_2=R_1∪Post(s0)∪Post(s1)∪Post(s2)={s0,s1,s2}∪{s1,s2}∪{s3,s5}∪{s4}={s0,s1,s2,s3,s4,s5}。R_3 再加入 Post(s3)=∅、Post(s4)={s2}、Post(s5)=∅,沒有新狀態,R_3=R_2。依 L_fix,Reach=R_2,共 6 個狀態;s6 不可達。
S06 · implies
操作前
E_{\mathrm{raw}}[R_2]操作後
s_6\in E_{\mathrm{raw}}[R_2]\ \text{but}\ s_6\notin\mathrm{Reach}條件:無
規則:set_operations_def · 依賴:G2, S05
葉節點依據:set_operations_def + mko_relation_def
對照:若忘記截斷而直接用 E_raw,第 3 輪會因 (s3,s6) 加入 s6,得出「全部 7 個狀態可達」,並把 s3 當成還能繼續走的狀態。這與 MKO 假設 a2 衝突。正確分析中 s6 不可達,s3 是執行的終點。
S07 · implies
操作前
\mathrm{Reach}=\{s_0,s_1,s_2,s_3,s_4,s_5\}操作後
\mathrm{Reach}\cap\mathrm{Halt}=\{s_3\},\ \{s\in\mathrm{Reach}\setminus\mathrm{Halt}\mid\mathrm{Post}(s)=\varnothing\}=\{s_5\}條件:無
規則:set_builder · 依賴:S03, S05, G1
葉節點依據:set_builder + mko_computational_model_def
可達狀態中,在 Halt 裡的只有 s3。不在 Halt 中又沒有後繼的只有 s5:它是卡住狀態。s3 也沒有後繼,但它在 Halt 中,所以是停止,不是卡住;反過來,s5 沒有後繼並不使它成為停止狀態(MKO 敘述)。s0、s1、s2、s4 都有後繼。
S08 · implies
操作前
(s_0,s_1,s_3)
操作後
\text{legal execution that halts at}\ s_3條件:無
規則:mko_computational_model_def · 依賴:G3, S02
葉節點依據:mko_computational_model_def + exists_intro
檢查 trace (s0,s1,s3):首狀態 s0∈Init;(s0,s1)、(s1,s3)∈Step;末狀態 s3∈Halt,執行在此結束。這是一條合法的停止執行。
S09 · implies
操作前
(s_0,s_1,s_5)
操作後
\text{legal maximal execution, stuck at}\ s_5\notin\mathrm{Halt}條件:無
規則:mko_computational_model_def · 依賴:G3, S02, S07
葉節點依據:mko_computational_model_def + exists_intro
(s0,s1,s5):s0∈Init,(s0,s1)、(s1,s5)∈Step,所以合法;Post(s5)=∅,無法繼續,所以是極大執行;s5∉Halt,所以它卡住而沒有停止。
S10 · case_split
操作前
t_0=s_0,\ t_{2k+1}=s_2,\ t_{2k+2}=s_4\ (k\ge 0)操作後
\forall n\ge 0,\ (t_n,t_{n+1})\in\mathrm{Step},\ t_n\notin\mathrm{Halt}條件:無
規則:case_analysis · 依賴:G3, S02, G1
葉節點依據:case_analysis + nat_induction + mko_computational_model_def
定義以全部 ℕ 為索引的序列:t0=s0,奇數位 t_{2k+1}=s2,正偶數位 t_{2k+2}=s4。對每個 n 分三種情況檢查相鄰對:n=0 時 (s0,s2)∈Step;n=2k+1 時 (t_n,t_{n+1})=(s2,s4)∈Step;n=2k+2 時 n+1=2(k+1)+1,所以 t_{n+1}=s2,(s4,s2)∈Step。三種情況涵蓋所有 n≥0。序列的狀態都在 {s0,s2,s4} 中,與 Halt 不相交,所以執行永不結束:這是一條合法的無窮執行,來自可達的非停止循環 s2→s4→s2。
S11 · implies
操作前
(s_0,s_3),\ (s_1,s_3),\ (s_0,s_1,s_3,s_6)
操作後
\text{none is a legal execution}條件:無
規則:mko_computational_model_def · 依賴:G3, S02, G1
葉節點依據:mko_computational_model_def + quantifier_negation
三條不合法的 trace,各違反一個條件:(s0,s3) 中 (s0,s3)∉Step;(s1,s3) 的首狀態 s1∉Init;(s0,s1,s3,s6) 在進入 s3∈Halt 後還繼續,而 (s3,s6) 已被截斷,不在 Step 中(MKO 第二段:進入 Halt 就結束)。
S12 · implies
操作前
\text{stuck execution (S09)},\ \text{infinite execution (S10)}操作後
\neg(\text{every maximal execution from Init halts})條件:無
規則:quantifier_negation · 依賴:S09, S10
葉節點依據:quantifier_negation + exists_intro
「每條從 Init 出發的極大執行都停止」是全稱命題。S09 給出一條卡住的有限極大執行,S10 給出一條無窮極大執行;任一個都足以否定它。因此本模型不具全域終止性,儘管 S08 有一條停止執行。可延伸的有限前綴本身不算此全稱命題的反例。
S13 · implies
操作前
\text{prefixes of depth}\ 1:\ (s_0,s_1),\ (s_0,s_2)操作後
\text{no cycle or stuck state visible at depth 1, yet termination fails}條件:無
規則:quantifier_negation · 依賴:S03, S12
葉節點依據:quantifier_negation + mko_computational_model_def
只探索深度 1 時,看到的前綴只有 (s0,s1) 與 (s0,s2),其中尚未顯示循環或卡住狀態。若僅據此斷言「所有極大執行都終止」就錯了:S12 已給出反例。這裡否定的是尚未窮盡可達圖的觀察所作的推論,不是所有有限探索證書;完整探索有限可達圖並檢查循環與非 Halt 的死端,可以支持相應判定。本模型的完整可達圖(S05、S07、S10)揭示了兩種風險。