抽象計算模型:在七狀態模型中截斷停止邊、計算可達集並區分停止、卡住與不終止

本頁導覽
  1. 目標與範圍
  2. 已知條件與符號
  3. 規則與來源
  4. 逐步主鏈
  5. 局部子步與引理
  6. 逐步反向審查
  7. 錯誤控制與反例
  8. 結論與限制
  9. 驗證及來源綁定

← 導讀目錄 · 原始 MKO

derivation-mko-computational-model-01 · production-20261019-adopted-96

目標與範圍

給定有限模型 (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。

已知條件與符號

  • set_operations_def
  • cartesian_product_def
  • subset_def
  • nat_induction
  • finite_counting_basics
  • G1 — S={s0,s1,s2,s3,s4,s5,s6},Init={s0},Halt={s3}(MKO 假設 a1:S 明示有限)。
  • G2 — 原始邊資料 E_raw={(s0,s1),(s0,s2),(s1,s3),(s1,s5),(s2,s4),(s4,s2),(s3,s6)}。
  • G3 — 執行約定(MKO 假設 a2 與第二段):分析前刪去所有從 Halt 狀態出發的邊,得到 Step。執行是以 ℕ 的一個起始段(有限或全部 ℕ)為索引的狀態序列 (t_i),t_0∈Init,相鄰兩項 (t_i,t_{i+1})∈Step;進入 Halt 即結束。有限執行若末狀態沒有 Step 後繼則稱為極大;有限極大執行的末狀態在 Halt 中稱為停止,不在 Halt 中稱為卡住;無窮執行也視為極大。可延伸的有限前綴仍是合法執行,但不能因尚未到 Halt 就當成全域終止性的反例;全域終止性以下量化從 Init 出發的極大執行。
  • S — 狀態集 {s0,s1,s2,s3,s4,s5,s6}
  • \mathrm{Init},\ \mathrm{Halt} — 初始狀態集與停止狀態集
  • E_{\mathrm{raw}} — 原始邊資料
  • \mathrm{Step} — 截斷後的轉移關係
  • \mathrm{Post}(s) — s 的後繼集 Step[{s}]
  • R_k — 第 k 輪可達集(至多 k 步)
  • \mathrm{Reach} — 從 Init 可達的狀態集

規則與來源

  • set_operations_def · prerequisite — 集合運算:x∈A∪B ⇔ x∈A 或 x∈B;x∈A∩B ⇔ x∈A 且 x∈B;x∈A∖B ⇔ x∈A 且 x∉B;在全集 U 中 Aᶜ=U∖A。
  • cartesian_product_def · prerequisite — 笛卡兒積:A×B 是所有有序對 (a,b)(a∈A、b∈B)的集合;(a,b)=(c,d) ⇔ a=c 且 b=d。
  • subset_def · prerequisite — 子集:A⊆B 表示 A 的每個元素都是 B 的元素,即 ∀x (x∈A⇒x∈B)。
  • nat_induction · prerequisite — 數學歸納原理:對從 n₀ 起的命題族 P(n),若 P(n₀) 成立,且對每個 n≥n₀ 都有 P(n)⇒P(n+1),則所有 n≥n₀ 都有 P(n)。
  • finite_counting_basics · prerequisite — 有限計數:互斥有限集合 A、B 有 |A∪B|=|A|+|B|;|A×B|=|A|·|B|;有限集之間存在雙射 ⇔ 元素個數相同。
  • numeric_evaluation · prerequisite — 明確整數或有理數算式的精確求值;可以獨立重算。
  • set_builder · prerequisite — 集合建構式:x∈{y∈A ∣ P(y)} 當且僅當 x∈A 且 P(x)。
  • set_extensionality · prerequisite — 集合相等:A=B 當且僅當 A⊆B 且 B⊆A,即兩者有相同元素。
  • exists_intro · prerequisite — ∃引入:若找到 a∈D 使 P(a) 成立,則 ∃x∈D, P(x)。
  • case_analysis · prerequisite — 分情況論證:若 P∨Q 成立,且 P⇒R、Q⇒R 都已證,則 R 成立。所有情況必須涵蓋全部可能。
  • quantifier_negation · prerequisite — 量詞否定:¬(∀x, P(x)) 等價於 ∃x, ¬P(x);¬(∃x, P(x)) 等價於 ∀x, ¬P(x)。
  • mko_computational_model_def · cited — 本條目的有限抽象模型為 (S,Init,Step,Halt),其中 Init,Halt⊆S、Step⊆S×S。執行從 Init 中狀態開始並沿 Step 前進;無後繼的 stuck 狀態不因而自動屬於 Halt。 · mko-computational-model
  • mko_relation_def · cited — 從 A 到 B 的二元關係 R 是 A×B 的子集合;關係像 R[C]={y∈B:存在 x∈C,使 (x,y)∈R}。 · mko-relation
  • reach_def · prerequisite — 可達性:狀態 s 從 Init 可達,若存在 k≥0 與狀態 u_0,u_1 到 u_k 的有限路徑,u_0∈Init、u_k=s,且每對相鄰狀態都在 Step 中(k=0 表示零步,即 s∈Init)。Reach 是所有可達狀態的集合。
  • L_fix · lemma — 令 R_0=Init,R_{k+1}=R_k∪Step[R_k]。則 (i) 對每個 k,R_k 恰是至多 k 步可達的狀態集;(ii) 若某個 m 使 R_{m+1}=R_m,則 Reach=R_m。

逐步主鏈

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)揭示了兩種風險。

