逐步主鏈
S01 · definition
操作前
d=\gcd(a,b)
操作後
d\mid a\ \land\ d\mid b\ \land\ \forall c\in\mathbb{N}\,(c\mid a\land c\mid b\Rightarrow c\mid d)條件:無
規則:mko_gcd_def · 依賴:G1, mko_gcd_def
葉節點依據:mko_gcd_def + def_unfold
依 MKO,gcd 由兩部分刻畫:d 是公因數;每個公因數都整除 d。「最大」是以整除關係表達,不是以數值大小。互質表示 gcd=1。
S02 · implies
操作前
d,\ d'\ \text{both satisfy S01 for}\ (a,b)操作後
d=d'
條件:無
規則:L_dvd_antisymm · 依賴:S01, L_dvd_antisymm
葉節點依據:mko_dvd_def + exists_elim + order_basics
d′ 是公因數,而 d 的刻畫說每個公因數都整除 d,所以 d′∣d;對稱地 d∣d′。依引理 L_dvd_antisymm(S02.1、S02.2 證明),d=d′。所以只要存在,gcd 就唯一,可以稱為「the」gcd。
S03 · implies
操作前
(x,0)
操作後
x\ \text{satisfies S01 for}\ (x,0),\ \text{so}\ \gcd(x,0)=x條件:無
規則:dvd_basic · 依賴:S01, dvd_basic
葉節點依據:dvd_basic + and_intro_elim
x∣x 且 x∣0(dvd_basic),所以 x 是公因數;若 c∣x 且 c∣0,當然 c∣x。所以 x 滿足刻畫,依 S02 它就是 gcd(x,0)。這包括 x=0:0 滿足 (0,0) 的刻畫,所以 MKO 的約定 gcd(0,0)=0 與刻畫一致。
S04 · equivalent
操作前
x=yq+r,\ y>0
操作後
c\mid x\land c\mid y\iff c\mid y\land c\mid r
條件:y>0
規則:L_cd_step · 依賴:mko_dvd_def, L_cd_step
葉節點依據:distributive + order_basics + exists_intro
依引理 L_cd_step(S04.1、S04.2 證明),算法的一步不改變公因數集合:CD(x,y)=CD(y,r)。
S05 · equivalent
操作前
x=yq+r,\ y>0
操作後
d\ \text{satisfies S01 for}\ (x,y)\iff d\ \text{satisfies S01 for}\ (y,r)條件:y>0
規則:set_extensionality · 依賴:S01, S04
葉節點依據:set_extensionality + eq_replace
S01 的刻畫只透過公因數集合依賴輸入:「d∈CD 且 CD 中每個 c 都整除 d」。S04 說 CD(x,y)=CD(y,r),所以兩個刻畫完全相同。因此 gcd(x,y)=gcd(y, x mod y)。
S06 · implies
操作前
(84,36)
操作後
84=36\cdot 2+12,\ 0\le 12<36;\ (84,36)\mapsto(36,12)
條件:36>0
規則:division_algorithm · 依賴:G2, G3, division_algorithm
葉節點依據:division_algorithm + numeric_evaluation
第一步:36≠0,84 除以 36 得商 2、餘數 12(N1、N2),所以 (84,36) 換成 (36,12)。
S07 · implies
操作前
(36,12)
操作後
36=12\cdot 3+0;\ (36,12)\mapsto(12,0)
條件:12>0
規則:division_algorithm · 依賴:S06, division_algorithm
葉節點依據:division_algorithm + numeric_evaluation
第二步:12≠0,36=12·3+0(N3),所以 (36,12) 換成 (12,0)。第二個數為 0,算法停止,輸出 12。
S08 · implies
操作前
\gcd(12,0)=12
操作後
\gcd(84,36)=\gcd(36,12)=\gcd(12,0)=12
條件:無
規則:logic_chain · 依賴:S03, S05, S06, S07
葉節點依據:logic_chain + eq_refl_symm_trans
由 S03,12 是 gcd(12,0)。S05 用於 S07 的一步(36=12·3+0)得 12 也滿足 (36,12) 的刻畫;再用於 S06 的一步(84=36·2+12)得 12 滿足 (84,36) 的刻畫。所以 gcd(84,36)=12(N4 為獨立重算)。
S09 · implies
操作前
(x,y)\mapsto(y,\,x\bmod y),\ y>0
操作後
\text{the algorithm stops after finitely many steps}條件:無
規則:well_ordering · 依賴:G2, division_algorithm, well_ordering
葉節點依據:well_ordering + division_algorithm + contradiction
每一步把第二個數 y 換成餘數 r,且 0≤r<y。若算法永不停止,第二個數會形成一個無窮嚴格遞減的自然數列;它的值集合非空,卻沒有最小元素(每個值之後都有更小的值),與良序原理矛盾。所以算法必在有限步後到達第二個數為 0,步數不超過起始的 y。本例的第二個數 36、12、0 嚴格遞減。
S10 · implies
操作前
d=12
操作後
12\mid 84,\ 12\mid 36,\ (c\mid 84\land c\mid 36\Rightarrow c\mid 12)
條件:無
規則:mko_gcd_def · 依賴:S04, S06, S08
葉節點依據:mko_gcd_def + exists_intro + numeric_evaluation
直接驗證刻畫的兩部分:84=12·7、36=12·3(N5、N6),所以 12 是公因數;任一公因數 c,依 S04 的 ⇒ 方向(x=84、y=36、q=2、r=12)得 c∣12。例如 84 與 36 的公因數 1、2、3、4、6、12 都整除 12。
S11 · implies
操作前
6\mid 84,\ 6\mid 36
操作後
12\nmid 6,\ \text{so}\ 6\neq\gcd(84,36)條件:無
規則:mko_gcd_def · 依賴:S01, S10
葉節點依據:mko_gcd_def + order_basics + numeric_evaluation
84=6·14、36=6·6,所以 6 是公因數。但 12 也是公因數,而 12∤6:6=12·k 時,k=0 給 0、k≥1 給至少 12,都不是 6。刻畫的第二部分失敗,所以 6 不是 gcd。這正是 MKO 提醒的誤解:把任一共同因數稱為最大公因數。
S12 · implies
操作前
(8,15)
操作後
(8,15)\mapsto(15,8)\mapsto(8,7)\mapsto(7,1)\mapsto(1,0);\ \gcd(8,15)=1
條件:無
規則:division_algorithm · 依賴:G2, G3, S03, S05
葉節點依據:division_algorithm + logic_chain + numeric_evaluation
逐步:8=15·0+8 →(15,8);15=8·1+7 →(8,7);8=7·1+1 →(7,1);7=1·7+0 →(1,0)(N10 到 N13)。每步除數都大於 0。由 S03,gcd(1,0)=1,再依 S05 逐步回推,gcd(8,15)=1(N14 為獨立重算)。第一步只是交換次序,因為 8<15。
S13 · implies
操作前
\gcd(8,15)=1,\ 8=2\cdot 4,\ 15=3\cdot 5
操作後
8,15\ \text{coprime, neither prime}條件:無
規則:mko_gcd_def · 依賴:S12, mko_gcd_def
葉節點依據:mko_gcd_def + exists_intro + numeric_evaluation
依定義,gcd=1 即互質。8 有因數 2(2≠1、2≠8),15 有因數 3(3≠1、3≠15),所以兩者都不是質數。互質是兩數之間的關係,不要求兩數本身是質數(MKO 段落 2)。
S14 · implies
操作前
(0,1),\ (0,6),\ (0,0)
操作後
\gcd(0,1)=1,\ \gcd(0,6)=6,\ \gcd(0,0)=0
條件:無
規則:logic_chain · 依賴:G2, G3, S03, S05
葉節點依據:logic_chain + dvd_basic + numeric_evaluation
(0,1):0=1·0+0 →(1,0),gcd=1,所以 0 與 1 互質。(0,6):0=6·0+0 →(6,0),gcd=6≠1,不互質(2 同時整除 0 與 6)。(0,0):由 S03,0 滿足刻畫,與約定一致;注意每個自然數都整除 0,所以 (0,0) 沒有「數值上最大」的公因數,整除刻畫正是讓 0 成為自然答案的方式。