S01 · definition
操作前
a\equiv b\pmod n
操作後
a\bmod n=b\bmod n\quad(n>0)
條件:n>0
規則:mko_cong_def · 依賴:G1, G2, mko_cong_def
葉節點依據:mko_cong_def + def_unfold
依 MKO 的定義,同餘是在固定的同一個正模數下比較兩個餘數。它不是數值相等:兩數可以不同而同餘。
derivation-mko-modular-congruence-01 · production-20261019-adopted-96
依 MKO 定義(n>0,a≡b (mod n) ⇔ a mod n=b mod n):(1) 判定 100≡23 (mod 7);(2) 證明它等價於見證形式「存在自然數 k、l 使 a+nk=b+nl」,並給出 100 與 23 的見證;(3) 說明同餘是等價關係;(4) 證明加法與乘法保持同餘,並由 15≡1 (mod 7) 得 115≡24、1500≡23 (mod 7);(5) 以 2·3≡2·0 (mod 6) 說明不能無條件取消公因子;(6) 說明不同模數不能串接,並說明模數 0 被排除。
只處理自然數 a、b 與正模數 n(MKO 假設 a1、a2);餘數由帶餘除法定義。證明兩種定義等價、同餘是等價關係、加法與乘法保持同餘。取消律在 gcd(c,n)=1 時成立這一正面結果不在本稿證明。不處理負整數或模數 0;不改動 canonical MKO 或英文 edition。
division_algorithmdistributiveeq_refl_symm_transnumeric_evaluationG1 — a、b 是自然數,模數 n 是正自然數(MKO 假設 a1);本條目排除 n=0(MKO 假設 a2)。G2 — a mod n 是帶餘除法的餘數:唯一的 r 使 a=nq+r 且 0≤r<n;a 為自然數時商 q 也是自然數。G3 — 例子:模 7 的 100、23、15、1;模 6 的 2·3 與 2·0;模 7 與模 3 的 100、23、5。a\equiv b\pmod n — a 與 b 模 n 同餘a\bmod n — a 除以 n 的餘數,0≤a mod n<nk,\ l — 見證形式中的自然數n — 正模數division_algorithm · prerequisite — 帶餘除法:對整數 a 與正整數 b,存在唯一的整數 q、r 使 a=bq+r 且 0≤r<b。distributive · prerequisite — 分配律:u(v+w)=uv+uw;配合乘法交換律也有 (v+w)u=vu+wu。eq_refl_symm_trans · prerequisite — 等號的性質:u=u;若 u=v 則 v=u;若 u=v 且 v=w 則 u=w。numeric_evaluation · prerequisite — 明確整數或有理數算式的精確求值;可以獨立重算。def_unfold · prerequisite — 展開定義:把一個已定義的詞換成它的定義內容(或反向收回),命題的真假不變。add_comm · prerequisite — 加法交換律:u+v=v+u。add_assoc · prerequisite — 加法結合律:(u+v)+w=u+(v+w)。exists_intro · prerequisite — ∃引入:若找到 a∈D 使 P(a) 成立,則 ∃x∈D, P(x)。eq_congruence · prerequisite — 等式同用:若 u=v,對兩邊做同一個有定義的運算 f,得 f(u)=f(v)。只對一邊做運算不屬於此規則。mul_assoc · prerequisite — 乘法結合律:(uv)w=u(vw)。mul_comm · prerequisite — 乘法交換律:uv=vu(在交換的數系中,例如 ℤ、ℚ、ℝ、ℂ)。forall_elim · prerequisite — ∀消去(代入特例):若 ∀x∈D, P(x) 成立且 a∈D,則 P(a) 成立。mko_cong_def · cited — 對自然數 a、b 與正自然數 n,a≡b (mod n) 當且僅當 a mod n=b mod n;等價地,存在自然數 k、l 使 a+n·k=b+n·l。 · mko-modular-congruenceL_shift · lemma — 對 n>0 與自然數 x、m:(x+n·m) mod n=x mod n。L_witness · lemma — 對 n>0 與自然數 a、b:a mod n=b mod n ⇔ 存在自然數 k、l 使 a+nk=b+nl。L_add_mul · lemma — 若 a≡b (mod n) 且 c≡d (mod n),則 a+c≡b+d (mod n) 且 ac≡bd (mod n)。操作前
a\equiv b\pmod n
操作後
a\bmod n=b\bmod n\quad(n>0)
條件:n>0
規則:mko_cong_def · 依賴:G1, G2, mko_cong_def
葉節點依據:mko_cong_def + def_unfold
依 MKO 的定義,同餘是在固定的同一個正模數下比較兩個餘數。它不是數值相等:兩數可以不同而同餘。
操作前
100
操作後
100=7\cdot 14+2,\ 0\le 2<7,\ 100\bmod 7=2
條件:7>0
規則:division_algorithm · 依賴:G2, G3, division_algorithm
葉節點依據:division_algorithm + numeric_evaluation
7·14=98,100−98=2,且 0≤2<7(N1、N2)。依帶餘除法的唯一性,100 mod 7=2。
操作前
23
操作後
23=7\cdot 3+2,\ 23\bmod 7=2
條件:7>0
規則:division_algorithm · 依賴:G2, G3, division_algorithm
葉節點依據:division_algorithm + numeric_evaluation
7·3=21,23−21=2,0≤2<7(N3、N4),所以 23 mod 7=2。
操作前
100\bmod 7=2=23\bmod 7
操作後
100\equiv 23\pmod 7
條件:無
規則:mko_cong_def · 依賴:S01, S02, S03
葉節點依據:mko_cong_def + eq_refl_symm_trans
兩個餘數都是 2,依定義 100≡23 (mod 7),雖然 100≠23。
操作前
(x+nm)\bmod n
操作後
x\bmod n
條件:n>0
規則:L_shift · 依賴:G2, L_shift
葉節點依據:division_algorithm + distributive
加上 n 的自然數倍不改變餘數:依引理 L_shift(S05.1、S05.2 證明)。後面的等價與運算保持都靠它。
操作前
a\bmod n=b\bmod n
操作後
\exists k,l\in\mathbb{N}:\ a+nk=b+nl條件:n>0
規則:L_witness · 依賴:S01, L_witness
葉節點依據:division_algorithm + distributive + eq_refl_symm_trans
依引理 L_witness(S06.1、S06.2 證明),餘數定義與 MKO 的見證形式等價。見證形式的好處是全在自然數中,不必做減法。
操作前
100=7\cdot 14+2,\ 23=7\cdot 3+2
操作後
100+7\cdot 3=23+7\cdot 14=121;\quad 100+7\cdot 0=23+7\cdot 11
條件:無
規則:exists_intro · 依賴:S02, S03, S06
葉節點依據:exists_intro + numeric_evaluation
依 S06.1 的構造,k=3、l=14:100+21=121=23+98(N5)。另一組見證 k=0、l=11:100=23+77(N6)。見證不唯一。
操作前
\equiv\pmod n\ \text{for one fixed}\ n操作後
\text{reflexive, symmetric, transitive}條件:n\ \text{fixed}
規則:eq_refl_symm_trans · 依賴:S01, eq_refl_symm_trans
葉節點依據:eq_refl_symm_trans + def_unfold
在固定的 n 下,a≡b 就是 a mod n=b mod n,是餘數之間的等式。等號的自反、對稱、遞移直接給出 a≡a;a≡b ⇒ b≡a;a≡b 且 b≡c ⇒ a≡c。所以同餘在 ℕ 上是等價關係(MKO 段落 0)。
操作前
15=7\cdot 2+1,\ 1=7\cdot 0+1
操作後
15\equiv 1\pmod 7
條件:無
規則:mko_cong_def · 依賴:G3, division_algorithm
葉節點依據:division_algorithm + numeric_evaluation
15 mod 7=1(N7),1 mod 7=1,所以 15≡1 (mod 7)。
操作前
a\equiv b,\ c\equiv d\pmod n
操作後
a+c\equiv b+d,\ ac\equiv bd\pmod n
條件:n>0
規則:L_add_mul · 依賴:S05, L_add_mul
葉節點依據:distributive + division_algorithm + eq_refl_symm_trans
依引理 L_add_mul(S10.1、S10.2 證明),加法與乘法保持同一模數下的同餘。
操作前
100\equiv 23,\ 15\equiv 1\pmod 7
操作後
115\equiv 24,\quad 1500\equiv 23\pmod 7
條件:無
規則:forall_elim · 依賴:S04, S09, S10
葉節點依據:forall_elim + numeric_evaluation
套用 S10:100+15=115≡23+1=24,100·15=1500≡23·1=23 (mod 7)。逐項重算核對(MKO 段落 1):115=7·16+3、24=7·3+3,餘數都是 3;1500=7·214+2、23 mod 7=2,餘數都是 2(N8 到 N11)。
操作前
2\cdot 3\equiv 2\cdot 0\pmod 6
操作後
3\not\equiv 0\pmod 6
條件:無
規則:numeric_evaluation · 依賴:S01, G3
葉節點依據:numeric_evaluation + mko_cong_def
2·3=6,6 mod 6=0;2·0=0,0 mod 6=0,所以 2·3≡2·0 (mod 6)。但 3 mod 6=3≠0=0 mod 6,所以 3≢0 (mod 6)(N12、N13)。因此從 c·a≡c·b 直接取消 c 不合法;這裡 gcd(2,6)=2≠1(N14),正是 MKO 段落 2 所說要考慮 c 與 n 的最大公因數。
操作前
100\equiv 23\pmod 7,\ 23\equiv 5\pmod 3
操作後
100\not\equiv 5\pmod 7,\ 100\not\equiv 5\pmod 3
條件:無
規則:numeric_evaluation · 依賴:S04, S08, G3
葉節點依據:numeric_evaluation + mko_cong_def
23=3·7+2、5=3·1+2,所以 23≡5 (mod 3)(N15)。若誤把兩個不同模數的同餘串接,會得到 100≡5。但 100 mod 7=2≠5=5 mod 7(N17),100 mod 3=1≠2=5 mod 3(N16),兩個模數下都不成立。S08 的遞移性只對同一個 n 成立。
操作前
x=nq+r,\ 0\le r<n
操作後
x+nm=n(q+m)+r
條件:無
規則:distributive · 依賴:G2, distributive
葉節點依據:distributive + add_comm + add_assoc
寫 x=nq+r(G2)。則 x+nm=nq+nm+r=n(q+m)+r,q+m 是自然數。
操作前
x+nm=n(q+m)+r,\ 0\le r<n
操作後
(x+nm)\bmod n=r=x\bmod n
條件:n>0
規則:division_algorithm · 依賴:S05.1, division_algorithm
葉節點依據:division_algorithm
x+nm 已寫成 n·(自然數)+r 且 0≤r<n,依帶餘除法的唯一性,它的餘數就是 r,也就是 x mod n。S05.1 與 S05.2 合起來證得引理 L_shift。
操作前
a=nq+r,\ b=nq'+r
操作後
a+nq'=b+nq
條件:無
規則:distributive · 依賴:G2, distributive
葉節點依據:distributive + add_comm + add_assoc + exists_intro
(⇒ 方向)設共同餘數為 r:a=nq+r、b=nq′+r。則 a+nq′=nq+nq′+r=b+nq(N20 為恆等式核對)。取 k=q′、l=q,都是自然數。
操作前
a+nk=b+nl
操作後
a\bmod n=(a+nk)\bmod n=(b+nl)\bmod n=b\bmod n
條件:n>0
規則:L_shift · 依賴:S05
葉節點依據:eq_congruence + eq_refl_symm_trans + division_algorithm
(⇐ 方向)依 L_shift,a mod n=(a+nk) mod n;兩個相等的數有相同餘數;再依 L_shift,(b+nl) mod n=b mod n。S06.1 與 S06.2 合起來證得引理 L_witness。
操作前
a=nq_1+r,\ b=nq_2+r,\ c=nq_3+s,\ d=nq_4+s
操作後
(a+c)\bmod n=(r+s)\bmod n=(b+d)\bmod n
條件:無
規則:L_shift · 依賴:S05, G2, distributive
葉節點依據:distributive + add_comm + add_assoc + division_algorithm
設 a、b 的共同餘數為 r,c、d 的共同餘數為 s。則 a+c=n(q₁+q₃)+(r+s)、b+d=n(q₂+q₄)+(r+s)(N19)。依 L_shift,兩者的餘數都等於 (r+s) mod n,所以 a+c≡b+d。注意 r+s 可能 ≥n,所以要再取一次餘數,而不是直接說餘數是 r+s。
操作前
ac=(nq_1+r)(nq_3+s)
操作後
ac=n(nq_1q_3+q_1s+rq_3)+rs,\ (ac)\bmod n=(rs)\bmod n=(bd)\bmod n
條件:無
規則:L_shift · 依賴:S05, G2, distributive
葉節點依據:distributive + mul_assoc + mul_comm + division_algorithm
展開:(nq₁+r)(nq₃+s)=n(nq₁q₃+q₁s+rq₃)+rs(N18)。同理 bd=n(nq₂q₄+q₂s+rq₄)+rs。依 L_shift,兩者的餘數都等於 (rs) mod n,所以 ac≡bd。S10.1 與 S10.2 合起來證得引理 L_add_mul。
S13 · premise_audit · S08, numeric_evaluation — 具體反例;說明遞移性的前提「同一模數」不能省。S12 · premise_audit · S01, numeric_evaluation — 一個反例足以否定「無條件取消」;本稿不證明 gcd(c,n)=1 時取消合法。S11 · premise_audit · S10, forall_elim, numeric_evaluation — 這是一般結果的實例;直接重算只是核對,不取代 S10 的證明。S10.2 · premise_audit · S05, distributive — 只用分配律與 L_shift;沒有使用 L_add_mul 本身。S10.1 · premise_audit · S05, distributive — 只用 L_shift 與分配律;沒有使用 L_add_mul 本身。S10 · premise_audit · L_add_mul — 不宣稱反向:由 ac≡bd 不能推出 a≡b 或 c≡d(S12)。S09 · premise_audit · division_algorithm, mko_cong_def — 兩個餘數直接計算。S08 · premise_audit · S01, eq_refl_symm_trans — 遞移性要求兩個同餘式用同一個 n;不同模數的餘數不是同一種量(S13)。S07 · premise_audit · S06, exists_intro, numeric_evaluation — 存在性只需一組見證;這裡給兩組以示不唯一。S06.2 · premise_audit · S05, eq_congruence — 用到的是已證的 L_shift,不是 L_witness 本身。S06.1 · premise_audit · distributive, add_comm, exists_intro — 只用加法交換、結合與見證引入;沒有使用引理本身。S06 · inverse_equivalence · L_witness — 兩個方向分別在 S06.1、S06.2 證明。S05.2 · premise_audit · division_algorithm — 關鍵是唯一性與 0≤r<n;沒有使用引理本身。S05.1 · premise_audit · distributive, add_comm, add_assoc — 只用分配律與加法律(N21 為格點恆等式核對);沒有使用引理本身。S05 · inverse_equivalence · L_shift — 兩邊是同一個數,等式雙向成立。S04 · inverse_equivalence · mko_cong_def — 定義本身是雙向的:同餘恰好當餘數相等。S03 · premise_audit · division_algorithm, numeric_evaluation — 同 S02。S02 · premise_audit · division_algorithm, numeric_evaluation — 餘數必須落在 0 到 6;這保證它是唯一的。S01 · premise_audit · G1, G2, mko_cong_def — 此步只展開定義;n>0 是餘數有定義所必需。MKO 指出的誤解之一:混用不同模數。100≡23 (mod 7) 與 23≡5 (mod 3) 不能串成 100≡5;事實上在兩個模數下都不成立(S13)。
MKO 指出的另一個誤解:在同餘式兩側無條件取消共同因子。2·3≡2·0 (mod 6) 但 3≢0 (mod 6)(S12)。取消需要考慮 c 與 n 的最大公因數;本稿不證明正面的條件。
MKO 指出的第三個誤解:允許零模數。帶餘除法需要正除數,a mod 0 在本條目中沒有定義;各程式語言對 x mod 0 的處理不一(有的報錯),本條目刻意不採用這些慣例(MKO 假設 a2)。
100≡23 (mod 7) 而 100≠23。同餘比較的是固定模數下的餘數(MKO 段落 0)。
reject — 3 mod 6=3≠0;gcd(2,6)=2≠1。reject — 100 mod 7=2,5 mod 7=5;遞移性只對同一模數成立。reject — 本條目要求 n 為正自然數,n=0 被刻意排除。reject — 同餘只表示餘數相等;100≠23。reject — (3,14) 與 (0,11) 都可以。100≡23 (mod 7),因為兩者除以 7 都餘 2;餘數定義與見證形式等價,100 與 23 的見證可取 (k,l)=(3,14) 或 (0,11)。同餘在固定模數下是等價關係,並被加法與乘法保持:115≡24、1500≡23 (mod 7)。2·3≡2·0 (mod 6) 但 3≢0 (mod 6),所以不能無條件取消公因子;不同模數的同餘不能串接;模數 0 被排除。
21 個本稿宣告算術檢查;只支持所列算式。
b28a5edbd46279b1db2a3f3f48bb3f447e18899f2e962d623d84262cb743a552037824dee16a1980f16f38b26d7bf9aeaa0255872e962d623d84262cb743a552037824dee16a1980f16f38b26d7bf9aeaa025587NOT_MEASURED