Metamath Proof Explorer


Theorem bitsinv1

Description: There is an explicit inverse to the bits function for nonnegative integers (which can be extended to negative integers using bitscmp ), part 1. (Contributed by Mario Carneiro, 7-Sep-2016)

Ref Expression
Assertion bitsinv1 N0nbitsN2n=N

Proof

Step Hyp Ref Expression
1 oveq2 x=00..^x=0..^0
2 fzo0 0..^0=
3 1 2 eqtrdi x=00..^x=
4 3 ineq2d x=0bitsN0..^x=bitsN
5 in0 bitsN=
6 4 5 eqtrdi x=0bitsN0..^x=
7 6 sumeq1d x=0nbitsN0..^x2n=n2n
8 sum0 n2n=0
9 7 8 eqtrdi x=0nbitsN0..^x2n=0
10 oveq2 x=02x=20
11 2cn 2
12 exp0 220=1
13 11 12 ax-mp 20=1
14 10 13 eqtrdi x=02x=1
15 14 oveq2d x=0Nmod2x=Nmod1
16 9 15 eqeq12d x=0nbitsN0..^x2n=Nmod2x0=Nmod1
17 16 imbi2d x=0N0nbitsN0..^x2n=Nmod2xN00=Nmod1
18 oveq2 x=k0..^x=0..^k
19 18 ineq2d x=kbitsN0..^x=bitsN0..^k
20 19 sumeq1d x=knbitsN0..^x2n=nbitsN0..^k2n
21 oveq2 x=k2x=2k
22 21 oveq2d x=kNmod2x=Nmod2k
23 20 22 eqeq12d x=knbitsN0..^x2n=Nmod2xnbitsN0..^k2n=Nmod2k
24 23 imbi2d x=kN0nbitsN0..^x2n=Nmod2xN0nbitsN0..^k2n=Nmod2k
25 oveq2 x=k+10..^x=0..^k+1
26 25 ineq2d x=k+1bitsN0..^x=bitsN0..^k+1
27 26 sumeq1d x=k+1nbitsN0..^x2n=nbitsN0..^k+12n
28 oveq2 x=k+12x=2k+1
29 28 oveq2d x=k+1Nmod2x=Nmod2k+1
30 27 29 eqeq12d x=k+1nbitsN0..^x2n=Nmod2xnbitsN0..^k+12n=Nmod2k+1
31 30 imbi2d x=k+1N0nbitsN0..^x2n=Nmod2xN0nbitsN0..^k+12n=Nmod2k+1
32 oveq2 x=N0..^x=0..^N
33 32 ineq2d x=NbitsN0..^x=bitsN0..^N
34 33 sumeq1d x=NnbitsN0..^x2n=nbitsN0..^N2n
35 oveq2 x=N2x=2N
36 35 oveq2d x=NNmod2x=Nmod2N
37 34 36 eqeq12d x=NnbitsN0..^x2n=Nmod2xnbitsN0..^N2n=Nmod2N
38 37 imbi2d x=NN0nbitsN0..^x2n=Nmod2xN0nbitsN0..^N2n=Nmod2N
39 nn0z N0N
40 zmod10 NNmod1=0
41 39 40 syl N0Nmod1=0
42 41 eqcomd N00=Nmod1
43 oveq1 nbitsN0..^k2n=Nmod2knbitsN0..^k2n+nbitsNk2n=Nmod2k+nbitsNk2n
44 fzonel ¬k0..^k
45 44 a1i N0k0¬k0..^k
46 disjsn 0..^kk=¬k0..^k
47 45 46 sylibr N0k00..^kk=
48 47 ineq2d N0k0bitsN0..^kk=bitsN
49 inindi bitsN0..^kk=bitsN0..^kbitsNk
50 48 49 5 3eqtr3g N0k0bitsN0..^kbitsNk=
51 simpr N0k0k0
52 nn0uz 0=0
53 51 52 eleqtrdi N0k0k0
54 fzosplitsn k00..^k+1=0..^kk
55 53 54 syl N0k00..^k+1=0..^kk
56 55 ineq2d N0k0bitsN0..^k+1=bitsN0..^kk
57 indi bitsN0..^kk=bitsN0..^kbitsNk
58 56 57 eqtrdi N0k0bitsN0..^k+1=bitsN0..^kbitsNk
59 fzofi 0..^k+1Fin
60 inss2 bitsN0..^k+10..^k+1
61 ssfi 0..^k+1FinbitsN0..^k+10..^k+1bitsN0..^k+1Fin
62 59 60 61 mp2an bitsN0..^k+1Fin
63 62 a1i N0k0bitsN0..^k+1Fin
64 2nn 2
65 64 a1i N0k0nbitsN0..^k+12
66 simpr N0k0nbitsN0..^k+1nbitsN0..^k+1
67 66 elin2d N0k0nbitsN0..^k+1n0..^k+1
68 elfzouz n0..^k+1n0
69 67 68 syl N0k0nbitsN0..^k+1n0
70 69 52 eleqtrrdi N0k0nbitsN0..^k+1n0
71 65 70 nnexpcld N0k0nbitsN0..^k+12n
72 71 nncnd N0k0nbitsN0..^k+12n
73 50 58 63 72 fsumsplit N0k0nbitsN0..^k+12n=nbitsN0..^k2n+nbitsNk2n
74 bitsinv1lem Nk0Nmod2k+1=Nmod2k+ifkbitsN2k0
75 39 74 sylan N0k0Nmod2k+1=Nmod2k+ifkbitsN2k0
76 eqeq2 2k=ifkbitsN2k0nbitsNk2n=2knbitsNk2n=ifkbitsN2k0
77 eqeq2 0=ifkbitsN2k0nbitsNk2n=0nbitsNk2n=ifkbitsN2k0
78 simpr N0k0kbitsNkbitsN
79 78 snssd N0k0kbitsNkbitsN
80 sseqin2 kbitsNbitsNk=k
81 79 80 sylib N0k0kbitsNbitsNk=k
82 81 sumeq1d N0k0kbitsNnbitsNk2n=nk2n
83 simplr N0k0kbitsNk0
84 64 a1i N0k0kbitsN2
85 84 83 nnexpcld N0k0kbitsN2k
86 85 nncnd N0k0kbitsN2k
87 oveq2 n=k2n=2k
88 87 sumsn k02knk2n=2k
89 83 86 88 syl2anc N0k0kbitsNnk2n=2k
90 82 89 eqtrd N0k0kbitsNnbitsNk2n=2k
91 simpr N0k0¬kbitsN¬kbitsN
92 disjsn bitsNk=¬kbitsN
93 91 92 sylibr N0k0¬kbitsNbitsNk=
94 93 sumeq1d N0k0¬kbitsNnbitsNk2n=n2n
95 94 8 eqtrdi N0k0¬kbitsNnbitsNk2n=0
96 76 77 90 95 ifbothda N0k0nbitsNk2n=ifkbitsN2k0
97 96 oveq2d N0k0Nmod2k+nbitsNk2n=Nmod2k+ifkbitsN2k0
98 75 97 eqtr4d N0k0Nmod2k+1=Nmod2k+nbitsNk2n
99 73 98 eqeq12d N0k0nbitsN0..^k+12n=Nmod2k+1nbitsN0..^k2n+nbitsNk2n=Nmod2k+nbitsNk2n
100 43 99 imbitrrid N0k0nbitsN0..^k2n=Nmod2knbitsN0..^k+12n=Nmod2k+1
101 100 expcom k0N0nbitsN0..^k2n=Nmod2knbitsN0..^k+12n=Nmod2k+1
102 101 a2d k0N0nbitsN0..^k2n=Nmod2kN0nbitsN0..^k+12n=Nmod2k+1
103 17 24 31 38 42 102 nn0ind N0N0nbitsN0..^N2n=Nmod2N
104 103 pm2.43i N0nbitsN0..^N2n=Nmod2N
105 id N0N0
106 105 52 eleqtrdi N0N0
107 64 a1i N02
108 107 105 nnexpcld N02N
109 108 nnzd N02N
110 2z 2
111 uzid 222
112 110 111 ax-mp 22
113 bernneq3 22N0N<2N
114 112 113 mpan N0N<2N
115 elfzo2 N0..^2NN02NN<2N
116 106 109 114 115 syl3anbrc N0N0..^2N
117 bitsfzo NN0N0..^2NbitsN0..^N
118 39 105 117 syl2anc N0N0..^2NbitsN0..^N
119 116 118 mpbid N0bitsN0..^N
120 df-ss bitsN0..^NbitsN0..^N=bitsN
121 119 120 sylib N0bitsN0..^N=bitsN
122 121 sumeq1d N0nbitsN0..^N2n=nbitsN2n
123 nn0re N0N
124 2rp 2+
125 124 a1i N02+
126 125 39 rpexpcld N02N+
127 nn0ge0 N00N
128 modid N2N+0NN<2NNmod2N=N
129 123 126 127 114 128 syl22anc N0Nmod2N=N
130 104 122 129 3eqtr3d N0nbitsN2n=N