Metamath Proof Explorer


Theorem sadadd2lem

Description: Lemma for sadadd2 . (Contributed by Mario Carneiro, 9-Sep-2016)

Ref Expression
Hypotheses sadval.a ⊢ φ → A ⊆ ℕ 0
sadval.b ⊢ φ → B ⊆ ℕ 0
sadval.c ⊢ C = seq 0 c ∈ 2 𝑜 , m ∈ ℕ 0 ⟼ if cadd m ∈ A m ∈ B ∅ ∈ c 1 𝑜 ∅ n ∈ ℕ 0 ⟼ if n = 0 ∅ n − 1
sadcp1.n ⊢ φ → N ∈ ℕ 0
sadcadd.k ⊢ K = bits ↾ ℕ 0 -1
sadadd2lem.1 ⊢ φ → K ⁡ A sadd B ∩ 0 ..^ N + if ∅ ∈ C ⁡ N 2 N 0 = K ⁡ A ∩ 0 ..^ N + K ⁡ B ∩ 0 ..^ N
Assertion sadadd2lem ⊢ φ → K ⁡ A sadd B ∩ 0 ..^ N + 1 + if ∅ ∈ C ⁡ N + 1 2 N + 1 0 = K ⁡ A ∩ 0 ..^ N + 1 + K ⁡ B ∩ 0 ..^ N + 1

Proof

