逐步主鏈
S01 · definition
操作前
x,\ A
操作後
x\in A\ \text{is a proposition: }x\ \text{is an element of}\ A條件:無
規則:mko_member · 依賴:G1, G2
葉節點依據:mko_member + list_set
依 MKO,給定集合 A 與對象 x,x∈A 是一個命題:它斷言 x 是 A 的元素,可能為真也可能為假。它不表示 x 等於 A,也不表示 x 是 A 的子集合。MKO 也記錄:在目前的 Lean 映射中,Set α 表示為 α→Prop,所以 x∈A 與「A x」在定義上等價;也就是說,集合由「對每個 x 給出一個命題」決定。本稿不執行 Lean,只採用這個觀點。
S02 · implies
操作前
2\in A
操作後
2=1\lor 2=2\lor 2=3:\ \text{true, since}\ 2=2條件:無
規則:list_set · 依賴:S01, G2, list_set
葉節點依據:list_set + eq_refl_symm_trans
依列舉記號,2∈A ⇔ 2=1 ∨ 2=2 ∨ 2=3。第二支 2=2 依等號的反身性成立,所以析取為真,2∈A 為真。
S03 · implies
操作前
4\in A
操作後
4\neq 1\land 4\neq 2\land 4\neq 3,\ \text{so}\ 4\notin A條件:無
規則:de_morgan_logic · 依賴:G2, list_set
葉節點依據:de_morgan_logic + list_set + numeric_evaluation
依列舉記號 4∈A ⇔ 4=1 ∨ 4=2 ∨ 4=3。三個等式都不成立,依德摩根律 ¬(4=1∨4=2∨4=3) ⇔ 4≠1∧4≠2∧4≠3,所以 4∉A。「4∈A」仍是一個命題,只是假的。
S04 · equivalent
操作前
B\subseteq A
操作後
\forall x\,(x\in B\Rightarrow x\in A)
條件:無
規則:subset_def · 依賴:G2
葉節點依據:subset_def + def_unfold
依子集定義展開:B⊆A 表示 B 的每個元素都是 A 的元素。注意 ⊆ 談的是 B 的元素,∈ 談的是單一對象。
S05 · case_split
操作前
x\in B\ (x\ \text{arbitrary})操作後
x=1\ \lor\ x=2
條件:無
規則:list_set · 依賴:S04, G2, list_set
葉節點依據:list_set + case_analysis
任取整數 x 並暫時假設 x∈B。依列舉記號 x=1 或 x=2,兩支涵蓋 x∈B 的所有可能,在 S05.1、S05.2 處理。
S06 · implies
操作前
x\in B\Rightarrow x\in A\ \text{for arbitrary}\ x操作後
B\subseteq A
條件:無
規則:forall_intro · 依賴:S04, S05, S05.1, S05.2
葉節點依據:case_analysis + imp_intro + forall_intro
兩支都推出 x∈A,依分情況論證,在假設 x∈B 下得 x∈A;釋放假設得 x∈B ⇒ x∈A。x 是任取的,依全稱推廣與 S04,B⊆A。
S07 · implies
操作前
3\in A,\ 3\notin B
操作後
A\not\subseteq B
條件:無
規則:quantifier_negation · 依賴:G2, list_set
葉節點依據:quantifier_negation + exists_intro + list_set + numeric_evaluation
3∈A(第三支 3=3);3∈B ⇔ 3=1 ∨ 3=2,兩者都不成立,所以 3∉B。於是 ∃x (x∈A ∧ x∉B),依量詞否定 ¬∀x (x∈A ⇒ x∈B),即 A⊄B。⊆ 不是對稱的。
S08 · implies
操作前
B\in\mathcal{F}操作後
B=\{1,2\}\lor B=\{3\}:\ \text{true}條件:無
規則:list_set · 依賴:G1, G2, list_set
葉節點依據:list_set + typed_membership + eq_refl_symm_trans
𝓕 的元素是整數的集合,B 也是整數的集合,所以 B∈𝓕 是良構命題。依列舉記號,B∈𝓕 ⇔ B={1,2} ∨ B={3};B 就是 {1,2}(等號的反身性),所以 B∈𝓕 為真。這是 B 作為一個整體是 𝓕 的元素,與 B⊆A(B 的每個元素都在 A 中)是不同的關係。
S09 · implies
操作前
\{1\}\in\mathcal{F}操作後
\{1\}\neq\{1,2\},\ \{1\}\neq\{3\},\ \text{so}\ \{1\}\notin\mathcal{F}條件:無
規則:set_extensionality · 依賴:G2, list_set, set_extensionality
葉節點依據:set_extensionality + list_set + de_morgan_logic + numeric_evaluation
{1}∈𝓕 ⇔ {1}={1,2} ∨ {1}={3}。2∈{1,2} 而 2∉{1}(2≠1),依外延性 {1}≠{1,2};1∈{1} 而 1∉{3}(1≠3),所以 {1}≠{3}。兩支都假,{1}∉𝓕。可是 {1}⊆B 而且 B∈𝓕:隸屬於 𝓕 不會傳給子集合。
S10 · implies
操作前
1\in B,\ B\in\mathcal{F}操作後
1\in\mathcal{F}\ \text{is not a true statement}條件:無
規則:typed_membership · 依賴:S08, G1, typed_membership
葉節點依據:typed_membership
1∈B 為真(第一支 1=1),B∈𝓕 為真(S08)。但 𝓕 的元素是整數的集合,1 是整數,依 typed_membership,「1∈𝓕」在型別化的讀法中不是良構命題,更不是真命題;若改用不分型別的讀法,它表示 1={1,2} 或 1={3},在把整數與這兩個集合視為不同對象時也不成立。所以 ∈ 沒有傳遞性:x∈B 與 B∈𝓕 不推出 x∈𝓕。
S11 · implies
操作前
1000000\in E
操作後
1000000=2\cdot 500000,\ \text{so}\ 1000000\in E條件:無
規則:set_builder · 依賴:G2, set_builder, divides_def
葉節點依據:set_builder + divides_def + exists_intro + numeric_evaluation
依建構式,1000000∈E ⇔ 1000000∈ℤ 且 2∣1000000。1000000=2·500000,500000 是整數,所以 2∣1000000,1000000∈E 為真。這個判定只用 E 的定義條件,不需要把 E 的元素列出或存放在任何容器裡。
S12 · case_split
操作前
k\in\mathbb{Z}\ \text{with}\ 2k=7\ ?操作後
k\le 3\ \lor\ k\ge 4
條件:k\in\mathbb{Z}
規則:int_no_gap · 依賴:G2
葉節點依據:int_no_gap + case_analysis
7∈E 需要 2∣7,即整數 k 使 7=2k。依 int_no_gap(m=3),每個整數 k 滿足 k≤3 或 k≥4,兩支在 S12.1、S12.2 處理。
S13 · implies
操作前
\forall k\in\mathbb{Z}:\ 2k\neq 7操作後
7\notin E
條件:無
規則:case_analysis · 依賴:S12, S12.1, S12.2, G2, set_builder
葉節點依據:case_analysis + set_builder + divides_def
兩支都得 2k≠7,所以沒有整數 k 使 7=2k,即 2∤7;依建構式 7∈E ⇔ 2∣7,因此 7∉E。「7∈E」是一個假的命題。
S14 · implies
操作前
\text{Python: }'12'\ \text{in}\ '123'操作後
\text{True (substring test), while}\ '12'\notin\{'1','2','3'\}條件:無
規則:python_in · 依賴:python_in, list_set
葉節點依據:python_in + list_set
依引用的 Python 語言參考(python_in),對字串而言 x in y 是子字串測試,所以 '12' in '123' 為 True。若把 '123' 的三個字元看成由單字元字串組成的集合 {'1','2','3'},則 '12'∈{'1','2','3'} ⇔ '12'='1' ∨ '12'='2' ∨ '12'='3';'12' 有兩個字元,與三個單字元字串都不相等,所以這是假命題。同一個「in」在程式中檢查的是另一種關係;MKO 提醒不要把程式容器的成員測試當作集合隸屬的全部語義。
S15 · implies
操作前
\text{verdicts of S02 to S14}操作後
2\in A,\ 4\notin A,\ B\subseteq A,\ A\not\subseteq B,\ B\in\mathcal{F},\ \{1\}\notin\mathcal{F},\ 1000000\in E,\ 7\notin E條件:無
規則:and_intro_elim · 依賴:S02, S03, S06, S07, S08, S09, S10, S11, S13, S14
葉節點依據:and_intro_elim
合起來:2∈A 真、4∈A 假、B⊆A 真、A⊆B 假、B∈𝓕 真、{1}∈𝓕 假、1000000∈E 真、7∈E 假;1∈B 與 B∈𝓕 不給出 1∈𝓕;程式的字串成員測試與集合隸屬是不同關係。