Metamath Proof Explorer


Theorem sadasslem

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

Ref Expression
Hypotheses sadasslem.1 φA0
sadasslem.2 φB0
sadasslem.3 φC0
sadasslem.4 φN0
Assertion sadasslem φAsaddBsaddC0..^N=AsaddBsaddC0..^N

Proof

Step Hyp Ref Expression
1 sadasslem.1 φA0
2 sadasslem.2 φB0
3 sadasslem.3 φC0
4 sadasslem.4 φN0
5 inss1 A0..^NA
6 5 1 sstrid φA0..^N0
7 fzofi 0..^NFin
8 7 a1i φ0..^NFin
9 inss2 A0..^N0..^N
10 ssfi 0..^NFinA0..^N0..^NA0..^NFin
11 8 9 10 sylancl φA0..^NFin
12 elfpw A0..^N𝒫0FinA0..^N0A0..^NFin
13 6 11 12 sylanbrc φA0..^N𝒫0Fin
14 bitsf1o bits0:01-1 onto𝒫0Fin
15 f1ocnv bits0:01-1 onto𝒫0Finbits0-1:𝒫0Fin1-1 onto0
16 f1of bits0-1:𝒫0Fin1-1 onto0bits0-1:𝒫0Fin0
17 14 15 16 mp2b bits0-1:𝒫0Fin0
18 17 ffvelcdmi A0..^N𝒫0Finbits0-1A0..^N0
19 13 18 syl φbits0-1A0..^N0
20 19 nn0cnd φbits0-1A0..^N
21 inss1 B0..^NB
22 21 2 sstrid φB0..^N0
23 inss2 B0..^N0..^N
24 ssfi 0..^NFinB0..^N0..^NB0..^NFin
25 8 23 24 sylancl φB0..^NFin
26 elfpw B0..^N𝒫0FinB0..^N0B0..^NFin
27 22 25 26 sylanbrc φB0..^N𝒫0Fin
28 17 ffvelcdmi B0..^N𝒫0Finbits0-1B0..^N0
29 27 28 syl φbits0-1B0..^N0
30 29 nn0cnd φbits0-1B0..^N
31 inss1 C0..^NC
32 31 3 sstrid φC0..^N0
33 inss2 C0..^N0..^N
34 ssfi 0..^NFinC0..^N0..^NC0..^NFin
35 8 33 34 sylancl φC0..^NFin
36 elfpw C0..^N𝒫0FinC0..^N0C0..^NFin
37 32 35 36 sylanbrc φC0..^N𝒫0Fin
38 17 ffvelcdmi C0..^N𝒫0Finbits0-1C0..^N0
39 37 38 syl φbits0-1C0..^N0
40 39 nn0cnd φbits0-1C0..^N
41 20 30 40 addassd φbits0-1A0..^N+bits0-1B0..^N+bits0-1C0..^N=bits0-1A0..^N+bits0-1B0..^N+bits0-1C0..^N
42 41 oveq1d φbits0-1A0..^N+bits0-1B0..^N+bits0-1C0..^Nmod2N=bits0-1A0..^N+bits0-1B0..^N+bits0-1C0..^Nmod2N
43 inss1 AsaddB0..^NAsaddB
44 sadcl A0B0AsaddB0
45 1 2 44 syl2anc φAsaddB0
46 43 45 sstrid φAsaddB0..^N0
47 inss2 AsaddB0..^N0..^N
48 ssfi 0..^NFinAsaddB0..^N0..^NAsaddB0..^NFin
49 8 47 48 sylancl φAsaddB0..^NFin
50 elfpw AsaddB0..^N𝒫0FinAsaddB0..^N0AsaddB0..^NFin
51 46 49 50 sylanbrc φAsaddB0..^N𝒫0Fin
52 17 ffvelcdmi AsaddB0..^N𝒫0Finbits0-1AsaddB0..^N0
53 51 52 syl φbits0-1AsaddB0..^N0
54 53 nn0red φbits0-1AsaddB0..^N
55 19 nn0red φbits0-1A0..^N
56 29 nn0red φbits0-1B0..^N
57 55 56 readdcld φbits0-1A0..^N+bits0-1B0..^N
58 39 nn0red φbits0-1C0..^N
59 2rp 2+
60 59 a1i φ2+
61 4 nn0zd φN
62 60 61 rpexpcld φ2N+
63 eqid seq0c2𝑜,m0ifcaddmAmBc1𝑜n0ifn=0n1=seq0c2𝑜,m0ifcaddmAmBc1𝑜n0ifn=0n1
64 eqid bits0-1=bits0-1
65 1 2 63 4 64 sadadd3 φbits0-1AsaddB0..^Nmod2N=bits0-1A0..^N+bits0-1B0..^Nmod2N
66 eqidd φbits0-1C0..^Nmod2N=bits0-1C0..^Nmod2N
67 54 57 58 58 62 65 66 modadd12d φbits0-1AsaddB0..^N+bits0-1C0..^Nmod2N=bits0-1A0..^N+bits0-1B0..^N+bits0-1C0..^Nmod2N
68 inss1 BsaddC0..^NBsaddC
69 sadcl B0C0BsaddC0
70 2 3 69 syl2anc φBsaddC0
71 68 70 sstrid φBsaddC0..^N0
72 inss2 BsaddC0..^N0..^N
73 ssfi 0..^NFinBsaddC0..^N0..^NBsaddC0..^NFin
74 8 72 73 sylancl φBsaddC0..^NFin
75 elfpw BsaddC0..^N𝒫0FinBsaddC0..^N0BsaddC0..^NFin
76 71 74 75 sylanbrc φBsaddC0..^N𝒫0Fin
77 17 ffvelcdmi BsaddC0..^N𝒫0Finbits0-1BsaddC0..^N0
78 76 77 syl φbits0-1BsaddC0..^N0
79 78 nn0red φbits0-1BsaddC0..^N
80 56 58 readdcld φbits0-1B0..^N+bits0-1C0..^N
81 eqidd φbits0-1A0..^Nmod2N=bits0-1A0..^Nmod2N
82 eqid seq0c2𝑜,m0ifcaddmBmCc1𝑜n0ifn=0n1=seq0c2𝑜,m0ifcaddmBmCc1𝑜n0ifn=0n1
83 2 3 82 4 64 sadadd3 φbits0-1BsaddC0..^Nmod2N=bits0-1B0..^N+bits0-1C0..^Nmod2N
84 55 55 79 80 62 81 83 modadd12d φbits0-1A0..^N+bits0-1BsaddC0..^Nmod2N=bits0-1A0..^N+bits0-1B0..^N+bits0-1C0..^Nmod2N
85 42 67 84 3eqtr4d φbits0-1AsaddB0..^N+bits0-1C0..^Nmod2N=bits0-1A0..^N+bits0-1BsaddC0..^Nmod2N
86 eqid seq0c2𝑜,m0ifcaddmAsaddBmCc1𝑜n0ifn=0n1=seq0c2𝑜,m0ifcaddmAsaddBmCc1𝑜n0ifn=0n1
87 45 3 86 4 64 sadadd3 φbits0-1AsaddBsaddC0..^Nmod2N=bits0-1AsaddB0..^N+bits0-1C0..^Nmod2N
88 eqid seq0c2𝑜,m0ifcaddmAmBsaddCc1𝑜n0ifn=0n1=seq0c2𝑜,m0ifcaddmAmBsaddCc1𝑜n0ifn=0n1
89 1 70 88 4 64 sadadd3 φbits0-1AsaddBsaddC0..^Nmod2N=bits0-1A0..^N+bits0-1BsaddC0..^Nmod2N
90 85 87 89 3eqtr4d φbits0-1AsaddBsaddC0..^Nmod2N=bits0-1AsaddBsaddC0..^Nmod2N
91 inss1 AsaddBsaddC0..^NAsaddBsaddC
92 sadcl AsaddB0C0AsaddBsaddC0
93 45 3 92 syl2anc φAsaddBsaddC0
94 91 93 sstrid φAsaddBsaddC0..^N0
95 inss2 AsaddBsaddC0..^N0..^N
96 ssfi 0..^NFinAsaddBsaddC0..^N0..^NAsaddBsaddC0..^NFin
97 8 95 96 sylancl φAsaddBsaddC0..^NFin
98 elfpw AsaddBsaddC0..^N𝒫0FinAsaddBsaddC0..^N0AsaddBsaddC0..^NFin
99 94 97 98 sylanbrc φAsaddBsaddC0..^N𝒫0Fin
100 17 ffvelcdmi AsaddBsaddC0..^N𝒫0Finbits0-1AsaddBsaddC0..^N0
101 99 100 syl φbits0-1AsaddBsaddC0..^N0
102 101 nn0red φbits0-1AsaddBsaddC0..^N
103 101 nn0ge0d φ0bits0-1AsaddBsaddC0..^N
104 101 fvresd φbits0bits0-1AsaddBsaddC0..^N=bitsbits0-1AsaddBsaddC0..^N
105 f1ocnvfv2 bits0:01-1 onto𝒫0FinAsaddBsaddC0..^N𝒫0Finbits0bits0-1AsaddBsaddC0..^N=AsaddBsaddC0..^N
106 14 99 105 sylancr φbits0bits0-1AsaddBsaddC0..^N=AsaddBsaddC0..^N
107 104 106 eqtr3d φbitsbits0-1AsaddBsaddC0..^N=AsaddBsaddC0..^N
108 107 95 eqsstrdi φbitsbits0-1AsaddBsaddC0..^N0..^N
109 101 nn0zd φbits0-1AsaddBsaddC0..^N
110 bitsfzo bits0-1AsaddBsaddC0..^NN0bits0-1AsaddBsaddC0..^N0..^2Nbitsbits0-1AsaddBsaddC0..^N0..^N
111 109 4 110 syl2anc φbits0-1AsaddBsaddC0..^N0..^2Nbitsbits0-1AsaddBsaddC0..^N0..^N
112 108 111 mpbird φbits0-1AsaddBsaddC0..^N0..^2N
113 elfzolt2 bits0-1AsaddBsaddC0..^N0..^2Nbits0-1AsaddBsaddC0..^N<2N
114 112 113 syl φbits0-1AsaddBsaddC0..^N<2N
115 modid bits0-1AsaddBsaddC0..^N2N+0bits0-1AsaddBsaddC0..^Nbits0-1AsaddBsaddC0..^N<2Nbits0-1AsaddBsaddC0..^Nmod2N=bits0-1AsaddBsaddC0..^N
116 102 62 103 114 115 syl22anc φbits0-1AsaddBsaddC0..^Nmod2N=bits0-1AsaddBsaddC0..^N
117 inss1 AsaddBsaddC0..^NAsaddBsaddC
118 sadcl A0BsaddC0AsaddBsaddC0
119 1 70 118 syl2anc φAsaddBsaddC0
120 117 119 sstrid φAsaddBsaddC0..^N0
121 inss2 AsaddBsaddC0..^N0..^N
122 ssfi 0..^NFinAsaddBsaddC0..^N0..^NAsaddBsaddC0..^NFin
123 8 121 122 sylancl φAsaddBsaddC0..^NFin
124 elfpw AsaddBsaddC0..^N𝒫0FinAsaddBsaddC0..^N0AsaddBsaddC0..^NFin
125 120 123 124 sylanbrc φAsaddBsaddC0..^N𝒫0Fin
126 17 ffvelcdmi AsaddBsaddC0..^N𝒫0Finbits0-1AsaddBsaddC0..^N0
127 125 126 syl φbits0-1AsaddBsaddC0..^N0
128 127 nn0red φbits0-1AsaddBsaddC0..^N
129 2nn 2
130 129 a1i φ2
131 130 4 nnexpcld φ2N
132 131 nnrpd φ2N+
133 127 nn0ge0d φ0bits0-1AsaddBsaddC0..^N
134 127 fvresd φbits0bits0-1AsaddBsaddC0..^N=bitsbits0-1AsaddBsaddC0..^N
135 f1ocnvfv2 bits0:01-1 onto𝒫0FinAsaddBsaddC0..^N𝒫0Finbits0bits0-1AsaddBsaddC0..^N=AsaddBsaddC0..^N
136 14 125 135 sylancr φbits0bits0-1AsaddBsaddC0..^N=AsaddBsaddC0..^N
137 134 136 eqtr3d φbitsbits0-1AsaddBsaddC0..^N=AsaddBsaddC0..^N
138 137 121 eqsstrdi φbitsbits0-1AsaddBsaddC0..^N0..^N
139 127 nn0zd φbits0-1AsaddBsaddC0..^N
140 bitsfzo bits0-1AsaddBsaddC0..^NN0bits0-1AsaddBsaddC0..^N0..^2Nbitsbits0-1AsaddBsaddC0..^N0..^N
141 139 4 140 syl2anc φbits0-1AsaddBsaddC0..^N0..^2Nbitsbits0-1AsaddBsaddC0..^N0..^N
142 138 141 mpbird φbits0-1AsaddBsaddC0..^N0..^2N
143 elfzolt2 bits0-1AsaddBsaddC0..^N0..^2Nbits0-1AsaddBsaddC0..^N<2N
144 142 143 syl φbits0-1AsaddBsaddC0..^N<2N
145 modid bits0-1AsaddBsaddC0..^N2N+0bits0-1AsaddBsaddC0..^Nbits0-1AsaddBsaddC0..^N<2Nbits0-1AsaddBsaddC0..^Nmod2N=bits0-1AsaddBsaddC0..^N
146 128 132 133 144 145 syl22anc φbits0-1AsaddBsaddC0..^Nmod2N=bits0-1AsaddBsaddC0..^N
147 90 116 146 3eqtr3d φbits0-1AsaddBsaddC0..^N=bits0-1AsaddBsaddC0..^N
148 f1of1 bits0-1:𝒫0Fin1-1 onto0bits0-1:𝒫0Fin1-10
149 14 15 148 mp2b bits0-1:𝒫0Fin1-10
150 f1fveq bits0-1:𝒫0Fin1-10AsaddBsaddC0..^N𝒫0FinAsaddBsaddC0..^N𝒫0Finbits0-1AsaddBsaddC0..^N=bits0-1AsaddBsaddC0..^NAsaddBsaddC0..^N=AsaddBsaddC0..^N
151 149 150 mpan AsaddBsaddC0..^N𝒫0FinAsaddBsaddC0..^N𝒫0Finbits0-1AsaddBsaddC0..^N=bits0-1AsaddBsaddC0..^NAsaddBsaddC0..^N=AsaddBsaddC0..^N
152 99 125 151 syl2anc φbits0-1AsaddBsaddC0..^N=bits0-1AsaddBsaddC0..^NAsaddBsaddC0..^N=AsaddBsaddC0..^N
153 147 152 mpbid φAsaddBsaddC0..^N=AsaddBsaddC0..^N