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 ffvelrni 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 ffvelrni 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 ffvelrni 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