Metamath Proof Explorer


Theorem unisnALT

Description: A set equals the union of its singleton. Theorem 8.2 of Quine p. 53. The User manually input on a mmj2 Proof Worksheet, without labels, all steps of unisnALT except 1, 11, 15, 21, and 30. With execution of the mmj2 unification command, mmj2 could find labels for all steps except for 2, 12, 16, 22, and 31 (and the then non-existing steps 1, 11, 15, 21, and 30). mmj2 could not find reference theorems for those five steps because the hypothesis field of each of these steps was empty and none of those steps unifies with a theorem in set.mm. Each of these five steps is a semantic variation of a theorem in set.mm and is 2-step provable. mmj2 does not have the ability to automatically generate the semantic variation in set.mm of a theorem in a mmj2 Proof Worksheet unless the theorem in the Proof Worksheet is labeled with a 1-hypothesis deduction whose hypothesis is a theorem in set.mm which unifies with the theorem in the Proof Worksheet. The stepprover.c program, which invokes mmj2, has this capability. stepprover.c automatically generated steps 1, 11, 15, 21, and 30, labeled all steps, and generated the RPN proof of unisnALT . Roughly speaking, stepprover.c added to the Proof Worksheet a labeled duplicate step of each non-unifying theorem for each label in a text file, labels.txt, containing a list of labels provided by the User. Upon mmj2 unification, stepprover.c identified a label for each of the five theorems which 2-step proves it. For unisnALT , the label list is a list of all 1-hypothesis propositional calculus deductions in set.mm. stepproverp.c is the same as stepprover.c except that it intermittently pauses during execution, allowing the User to observe the changes to a text file caused by the execution of particular statements of the program. (Contributed by Alan Sare, 19-Aug-2016) (Proof modification is discouraged.) (New usage is discouraged.)

Ref Expression
Hypothesis unisnALT.1 𝐴 ∈ V
Assertion unisnALT { 𝐴 } = 𝐴

Proof

Step Hyp Ref Expression
1 unisnALT.1 𝐴 ∈ V
2 eluni ( 𝑥 { 𝐴 } ↔ ∃ 𝑞 ( 𝑥𝑞𝑞 ∈ { 𝐴 } ) )
3 2 biimpi ( 𝑥 { 𝐴 } → ∃ 𝑞 ( 𝑥𝑞𝑞 ∈ { 𝐴 } ) )
4 id ( ( 𝑥𝑞𝑞 ∈ { 𝐴 } ) → ( 𝑥𝑞𝑞 ∈ { 𝐴 } ) )
5 simpl ( ( 𝑥𝑞𝑞 ∈ { 𝐴 } ) → 𝑥𝑞 )
6 4 5 syl ( ( 𝑥𝑞𝑞 ∈ { 𝐴 } ) → 𝑥𝑞 )
7 simpr ( ( 𝑥𝑞𝑞 ∈ { 𝐴 } ) → 𝑞 ∈ { 𝐴 } )
8 4 7 syl ( ( 𝑥𝑞𝑞 ∈ { 𝐴 } ) → 𝑞 ∈ { 𝐴 } )
9 elsni ( 𝑞 ∈ { 𝐴 } → 𝑞 = 𝐴 )
10 8 9 syl ( ( 𝑥𝑞𝑞 ∈ { 𝐴 } ) → 𝑞 = 𝐴 )
11 eleq2 ( 𝑞 = 𝐴 → ( 𝑥𝑞𝑥𝐴 ) )
12 11 biimpac ( ( 𝑥𝑞𝑞 = 𝐴 ) → 𝑥𝐴 )
13 6 10 12 syl2anc ( ( 𝑥𝑞𝑞 ∈ { 𝐴 } ) → 𝑥𝐴 )
14 13 ax-gen 𝑞 ( ( 𝑥𝑞𝑞 ∈ { 𝐴 } ) → 𝑥𝐴 )
15 19.23v ( ∀ 𝑞 ( ( 𝑥𝑞𝑞 ∈ { 𝐴 } ) → 𝑥𝐴 ) ↔ ( ∃ 𝑞 ( 𝑥𝑞𝑞 ∈ { 𝐴 } ) → 𝑥𝐴 ) )
16 15 biimpi ( ∀ 𝑞 ( ( 𝑥𝑞𝑞 ∈ { 𝐴 } ) → 𝑥𝐴 ) → ( ∃ 𝑞 ( 𝑥𝑞𝑞 ∈ { 𝐴 } ) → 𝑥𝐴 ) )
17 14 16 ax-mp ( ∃ 𝑞 ( 𝑥𝑞𝑞 ∈ { 𝐴 } ) → 𝑥𝐴 )
18 pm3.35 ( ( ∃ 𝑞 ( 𝑥𝑞𝑞 ∈ { 𝐴 } ) ∧ ( ∃ 𝑞 ( 𝑥𝑞𝑞 ∈ { 𝐴 } ) → 𝑥𝐴 ) ) → 𝑥𝐴 )
19 3 17 18 sylancl ( 𝑥 { 𝐴 } → 𝑥𝐴 )
20 19 ax-gen 𝑥 ( 𝑥 { 𝐴 } → 𝑥𝐴 )
21 dfss2 ( { 𝐴 } ⊆ 𝐴 ↔ ∀ 𝑥 ( 𝑥 { 𝐴 } → 𝑥𝐴 ) )
22 21 biimpri ( ∀ 𝑥 ( 𝑥 { 𝐴 } → 𝑥𝐴 ) → { 𝐴 } ⊆ 𝐴 )
23 20 22 ax-mp { 𝐴 } ⊆ 𝐴
24 id ( 𝑥𝐴𝑥𝐴 )
25 1 snid 𝐴 ∈ { 𝐴 }
26 elunii ( ( 𝑥𝐴𝐴 ∈ { 𝐴 } ) → 𝑥 { 𝐴 } )
27 24 25 26 sylancl ( 𝑥𝐴𝑥 { 𝐴 } )
28 27 ax-gen 𝑥 ( 𝑥𝐴𝑥 { 𝐴 } )
29 dfss2 ( 𝐴 { 𝐴 } ↔ ∀ 𝑥 ( 𝑥𝐴𝑥 { 𝐴 } ) )
30 29 biimpri ( ∀ 𝑥 ( 𝑥𝐴𝑥 { 𝐴 } ) → 𝐴 { 𝐴 } )
31 28 30 ax-mp 𝐴 { 𝐴 }
32 23 31 eqssi { 𝐴 } = 𝐴