Metamath Proof Explorer


Theorem bitsinv1lem

Description: Lemma for bitsinv1 . (Contributed by Mario Carneiro, 22-Sep-2016)

Ref Expression
Assertion bitsinv1lem NM0Nmod2M+1=Nmod2M+ifMbitsN2M0

Proof

Step Hyp Ref Expression
1 oveq2 2M=ifMbitsN2M0Nmod2M+2M=Nmod2M+ifMbitsN2M0
2 1 eqeq2d 2M=ifMbitsN2M0Nmod2M+1=Nmod2M+2MNmod2M+1=Nmod2M+ifMbitsN2M0
3 oveq2 0=ifMbitsN2M0Nmod2M+0=Nmod2M+ifMbitsN2M0
4 3 eqeq2d 0=ifMbitsN2M0Nmod2M+1=Nmod2M+0Nmod2M+1=Nmod2M+ifMbitsN2M0
5 simpl NM0N
6 2nn 2
7 6 a1i NM02
8 simpr NM0M0
9 7 8 nnexpcld NM02M
10 5 9 zmodcld NM0Nmod2M0
11 10 nn0cnd NM0Nmod2M
12 11 adantr NM0MbitsNNmod2M
13 1nn0 10
14 13 a1i NM010
15 8 14 nn0addcld NM0M+10
16 7 15 nnexpcld NM02M+1
17 5 16 zmodcld NM0Nmod2M+10
18 17 nn0cnd NM0Nmod2M+1
19 18 adantr NM0MbitsNNmod2M+1
20 12 19 pncan3d NM0MbitsNNmod2M+Nmod2M+1-Nmod2M=Nmod2M+1
21 18 11 subcld NM0Nmod2M+1Nmod2M
22 21 adantr NM0MbitsNNmod2M+1Nmod2M
23 6 a1i NM0MbitsN2
24 simplr NM0MbitsNM0
25 23 24 nnexpcld NM0MbitsN2M
26 25 nncnd NM0MbitsN2M
27 2cnd NM02
28 2ne0 20
29 28 a1i NM020
30 8 nn0zd NM0M
31 27 29 30 expne0d NM02M0
32 31 adantr NM0MbitsN2M0
33 z0even 20
34 id Nmod2M+1Nmod2M2M=0Nmod2M+1Nmod2M2M=0
35 33 34 breqtrrid Nmod2M+1Nmod2M2M=02Nmod2M+1Nmod2M2M
36 bitsval2 NM0MbitsN¬2N2M
37 5 zred NM0N
38 9 nnrpd NM02M+
39 moddiffl N2M+NNmod2M2M=N2M
40 37 38 39 syl2anc NM0NNmod2M2M=N2M
41 40 breq2d NM02NNmod2M2M2N2M
42 2z 2
43 42 a1i NM02
44 moddifz N2M+NNmod2M2M
45 37 38 44 syl2anc NM0NNmod2M2M
46 5 zcnd NM0N
47 46 11 18 nnncan1d NM0N-Nmod2M-NNmod2M+1=Nmod2M+1Nmod2M
48 47 oveq1d NM0N-Nmod2M-NNmod2M+12M=Nmod2M+1Nmod2M2M
49 46 11 subcld NM0NNmod2M
50 46 18 subcld NM0NNmod2M+1
51 9 nncnd NM02M
52 49 50 51 31 divsubdird NM0N-Nmod2M-NNmod2M+12M=NNmod2M2MNNmod2M+12M
53 48 52 eqtr3d NM0Nmod2M+1Nmod2M2M=NNmod2M2MNNmod2M+12M
54 27 50 mulcomd NM02NNmod2M+1=NNmod2M+12
55 27 51 mulcomd NM022M=2M2
56 27 8 expp1d NM02M+1=2M2
57 55 56 eqtr4d NM022M=2M+1
58 54 57 oveq12d NM02NNmod2M+122M=NNmod2M+122M+1
59 50 51 27 31 29 divcan5d NM02NNmod2M+122M=NNmod2M+12M
60 16 nncnd NM02M+1
61 30 peano2zd NM0M+1
62 27 29 61 expne0d NM02M+10
63 50 27 60 62 div23d NM0NNmod2M+122M+1=NNmod2M+12M+12
64 58 59 63 3eqtr3d NM0NNmod2M+12M=NNmod2M+12M+12
65 16 nnrpd NM02M+1+
66 moddifz N2M+1+NNmod2M+12M+1
67 37 65 66 syl2anc NM0NNmod2M+12M+1
68 67 43 zmulcld NM0NNmod2M+12M+12
69 64 68 eqeltrd NM0NNmod2M+12M
70 45 69 zsubcld NM0NNmod2M2MNNmod2M+12M
71 53 70 eqeltrd NM0Nmod2M+1Nmod2M2M
72 dvdsmul2 NNmod2M+12M+122NNmod2M+12M+12
73 67 43 72 syl2anc NM02NNmod2M+12M+12
74 46 18 11 nnncan2d NM0N-Nmod2M-Nmod2M+1Nmod2M=NNmod2M+1
75 74 oveq1d NM0N-Nmod2M-Nmod2M+1Nmod2M2M=NNmod2M+12M
76 49 21 51 31 divsubdird NM0N-Nmod2M-Nmod2M+1Nmod2M2M=NNmod2M2MNmod2M+1Nmod2M2M
77 75 76 64 3eqtr3d NM0NNmod2M2MNmod2M+1Nmod2M2M=NNmod2M+12M+12
78 73 77 breqtrrd NM02NNmod2M2MNmod2M+1Nmod2M2M
79 dvdssub2 2NNmod2M2MNmod2M+1Nmod2M2M2NNmod2M2MNmod2M+1Nmod2M2M2NNmod2M2M2Nmod2M+1Nmod2M2M
80 43 45 71 78 79 syl31anc NM02NNmod2M2M2Nmod2M+1Nmod2M2M
81 41 80 bitr3d NM02N2M2Nmod2M+1Nmod2M2M
82 81 notbid NM0¬2N2M¬2Nmod2M+1Nmod2M2M
83 36 82 bitrd NM0MbitsN¬2Nmod2M+1Nmod2M2M
84 83 con2bid NM02Nmod2M+1Nmod2M2M¬MbitsN
85 35 84 imbitrid NM0Nmod2M+1Nmod2M2M=0¬MbitsN
86 85 con2d NM0MbitsN¬Nmod2M+1Nmod2M2M=0
87 df-neg 1=01
88 51 mulm1d NM0-12M=2M
89 9 nnred NM02M
90 89 renegcld NM02M
91 37 38 modcld NM0Nmod2M
92 91 renegcld NM0Nmod2M
93 37 65 modcld NM0Nmod2M+1
94 93 91 resubcld NM0Nmod2M+1Nmod2M
95 modlt N2M+Nmod2M<2M
96 37 38 95 syl2anc NM0Nmod2M<2M
97 91 89 ltnegd NM0Nmod2M<2M2M<Nmod2M
98 96 97 mpbid NM02M<Nmod2M
99 df-neg Nmod2M=0Nmod2M
100 0red NM00
101 modge0 N2M+1+0Nmod2M+1
102 37 65 101 syl2anc NM00Nmod2M+1
103 100 93 91 102 lesub1dd NM00Nmod2MNmod2M+1Nmod2M
104 99 103 eqbrtrid NM0Nmod2MNmod2M+1Nmod2M
105 90 92 94 98 104 ltletrd NM02M<Nmod2M+1Nmod2M
106 88 105 eqbrtrd NM0-12M<Nmod2M+1Nmod2M
107 1red NM01
108 107 renegcld NM01
109 108 94 38 ltmuldivd NM0-12M<Nmod2M+1Nmod2M1<Nmod2M+1Nmod2M2M
110 106 109 mpbid NM01<Nmod2M+1Nmod2M2M
111 87 110 eqbrtrrid NM001<Nmod2M+1Nmod2M2M
112 0zd NM00
113 zlem1lt 0Nmod2M+1Nmod2M2M0Nmod2M+1Nmod2M2M01<Nmod2M+1Nmod2M2M
114 112 71 113 syl2anc NM00Nmod2M+1Nmod2M2M01<Nmod2M+1Nmod2M2M
115 111 114 mpbird NM00Nmod2M+1Nmod2M2M
116 elnn0z Nmod2M+1Nmod2M2M0Nmod2M+1Nmod2M2M0Nmod2M+1Nmod2M2M
117 71 115 116 sylanbrc NM0Nmod2M+1Nmod2M2M0
118 nn0uz 0=0
119 117 118 eleqtrdi NM0Nmod2M+1Nmod2M2M0
120 16 nnred NM02M+1
121 modge0 N2M+0Nmod2M
122 37 38 121 syl2anc NM00Nmod2M
123 93 91 subge02d NM00Nmod2MNmod2M+1Nmod2MNmod2M+1
124 122 123 mpbid NM0Nmod2M+1Nmod2MNmod2M+1
125 modlt N2M+1+Nmod2M+1<2M+1
126 37 65 125 syl2anc NM0Nmod2M+1<2M+1
127 94 93 120 124 126 lelttrd NM0Nmod2M+1Nmod2M<2M+1
128 127 56 breqtrd NM0Nmod2M+1Nmod2M<2M2
129 7 nnred NM02
130 94 129 38 ltdivmuld NM0Nmod2M+1Nmod2M2M<2Nmod2M+1Nmod2M<2M2
131 128 130 mpbird NM0Nmod2M+1Nmod2M2M<2
132 elfzo2 Nmod2M+1Nmod2M2M0..^2Nmod2M+1Nmod2M2M02Nmod2M+1Nmod2M2M<2
133 119 43 131 132 syl3anbrc NM0Nmod2M+1Nmod2M2M0..^2
134 fzo0to2pr 0..^2=01
135 133 134 eleqtrdi NM0Nmod2M+1Nmod2M2M01
136 elpri Nmod2M+1Nmod2M2M01Nmod2M+1Nmod2M2M=0Nmod2M+1Nmod2M2M=1
137 135 136 syl NM0Nmod2M+1Nmod2M2M=0Nmod2M+1Nmod2M2M=1
138 137 ord NM0¬Nmod2M+1Nmod2M2M=0Nmod2M+1Nmod2M2M=1
139 86 138 syld NM0MbitsNNmod2M+1Nmod2M2M=1
140 139 imp NM0MbitsNNmod2M+1Nmod2M2M=1
141 22 26 32 140 diveq1d NM0MbitsNNmod2M+1Nmod2M=2M
142 141 oveq2d NM0MbitsNNmod2M+Nmod2M+1-Nmod2M=Nmod2M+2M
143 20 142 eqtr3d NM0MbitsNNmod2M+1=Nmod2M+2M
144 18 adantr NM0¬MbitsNNmod2M+1
145 11 adantr NM0¬MbitsNNmod2M
146 21 adantr NM0¬MbitsNNmod2M+1Nmod2M
147 51 adantr NM0¬MbitsN2M
148 31 adantr NM0¬MbitsN2M0
149 n2dvds1 ¬21
150 breq2 Nmod2M+1Nmod2M2M=12Nmod2M+1Nmod2M2M21
151 149 150 mtbiri Nmod2M+1Nmod2M2M=1¬2Nmod2M+1Nmod2M2M
152 138 151 syl6 NM0¬Nmod2M+1Nmod2M2M=0¬2Nmod2M+1Nmod2M2M
153 152 83 sylibrd NM0¬Nmod2M+1Nmod2M2M=0MbitsN
154 153 con1d NM0¬MbitsNNmod2M+1Nmod2M2M=0
155 154 imp NM0¬MbitsNNmod2M+1Nmod2M2M=0
156 146 147 148 155 diveq0d NM0¬MbitsNNmod2M+1Nmod2M=0
157 144 145 156 subeq0d NM0¬MbitsNNmod2M+1=Nmod2M
158 145 addridd NM0¬MbitsNNmod2M+0=Nmod2M
159 157 158 eqtr4d NM0¬MbitsNNmod2M+1=Nmod2M+0
160 2 4 143 159 ifbothda NM0Nmod2M+1=Nmod2M+ifMbitsN2M0