Step Hyp Ref Expression
1 sadval.a ⊢ φ → A ⊆ ℕ 0
2 sadval.b ⊢ φ → B ⊆ ℕ 0
3 sadval.c ⊢ C = seq 0 c ∈ 2 𝑜 , m ∈ ℕ 0 ⟼ if cadd m ∈ A m ∈ B ∅ ∈ c 1 𝑜 ∅ n ∈ ℕ 0 ⟼ if n = 0 ∅ n − 1
4 sadcp1.n ⊢ φ → N ∈ ℕ 0
5 sadcadd.k ⊢ K = bits ↾ ℕ 0 -1
6 sadadd2lem.1 ⊢ φ → K ⁡ A sadd B ∩ 0 ..^ N + if ∅ ∈ C ⁡ N 2 N 0 = K ⁡ A ∩ 0 ..^ N + K ⁡ B ∩ 0 ..^ N
7 inss1 ⊢ A sadd B ∩ 0 ..^ N ⊆ A sadd B
8 1 2 3 sadfval ⊢ φ → A sadd B = k ∈ ℕ 0 | hadd k ∈ A k ∈ B ∅ ∈ C ⁡ k
9 ssrab2 ⊢ k ∈ ℕ 0 | hadd k ∈ A k ∈ B ∅ ∈ C ⁡ k ⊆ ℕ 0
10 8 9 eqsstrdi ⊢ φ → A sadd B ⊆ ℕ 0
11 7 10 sstrid ⊢ φ → A sadd B ∩ 0 ..^ N ⊆ ℕ 0
12 fzofi ⊢ 0 ..^ N ∈ Fin
13 12 a1i ⊢ φ → 0 ..^ N ∈ Fin
14 inss2 ⊢ A sadd B ∩ 0 ..^ N ⊆ 0 ..^ N
15 ssfi ⊢ 0 ..^ N ∈ Fin ∧ A sadd B ∩ 0 ..^ N ⊆ 0 ..^ N → A sadd B ∩ 0 ..^ N ∈ Fin
16 13 14 15 sylancl ⊢ φ → A sadd B ∩ 0 ..^ N ∈ Fin
17 elfpw ⊢ A sadd B ∩ 0 ..^ N ∈ 𝒫 ℕ 0 ∩ Fin ↔ A sadd B ∩ 0 ..^ N ⊆ ℕ 0 ∧ A sadd B ∩ 0 ..^ N ∈ Fin
18 11 16 17 sylanbrc ⊢ φ → A sadd B ∩ 0 ..^ N ∈ 𝒫 ℕ 0 ∩ Fin
19 bitsf1o ⊢ bits ↾ ℕ 0 : ℕ 0 ⟶ 1-1 onto 𝒫 ℕ 0 ∩ Fin
20 f1ocnv ⊢ bits ↾ ℕ 0 : ℕ 0 ⟶ 1-1 onto 𝒫 ℕ 0 ∩ Fin → bits ↾ ℕ 0 -1 : 𝒫 ℕ 0 ∩ Fin ⟶ 1-1 onto ℕ 0
21 f1of ⊢ bits ↾ ℕ 0 -1 : 𝒫 ℕ 0 ∩ Fin ⟶ 1-1 onto ℕ 0 → bits ↾ ℕ 0 -1 : 𝒫 ℕ 0 ∩ Fin ⟶ ℕ 0
22 19 20 21 mp2b ⊢ bits ↾ ℕ 0 -1 : 𝒫 ℕ 0 ∩ Fin ⟶ ℕ 0
23 5 feq1i ⊢ K : 𝒫 ℕ 0 ∩ Fin ⟶ ℕ 0 ↔ bits ↾ ℕ 0 -1 : 𝒫 ℕ 0 ∩ Fin ⟶ ℕ 0
24 22 23 mpbir ⊢ K : 𝒫 ℕ 0 ∩ Fin ⟶ ℕ 0
25 24 ffvelcdmi ⊢ A sadd B ∩ 0 ..^ N ∈ 𝒫 ℕ 0 ∩ Fin → K ⁡ A sadd B ∩ 0 ..^ N ∈ ℕ 0
26 18 25 syl ⊢ φ → K ⁡ A sadd B ∩ 0 ..^ N ∈ ℕ 0
27 26 nn0cnd ⊢ φ → K ⁡ A sadd B ∩ 0 ..^ N ∈ ℂ
28 2nn0 ⊢ 2 ∈ ℕ 0
29 28 a1i ⊢ φ → 2 ∈ ℕ 0
30 29 4 nn0expcld ⊢ φ → 2 N ∈ ℕ 0
31 0nn0 ⊢ 0 ∈ ℕ 0
32 ifcl ⊢ 2 N ∈ ℕ 0 ∧ 0 ∈ ℕ 0 → if N ∈ A sadd B 2 N 0 ∈ ℕ 0
33 30 31 32 sylancl ⊢ φ → if N ∈ A sadd B 2 N 0 ∈ ℕ 0
34 33 nn0cnd ⊢ φ → if N ∈ A sadd B 2 N 0 ∈ ℂ
35 1nn0 ⊢ 1 ∈ ℕ 0
36 35 a1i ⊢ φ → 1 ∈ ℕ 0
37 4 36 nn0addcld ⊢ φ → N + 1 ∈ ℕ 0
38 29 37 nn0expcld ⊢ φ → 2 N + 1 ∈ ℕ 0
39 ifcl ⊢ 2 N + 1 ∈ ℕ 0 ∧ 0 ∈ ℕ 0 → if ∅ ∈ C ⁡ N + 1 2 N + 1 0 ∈ ℕ 0
40 38 31 39 sylancl ⊢ φ → if ∅ ∈ C ⁡ N + 1 2 N + 1 0 ∈ ℕ 0
41 40 nn0cnd ⊢ φ → if ∅ ∈ C ⁡ N + 1 2 N + 1 0 ∈ ℂ
42 34 41 addcld ⊢ φ → if N ∈ A sadd B 2 N 0 + if ∅ ∈ C ⁡ N + 1 2 N + 1 0 ∈ ℂ
43 27 42 addcld ⊢ φ → K ⁡ A sadd B ∩ 0 ..^ N + if N ∈ A sadd B 2 N 0 + if ∅ ∈ C ⁡ N + 1 2 N + 1 0 ∈ ℂ
44 inss1 ⊢ A ∩ 0 ..^ N ⊆ A
45 44 1 sstrid ⊢ φ → A ∩ 0 ..^ N ⊆ ℕ 0
46 inss2 ⊢ A ∩ 0 ..^ N ⊆ 0 ..^ N
47 ssfi ⊢ 0 ..^ N ∈ Fin ∧ A ∩ 0 ..^ N ⊆ 0 ..^ N → A ∩ 0 ..^ N ∈ Fin
48 13 46 47 sylancl ⊢ φ → A ∩ 0 ..^ N ∈ Fin
49 elfpw ⊢ A ∩ 0 ..^ N ∈ 𝒫 ℕ 0 ∩ Fin ↔ A ∩ 0 ..^ N ⊆ ℕ 0 ∧ A ∩ 0 ..^ N ∈ Fin
50 45 48 49 sylanbrc ⊢ φ → A ∩ 0 ..^ N ∈ 𝒫 ℕ 0 ∩ Fin
51 24 ffvelcdmi ⊢ A ∩ 0 ..^ N ∈ 𝒫 ℕ 0 ∩ Fin → K ⁡ A ∩ 0 ..^ N ∈ ℕ 0
52 50 51 syl ⊢ φ → K ⁡ A ∩ 0 ..^ N ∈ ℕ 0
53 52 nn0cnd ⊢ φ → K ⁡ A ∩ 0 ..^ N ∈ ℂ
54 inss1 ⊢ B ∩ 0 ..^ N ⊆ B
55 54 2 sstrid ⊢ φ → B ∩ 0 ..^ N ⊆ ℕ 0
56 inss2 ⊢ B ∩ 0 ..^ N ⊆ 0 ..^ N
57 ssfi ⊢ 0 ..^ N ∈ Fin ∧ B ∩ 0 ..^ N ⊆ 0 ..^ N → B ∩ 0 ..^ N ∈ Fin
58 13 56 57 sylancl ⊢ φ → B ∩ 0 ..^ N ∈ Fin
59 elfpw ⊢ B ∩ 0 ..^ N ∈ 𝒫 ℕ 0 ∩ Fin ↔ B ∩ 0 ..^ N ⊆ ℕ 0 ∧ B ∩ 0 ..^ N ∈ Fin
60 55 58 59 sylanbrc ⊢ φ → B ∩ 0 ..^ N ∈ 𝒫 ℕ 0 ∩ Fin
61 24 ffvelcdmi ⊢ B ∩ 0 ..^ N ∈ 𝒫 ℕ 0 ∩ Fin → K ⁡ B ∩ 0 ..^ N ∈ ℕ 0
62 60 61 syl ⊢ φ → K ⁡ B ∩ 0 ..^ N ∈ ℕ 0
63 62 nn0cnd ⊢ φ → K ⁡ B ∩ 0 ..^ N ∈ ℂ
64 53 63 addcld ⊢ φ → K ⁡ A ∩ 0 ..^ N + K ⁡ B ∩ 0 ..^ N ∈ ℂ
65 ifcl ⊢ 2 N ∈ ℕ 0 ∧ 0 ∈ ℕ 0 → if N ∈ A 2 N 0 ∈ ℕ 0
66 30 31 65 sylancl ⊢ φ → if N ∈ A 2 N 0 ∈ ℕ 0
67 66 nn0cnd ⊢ φ → if N ∈ A 2 N 0 ∈ ℂ
68 ifcl ⊢ 2 N ∈ ℕ 0 ∧ 0 ∈ ℕ 0 → if N ∈ B 2 N 0 ∈ ℕ 0
69 30 31 68 sylancl ⊢ φ → if N ∈ B 2 N 0 ∈ ℕ 0
70 69 nn0cnd ⊢ φ → if N ∈ B 2 N 0 ∈ ℂ
71 67 70 addcld ⊢ φ → if N ∈ A 2 N 0 + if N ∈ B 2 N 0 ∈ ℂ
72 64 71 addcld ⊢ φ → K ⁡ A ∩ 0 ..^ N + K ⁡ B ∩ 0 ..^ N + if N ∈ A 2 N 0 + if N ∈ B 2 N 0 ∈ ℂ
73 30 nn0cnd ⊢ φ → 2 N ∈ ℂ
74 73 adantr ⊢ φ ∧ ∅ ∈ C ⁡ N → 2 N ∈ ℂ
75 0cnd ⊢ φ ∧ ¬ ∅ ∈ C ⁡ N → 0 ∈ ℂ
76 74 75 ifclda ⊢ φ → if ∅ ∈ C ⁡ N 2 N 0 ∈ ℂ
77 1 2 3 4 sadval ⊢ φ → N ∈ A sadd B ↔ hadd N ∈ A N ∈ B ∅ ∈ C ⁡ N
78 77 ifbid ⊢ φ → if N ∈ A sadd B 2 N 0 = if hadd N ∈ A N ∈ B ∅ ∈ C ⁡ N 2 N 0
79 1 2 3 4 sadcp1 ⊢ φ → ∅ ∈ C ⁡ N + 1 ↔ cadd N ∈ A N ∈ B ∅ ∈ C ⁡ N
80 29 nn0cnd ⊢ φ → 2 ∈ ℂ
81 80 4 expp1d ⊢ φ → 2 N + 1 = 2 N ⋅ 2
82 73 80 mulcomd ⊢ φ → 2 N ⋅ 2 = 2 ⁢ 2 N
83 81 82 eqtrd ⊢ φ → 2 N + 1 = 2 ⁢ 2 N
84 79 83 ifbieq1d ⊢ φ → if ∅ ∈ C ⁡ N + 1 2 N + 1 0 = if cadd N ∈ A N ∈ B ∅ ∈ C ⁡ N 2 ⁢ 2 N 0
85 78 84 oveq12d ⊢ φ → if N ∈ A sadd B 2 N 0 + if ∅ ∈ C ⁡ N + 1 2 N + 1 0 = if hadd N ∈ A N ∈ B ∅ ∈ C ⁡ N 2 N 0 + if cadd N ∈ A N ∈ B ∅ ∈ C ⁡ N 2 ⁢ 2 N 0
86 sadadd2lem2 ⊢ 2 N ∈ ℂ → if hadd N ∈ A N ∈ B ∅ ∈ C ⁡ N 2 N 0 + if cadd N ∈ A N ∈ B ∅ ∈ C ⁡ N 2 ⁢ 2 N 0 = if N ∈ A 2 N 0 + if N ∈ B 2 N 0 + if ∅ ∈ C ⁡ N 2 N 0
87 73 86 syl ⊢ φ → if hadd N ∈ A N ∈ B ∅ ∈ C ⁡ N 2 N 0 + if cadd N ∈ A N ∈ B ∅ ∈ C ⁡ N 2 ⁢ 2 N 0 = if N ∈ A 2 N 0 + if N ∈ B 2 N 0 + if ∅ ∈ C ⁡ N 2 N 0
88 85 87 eqtrd ⊢ φ → if N ∈ A sadd B 2 N 0 + if ∅ ∈ C ⁡ N + 1 2 N + 1 0 = if N ∈ A 2 N 0 + if N ∈ B 2 N 0 + if ∅ ∈ C ⁡ N 2 N 0
89 6 88 oveq12d ⊢ φ → K ⁡ A sadd B ∩ 0 ..^ N + if ∅ ∈ C ⁡ N 2 N 0 + if N ∈ A sadd B 2 N 0 + if ∅ ∈ C ⁡ N + 1 2 N + 1 0 = K ⁡ A ∩ 0 ..^ N + K ⁡ B ∩ 0 ..^ N + if N ∈ A 2 N 0 + if N ∈ B 2 N 0 + if ∅ ∈ C ⁡ N 2 N 0
90 27 42 76 add32d ⊢ φ → K ⁡ A sadd B ∩ 0 ..^ N + if N ∈ A sadd B 2 N 0 + if ∅ ∈ C ⁡ N + 1 2 N + 1 0 + if ∅ ∈ C ⁡ N 2 N 0 = K ⁡ A sadd B ∩ 0 ..^ N + if ∅ ∈ C ⁡ N 2 N 0 + if N ∈ A sadd B 2 N 0 + if ∅ ∈ C ⁡ N + 1 2 N + 1 0
91 64 71 76 addassd ⊢ φ → K ⁡ A ∩ 0 ..^ N + K ⁡ B ∩ 0 ..^ N + if N ∈ A 2 N 0 + if N ∈ B 2 N 0 + if ∅ ∈ C ⁡ N 2 N 0 = K ⁡ A ∩ 0 ..^ N + K ⁡ B ∩ 0 ..^ N + if N ∈ A 2 N 0 + if N ∈ B 2 N 0 + if ∅ ∈ C ⁡ N 2 N 0
92 89 90 91 3eqtr4d ⊢ φ → K ⁡ A sadd B ∩ 0 ..^ N + if N ∈ A sadd B 2 N 0 + if ∅ ∈ C ⁡ N + 1 2 N + 1 0 + if ∅ ∈ C ⁡ N 2 N 0 = K ⁡ A ∩ 0 ..^ N + K ⁡ B ∩ 0 ..^ N + if N ∈ A 2 N 0 + if N ∈ B 2 N 0 + if ∅ ∈ C ⁡ N 2 N 0
93 43 72 76 92 addcan2ad ⊢ φ → K ⁡ A sadd B ∩ 0 ..^ N + if N ∈ A sadd B 2 N 0 + if ∅ ∈ C ⁡ N + 1 2 N + 1 0 = K ⁡ A ∩ 0 ..^ N + K ⁡ B ∩ 0 ..^ N + if N ∈ A 2 N 0 + if N ∈ B 2 N 0
94 27 34 41 addassd ⊢ φ → K ⁡ A sadd B ∩ 0 ..^ N + if N ∈ A sadd B 2 N 0 + if ∅ ∈ C ⁡ N + 1 2 N + 1 0 = K ⁡ A sadd B ∩ 0 ..^ N + if N ∈ A sadd B 2 N 0 + if ∅ ∈ C ⁡ N + 1 2 N + 1 0
95 53 67 63 70 add4d ⊢ φ → K ⁡ A ∩ 0 ..^ N + if N ∈ A 2 N 0 + K ⁡ B ∩ 0 ..^ N + if N ∈ B 2 N 0 = K ⁡ A ∩ 0 ..^ N + K ⁡ B ∩ 0 ..^ N + if N ∈ A 2 N 0 + if N ∈ B 2 N 0
96 93 94 95 3eqtr4d ⊢ φ → K ⁡ A sadd B ∩ 0 ..^ N + if N ∈ A sadd B 2 N 0 + if ∅ ∈ C ⁡ N + 1 2 N + 1 0 = K ⁡ A ∩ 0 ..^ N + if N ∈ A 2 N 0 + K ⁡ B ∩ 0 ..^ N + if N ∈ B 2 N 0
97 5 bitsinvp1 ⊢ A sadd B ⊆ ℕ 0 ∧ N ∈ ℕ 0 → K ⁡ A sadd B ∩ 0 ..^ N + 1 = K ⁡ A sadd B ∩ 0 ..^ N + if N ∈ A sadd B 2 N 0
98 10 4 97 syl2anc ⊢ φ → K ⁡ A sadd B ∩ 0 ..^ N + 1 = K ⁡ A sadd B ∩ 0 ..^ N + if N ∈ A sadd B 2 N 0
99 98 oveq1d ⊢ φ → K ⁡ A sadd B ∩ 0 ..^ N + 1 + if ∅ ∈ C ⁡ N + 1 2 N + 1 0 = K ⁡ A sadd B ∩ 0 ..^ N + if N ∈ A sadd B 2 N 0 + if ∅ ∈ C ⁡ N + 1 2 N + 1 0
100 5 bitsinvp1 ⊢ A ⊆ ℕ 0 ∧ N ∈ ℕ 0 → K ⁡ A ∩ 0 ..^ N + 1 = K ⁡ A ∩ 0 ..^ N + if N ∈ A 2 N 0
101 1 4 100 syl2anc ⊢ φ → K ⁡ A ∩ 0 ..^ N + 1 = K ⁡ A ∩ 0 ..^ N + if N ∈ A 2 N 0
102 5 bitsinvp1 ⊢ B ⊆ ℕ 0 ∧ N ∈ ℕ 0 → K ⁡ B ∩ 0 ..^ N + 1 = K ⁡ B ∩ 0 ..^ N + if N ∈ B 2 N 0
103 2 4 102 syl2anc ⊢ φ → K ⁡ B ∩ 0 ..^ N + 1 = K ⁡ B ∩ 0 ..^ N + if N ∈ B 2 N 0
104 101 103 oveq12d ⊢ φ → K ⁡ A ∩ 0 ..^ N + 1 + K ⁡ B ∩ 0 ..^ N + 1 = K ⁡ A ∩ 0 ..^ N + if N ∈ A 2 N 0 + K ⁡ B ∩ 0 ..^ N + if N ∈ B 2 N 0
105 96 99 104 3eqtr4d ⊢ φ → K ⁡ A sadd B ∩ 0 ..^ N + 1 + if ∅ ∈ C ⁡ N + 1 2 N + 1 0 = K ⁡ A ∩ 0 ..^ N + 1 + K ⁡ B ∩ 0 ..^ N + 1