局部子步與引理

S04.1 · induction_step

操作前

R_k

操作後

R_k=\{s\mid s\ \text{reachable in at most}\ k\ \text{steps}\}

條件:無

規則:nat_induction · 依賴:reach_def, nat_induction, set_operations_def

葉節點依據:nat_induction + set_operations_def + reach_def + mko_relation_def

對 k 歸納。k=0:零步可達恰是 Init=R_0。設對 k 成立。若 s 至多 k+1 步可達,則要嘛至多 k 步可達(在 R_k),要嘛路徑最後一步從某個至多 k 步可達的 u 走到 s,即 s∈Step[R_k]。反之 R_k 的元素至多 k 步可達,Step[R_k] 的元素由某個 u∈R_k 再走一步,至多 k+1 步可達。所以 R_{k+1} 恰是至多 k+1 步可達的集合,證得 (i)。

S04.2 · implies

操作前

R_{m+1}=R_m

操作後

\forall k\ge m,\ R_k=R_m;\ \mathrm{Reach}=\textstyle\bigcup_k R_k=R_m

條件:無

規則:nat_induction · 依賴:S04.1, nat_induction

葉節點依據:nat_induction + set_extensionality + set_operations_def

若 R_{m+1}=R_m,則 R_{m+2}=R_{m+1}∪Step[R_{m+1}]=R_m∪Step[R_m]=R_{m+1}=R_m,依歸納對所有 k≥m 都有 R_k=R_m。每個可達狀態都有某個長度 k 的路徑,由 (i) 它在 R_k 中;R_k 遞增,所以它在 R_{max(k,m)}=R_m 中。反之 R_m 的元素都可達。故 Reach=R_m,證得 (ii)。

逐步反向審查

  • S13 · premise_audit · S03, S12 — 此步只指出尚未窮盡可達圖的深度受限觀察,不能僅憑未見反例推出所有極大執行終止;不否定完整有限圖證書,也不宣稱一般程式有終止判定法。
  • S12 · premise_audit · S09, S10, quantifier_negation — 否定全稱只需一個反例;這裡有兩種不同性質的反例,分別對應 MKO 第三段的兩種終止性風險。
  • S11 · premise_audit · G3, S02, G1 — 每條 trace 只需指出一個違反的條件即可排除。
  • S10 · premise_audit · G3, S02, case_analysis — 情況劃分必須涵蓋所有 n:0、正奇數、正偶數,三者互斥且窮盡。索引恆等式 (2k+2)+1=2(k+1)+1 由 N5 作一次多項式恆等式核對。
  • S09 · premise_audit · G3, S02, S07 — 卡住的判定需要兩件事:沒有後繼,且不在 Halt。
  • S08 · premise_audit · G3, S02 — 合法性的三個條件逐一檢查。一條停止執行不表示所有執行都停止(非確定性)。
  • S07 · premise_audit · S03, S05, G1, mko_computational_model_def — 分類只用 Halt 的給定列表與後繼表,不由「沒有後繼」推出屬於 Halt。
  • S06 · premise_audit · G2, S02, S05 — 此步只顯示截斷前後結果不同,用來說明 S02 的必要性;不把 E_raw 的結果當作模型的結論。
  • S05 · premise_audit · S03, L_fix — 每輪都使用完整的後繼表;停止判定是集合等式 R_3=R_2(N3、N4 重算大小)。
  • S04.2 · premise_audit · S04.1, nat_induction, set_extensionality — 論證需要 R_k 遞增(由定義 R_{k+1}⊇R_k)與 (i)。
  • S04.1 · premise_audit · reach_def, nat_induction, set_operations_def, mko_relation_def — 兩個包含方向都在歸納步中證明;基底用到零步路徑。
  • S04 · premise_audit · L_fix, reach_def — 停止條件必須是 R_{m+1}=R_m 這個集合等式,不是「某輪沒有看到新的循環」之類的觀察。
  • S03 · premise_audit · S02, mko_relation_def — 六條邊恰好各被歸到其起點一次,2+2+1+1=6 與邊數一致(N2)。
  • S02 · premise_audit · G3, set_operations_def — 需要逐條檢查起點是否在 Halt;N1 重算邊數 7−1=6。
  • S01 · premise_audit · G1, G2, subset_def, cartesian_product_def — 每個元素與每條邊都逐一檢查;此步不推出任何執行性質。

