Metamath Proof Explorer


Theorem sadadd2lem

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

Ref Expression
Hypotheses sadval.a φA0
sadval.b φB0
sadval.c C=seq0c2𝑜,m0ifcaddmAmBc1𝑜n0ifn=0n1
sadcp1.n φN0
sadcadd.k K=bits0-1
sadadd2lem.1 φKAsaddB0..^N+ifCN2N0=KA0..^N+KB0..^N
Assertion sadadd2lem φKAsaddB0..^N+1+ifCN+12N+10=KA0..^N+1+KB0..^N+1

Proof

Step Hyp Ref Expression
1 sadval.a φA0
2 sadval.b φB0
3 sadval.c C=seq0c2𝑜,m0ifcaddmAmBc1𝑜n0ifn=0n1
4 sadcp1.n φN0
5 sadcadd.k K=bits0-1
6 sadadd2lem.1 φKAsaddB0..^N+ifCN2N0=KA0..^N+KB0..^N
7 inss1 AsaddB0..^NAsaddB
8 1 2 3 sadfval φAsaddB=k0|haddkAkBCk
9 ssrab2 k0|haddkAkBCk0
10 8 9 eqsstrdi φAsaddB0
11 7 10 sstrid φAsaddB0..^N0
12 fzofi 0..^NFin
13 12 a1i φ0..^NFin
14 inss2 AsaddB0..^N0..^N
15 ssfi 0..^NFinAsaddB0..^N0..^NAsaddB0..^NFin
16 13 14 15 sylancl φAsaddB0..^NFin
17 elfpw AsaddB0..^N𝒫0FinAsaddB0..^N0AsaddB0..^NFin
18 11 16 17 sylanbrc φAsaddB0..^N𝒫0Fin
19 bitsf1o bits0:01-1 onto𝒫0Fin
20 f1ocnv bits0:01-1 onto𝒫0Finbits0-1:𝒫0Fin1-1 onto0
21 f1of bits0-1:𝒫0Fin1-1 onto0bits0-1:𝒫0Fin0
22 19 20 21 mp2b bits0-1:𝒫0Fin0
23 5 feq1i K:𝒫0Fin0bits0-1:𝒫0Fin0
24 22 23 mpbir K:𝒫0Fin0
25 24 ffvelcdmi AsaddB0..^N𝒫0FinKAsaddB0..^N0
26 18 25 syl φKAsaddB0..^N0
27 26 nn0cnd φKAsaddB0..^N
28 2nn0 20
29 28 a1i φ20
30 29 4 nn0expcld φ2N0
31 0nn0 00
32 ifcl 2N000ifNAsaddB2N00
33 30 31 32 sylancl φifNAsaddB2N00
34 33 nn0cnd φifNAsaddB2N0
35 1nn0 10
36 35 a1i φ10
37 4 36 nn0addcld φN+10
38 29 37 nn0expcld φ2N+10
39 ifcl 2N+1000ifCN+12N+100
40 38 31 39 sylancl φifCN+12N+100
41 40 nn0cnd φifCN+12N+10
42 34 41 addcld φifNAsaddB2N0+ifCN+12N+10
43 27 42 addcld φKAsaddB0..^N+ifNAsaddB2N0+ifCN+12N+10
44 inss1 A0..^NA
45 44 1 sstrid φA0..^N0
46 inss2 A0..^N0..^N
47 ssfi 0..^NFinA0..^N0..^NA0..^NFin
48 13 46 47 sylancl φA0..^NFin
49 elfpw A0..^N𝒫0FinA0..^N0A0..^NFin
50 45 48 49 sylanbrc φA0..^N𝒫0Fin
51 24 ffvelcdmi A0..^N𝒫0FinKA0..^N0
52 50 51 syl φKA0..^N0
53 52 nn0cnd φKA0..^N
54 inss1 B0..^NB
55 54 2 sstrid φB0..^N0
56 inss2 B0..^N0..^N
57 ssfi 0..^NFinB0..^N0..^NB0..^NFin
58 13 56 57 sylancl φB0..^NFin
59 elfpw B0..^N𝒫0FinB0..^N0B0..^NFin
60 55 58 59 sylanbrc φB0..^N𝒫0Fin
61 24 ffvelcdmi B0..^N𝒫0FinKB0..^N0
62 60 61 syl φKB0..^N0
63 62 nn0cnd φKB0..^N
64 53 63 addcld φKA0..^N+KB0..^N
65 ifcl 2N000ifNA2N00
66 30 31 65 sylancl φifNA2N00
67 66 nn0cnd φifNA2N0
68 ifcl 2N000ifNB2N00
69 30 31 68 sylancl φifNB2N00
70 69 nn0cnd φifNB2N0
71 67 70 addcld φifNA2N0+ifNB2N0
72 64 71 addcld φKA0..^N+KB0..^N+ifNA2N0+ifNB2N0
73 30 nn0cnd φ2N
74 73 adantr φCN2N
75 0cnd φ¬CN0
76 74 75 ifclda φifCN2N0
77 1 2 3 4 sadval φNAsaddBhaddNANBCN
78 77 ifbid φifNAsaddB2N0=ifhaddNANBCN2N0
79 1 2 3 4 sadcp1 φCN+1caddNANBCN
80 29 nn0cnd φ2
81 80 4 expp1d φ2N+1=2N2
82 73 80 mulcomd φ2N2=22N
83 81 82 eqtrd φ2N+1=22N
84 79 83 ifbieq1d φifCN+12N+10=ifcaddNANBCN22N0
85 78 84 oveq12d φifNAsaddB2N0+ifCN+12N+10=ifhaddNANBCN2N0+ifcaddNANBCN22N0
86 sadadd2lem2 2NifhaddNANBCN2N0+ifcaddNANBCN22N0=ifNA2N0+ifNB2N0+ifCN2N0
87 73 86 syl φifhaddNANBCN2N0+ifcaddNANBCN22N0=ifNA2N0+ifNB2N0+ifCN2N0
88 85 87 eqtrd φifNAsaddB2N0+ifCN+12N+10=ifNA2N0+ifNB2N0+ifCN2N0
89 6 88 oveq12d φKAsaddB0..^N+ifCN2N0+ifNAsaddB2N0+ifCN+12N+10=KA0..^N+KB0..^N+ifNA2N0+ifNB2N0+ifCN2N0
90 27 42 76 add32d φKAsaddB0..^N+ifNAsaddB2N0+ifCN+12N+10+ifCN2N0=KAsaddB0..^N+ifCN2N0+ifNAsaddB2N0+ifCN+12N+10
91 64 71 76 addassd φKA0..^N+KB0..^N+ifNA2N0+ifNB2N0+ifCN2N0=KA0..^N+KB0..^N+ifNA2N0+ifNB2N0+ifCN2N0
92 89 90 91 3eqtr4d φKAsaddB0..^N+ifNAsaddB2N0+ifCN+12N+10+ifCN2N0=KA0..^N+KB0..^N+ifNA2N0+ifNB2N0+ifCN2N0
93 43 72 76 92 addcan2ad φKAsaddB0..^N+ifNAsaddB2N0+ifCN+12N+10=KA0..^N+KB0..^N+ifNA2N0+ifNB2N0
94 27 34 41 addassd φKAsaddB0..^N+ifNAsaddB2N0+ifCN+12N+10=KAsaddB0..^N+ifNAsaddB2N0+ifCN+12N+10
95 53 67 63 70 add4d φKA0..^N+ifNA2N0+KB0..^N+ifNB2N0=KA0..^N+KB0..^N+ifNA2N0+ifNB2N0
96 93 94 95 3eqtr4d φKAsaddB0..^N+ifNAsaddB2N0+ifCN+12N+10=KA0..^N+ifNA2N0+KB0..^N+ifNB2N0
97 5 bitsinvp1 AsaddB0N0KAsaddB0..^N+1=KAsaddB0..^N+ifNAsaddB2N0
98 10 4 97 syl2anc φKAsaddB0..^N+1=KAsaddB0..^N+ifNAsaddB2N0
99 98 oveq1d φKAsaddB0..^N+1+ifCN+12N+10=KAsaddB0..^N+ifNAsaddB2N0+ifCN+12N+10
100 5 bitsinvp1 A0N0KA0..^N+1=KA0..^N+ifNA2N0
101 1 4 100 syl2anc φKA0..^N+1=KA0..^N+ifNA2N0
102 5 bitsinvp1 B0N0KB0..^N+1=KB0..^N+ifNB2N0
103 2 4 102 syl2anc φKB0..^N+1=KB0..^N+ifNB2N0
104 101 103 oveq12d φKA0..^N+1+KB0..^N+1=KA0..^N+ifNA2N0+KB0..^N+ifNB2N0
105 96 99 104 3eqtr4d φKAsaddB0..^N+1+ifCN+12N+10=KA0..^N+1+KB0..^N+1