Main derivation
S01 · definition
Before
x,\ A
After
x\in A\ \text{is a proposition: }x\ \text{is an element of}\ AConditions: none
Rule: mko_member · Uses: G1, G2
Leaf basis: mko_member + list_set
By the MKO, given a set A and an object x, x∈A is a proposition: it asserts that x is an element of A and may be true or false. It does not say that x equals A, nor that x is a subset of A. The MKO also notes that in the current Lean mapping Set α is represented as α→Prop, so x∈A and 'A x' are definitionally equivalent; that is, a set is determined by giving a proposition for each x. This guide does not run Lean and only adopts this viewpoint.
S02 · implies
Before
2\in A
After
2=1\lor 2=2\lor 2=3:\ \text{true, since}\ 2=2Conditions: none
Rule: list_set · Uses: S01, G2, list_set
Leaf basis: list_set + eq_refl_symm_trans
By list notation, 2∈A ⇔ 2=1 ∨ 2=2 ∨ 2=3. The second disjunct 2=2 holds by reflexivity of equality, so the disjunction is true and 2∈A is true.
S03 · implies
Before
4\in A
After
4\neq 1\land 4\neq 2\land 4\neq 3,\ \text{so}\ 4\notin AConditions: none
Rule: de_morgan_logic · Uses: G2, list_set
Leaf basis: de_morgan_logic + list_set + numeric_evaluation
By list notation 4∈A ⇔ 4=1 ∨ 4=2 ∨ 4=3. None of the three equations holds, and by De Morgan ¬(4=1∨4=2∨4=3) ⇔ 4≠1∧4≠2∧4≠3, so 4∉A. '4∈A' is still a proposition, just a false one.
S04 · equivalent
Before
B\subseteq A
After
\forall x\,(x\in B\Rightarrow x\in A)
Conditions: none
Rule: subset_def · Uses: G2
Leaf basis: subset_def + def_unfold
Unfold by the definition of subset: B⊆A means every element of B is an element of A. Note that ⊆ speaks about the elements of B, while ∈ speaks about a single object.
S05 · case_split
Before
x\in B\ (x\ \text{arbitrary})After
x=1\ \lor\ x=2
Conditions: none
Rule: list_set · Uses: S04, G2, list_set
Leaf basis: list_set + case_analysis
Take an arbitrary integer x and temporarily assume x∈B. By list notation x=1 or x=2; the two branches cover every way x can be in B and are handled in S05.1 and S05.2.
S06 · implies
Before
x\in B\Rightarrow x\in A\ \text{for arbitrary}\ xAfter
B\subseteq A
Conditions: none
Rule: forall_intro · Uses: S04, S05, S05.1, S05.2
Leaf basis: case_analysis + imp_intro + forall_intro
Both branches give x∈A, so by cases x∈A under the assumption x∈B; discharging it gives x∈B ⇒ x∈A. As x was arbitrary, generalization and S04 give B⊆A.
S07 · implies
Before
3\in A,\ 3\notin B
After
A\not\subseteq B
Conditions: none
Rule: quantifier_negation · Uses: G2, list_set
Leaf basis: quantifier_negation + exists_intro + list_set + numeric_evaluation
3∈A (third disjunct 3=3); 3∈B ⇔ 3=1 ∨ 3=2, and neither holds, so 3∉B. Hence ∃x (x∈A ∧ x∉B), and by negation of quantifiers ¬∀x (x∈A ⇒ x∈B), that is A⊄B. ⊆ is not symmetric.
S08 · implies
Before
B\in\mathcal{F}After
B=\{1,2\}\lor B=\{3\}:\ \text{true}Conditions: none
Rule: list_set · Uses: G1, G2, list_set
Leaf basis: list_set + typed_membership + eq_refl_symm_trans
The elements of 𝓕 are sets of integers and B is a set of integers, so B∈𝓕 is well formed. By list notation, B∈𝓕 ⇔ B={1,2} ∨ B={3}; B is {1,2} (reflexivity of equality), so B∈𝓕 is true. Here B as a whole is an element of 𝓕, a different relation from B⊆A (every element of B lies in A).
S09 · implies
Before
\{1\}\in\mathcal{F}After
\{1\}\neq\{1,2\},\ \{1\}\neq\{3\},\ \text{so}\ \{1\}\notin\mathcal{F}Conditions: none
Rule: set_extensionality · Uses: G2, list_set, set_extensionality
Leaf basis: set_extensionality + list_set + de_morgan_logic + numeric_evaluation
{1}∈𝓕 ⇔ {1}={1,2} ∨ {1}={3}. 2∈{1,2} but 2∉{1} (2≠1), so by extensionality {1}≠{1,2}; 1∈{1} but 1∉{3} (1≠3), so {1}≠{3}. Both disjuncts fail and {1}∉𝓕. Yet {1}⊆B and B∈𝓕: membership in 𝓕 is not passed on to subsets.
S10 · implies
Before
1\in B,\ B\in\mathcal{F}After
1\in\mathcal{F}\ \text{is not a true statement}Conditions: none
Rule: typed_membership · Uses: S08, G1, typed_membership
Leaf basis: typed_membership
1∈B is true (first disjunct 1=1) and B∈𝓕 is true (S08). But the elements of 𝓕 are sets of integers and 1 is an integer, so by typed_membership '1∈𝓕' is not well formed in the typed reading, let alone true; in an untyped reading it would say 1={1,2} or 1={3}, which also fails when integers are treated as objects different from these two sets. So ∈ is not transitive: x∈B and B∈𝓕 do not give x∈𝓕.
S11 · implies
Before
1000000\in E
After
1000000=2\cdot 500000,\ \text{so}\ 1000000\in EConditions: none
Rule: set_builder · Uses: G2, set_builder, divides_def
Leaf basis: set_builder + divides_def + exists_intro + numeric_evaluation
By set-builder notation, 1000000∈E ⇔ 1000000∈ℤ and 2∣1000000. 1000000=2·500000 with 500000 an integer, so 2∣1000000 and 1000000∈E is true. The verdict uses only the defining condition of E; nothing needs to be listed or stored in a container.
S12 · case_split
Before
k\in\mathbb{Z}\ \text{with}\ 2k=7\ ?After
k\le 3\ \lor\ k\ge 4
Conditions: k\in\mathbb{Z}
Rule: int_no_gap · Uses: G2
Leaf basis: int_no_gap + case_analysis
7∈E needs 2∣7, that is an integer k with 7=2k. By int_no_gap (m=3) every integer k satisfies k≤3 or k≥4; the branches are handled in S12.1 and S12.2.
S13 · implies
Before
\forall k\in\mathbb{Z}:\ 2k\neq 7After
7\notin E
Conditions: none
Rule: case_analysis · Uses: S12, S12.1, S12.2, G2, set_builder
Leaf basis: case_analysis + set_builder + divides_def
Both branches give 2k≠7, so no integer k has 7=2k, that is 2∤7; by set-builder notation 7∈E ⇔ 2∣7, hence 7∉E. '7∈E' is a false proposition.
S14 · implies
Before
\text{Python: }'12'\ \text{in}\ '123'After
\text{True (substring test), while}\ '12'\notin\{'1','2','3'\}Conditions: none
Rule: python_in · Uses: python_in, list_set
Leaf basis: python_in + list_set
By the cited Python Language Reference (python_in), for strings x in y is a substring test, so '12' in '123' is True. If the three characters of '123' are taken as the set of one-character strings {'1','2','3'}, then '12'∈{'1','2','3'} ⇔ '12'='1' ∨ '12'='2' ∨ '12'='3'; '12' has two characters and equals none of the three one-character strings, so this is a false proposition. The program's 'in' tests a different relation; the MKO warns against taking a program container's membership test as the whole semantics of set membership.
S15 · implies
Before
\text{verdicts of S02 to S14}After
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 EConditions: none
Rule: and_intro_elim · Uses: S02, S03, S06, S07, S08, S09, S10, S11, S13, S14
Leaf basis: and_intro_elim
Together: 2∈A true, 4∈A false, B⊆A true, A⊆B false, B∈𝓕 true, {1}∈𝓕 false, 1000000∈E true, 7∈E false; 1∈B and B∈𝓕 do not give 1∈𝓕; a program's string membership test and set membership are different relations.