錯誤控制與反例

沒有外出邊不等於停止

MKO 指出的誤解是把無外出邊自動叫做 halt。s5 沒有後繼,但不在 Halt 中,所以 (s0,s1,s5) 是卡住,不是停止(S07、S09)。是否停止只由 Halt 的給定列表決定。

未窮盡的有限前綴不足以斷言終止

深度 1 的探索未顯示循環 s2→s4→s2 或卡住的 s5,但不終止的極大執行確實存在(S12、S13)。尚未窮盡可達圖時,沒有看到反例不等於終止證明。完整有限可達圖可用循環與非 Halt 死端檢查判定;一般程式仍需要適當證明方法。

先截斷停止狀態的外出邊

原始資料含 (s3,s6)。若不截斷,s6 會被誤算為可達,(s0,s1,s3,s6) 會被誤認為合法(S06、S11)。MKO 假設 a2 要求在分析前刪去這些邊。

  • s5 沒有後繼,所以 s5 是停止狀態 → reject — Halt={s3};s5 是卡住狀態,不是停止狀態。
  • (s0,s1,s3,s6) 的每對相鄰狀態都在原始資料中,所以它是合法執行 → reject — 進入 s3∈Halt 時執行即結束,(s3,s6) 已被截斷。
  • 探索到深度 1 沒有發現循環,所以每條執行都終止 → reject — 從 s0 出發後在 s2 與 s4 之間無窮交替的序列是無窮執行,(s0,s1,s5) 是卡住執行。
  • s6 可達,因為資料中有 (s3,s6) → reject — 截斷後沒有任何進入 s6 的邊,Reach={s0,s1,s2,s3,s4,s5}。

結論與限制

截斷後 Step 有 6 條邊;Reach={s0,s1,s2,s3,s4,s5},s6 不可達。s3 是唯一可達的停止狀態,s5 是卡住狀態(沒有後繼但不在 Halt),{s2,s4} 是可達的非停止循環。(s0,s1,s3) 停止,(s0,s1,s5) 卡住,s0 之後在 s2、s4 間無窮交替的序列是無窮執行;(s0,s3)、(s1,s3)、(s0,s1,s3,s6) 都不合法。所以並非所有從 Init 出發的極大執行都停止,深度 1 的探索看不出這一點。

  • 確定性與非確定性模型、極大執行、公平性與有效編碼的分層模型(MKO formal next)未在此建立;本稿只處理一個明示的有限模型。

驗證及來源綁定

5 個本稿宣告算術檢查;只支持所列算式。

  • source commit: b28a5edbd46279b1db2a3f3f48bb3f447e18899f
  • adopted source SHA-256: 4e735eff3b7dce6a70f861ddcd8dc409e5a688e22cfd99ecfa7115e5ad0c3ebc
  • original source SHA-256: e947537df405a61ccf81d4f1a305ce5e409796bc956b63e5b8517923dab8e201
  • Lean: NOT_RUN · independent AI: NOT_MEASURED

同源完整 JSON(含公式、AST、反控制與修訂記錄)