Metamath Proof Explorer


Theorem bitsinv1lem

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

Ref Expression
Assertion bitsinv1lem ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → N mod 2 M + 1 = N mod 2 M + if M ∈ bits ⁡ N 2 M 0

Proof

Step Hyp Ref Expression
1 oveq2 ⊢ 2 M = if M ∈ bits ⁡ N 2 M 0 → N mod 2 M + 2 M = N mod 2 M + if M ∈ bits ⁡ N 2 M 0
2 1 eqeq2d ⊢ 2 M = if M ∈ bits ⁡ N 2 M 0 → N mod 2 M + 1 = N mod 2 M + 2 M ↔ N mod 2 M + 1 = N mod 2 M + if M ∈ bits ⁡ N 2 M 0
3 oveq2 ⊢ 0 = if M ∈ bits ⁡ N 2 M 0 → N mod 2 M + 0 = N mod 2 M + if M ∈ bits ⁡ N 2 M 0
4 3 eqeq2d ⊢ 0 = if M ∈ bits ⁡ N 2 M 0 → N mod 2 M + 1 = N mod 2 M + 0 ↔ N mod 2 M + 1 = N mod 2 M + if M ∈ bits ⁡ N 2 M 0
5 simpl ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → N ∈ ℤ
6 2nn ⊢ 2 ∈ ℕ
7 6 a1i ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → 2 ∈ ℕ
8 simpr ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → M ∈ ℕ 0
9 7 8 nnexpcld ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → 2 M ∈ ℕ
10 5 9 zmodcld ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → N mod 2 M ∈ ℕ 0
11 10 nn0cnd ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → N mod 2 M ∈ ℂ
12 11 adantr ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ M ∈ bits ⁡ N → N mod 2 M ∈ ℂ
13 1nn0 ⊢ 1 ∈ ℕ 0
14 13 a1i ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → 1 ∈ ℕ 0
15 8 14 nn0addcld ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → M + 1 ∈ ℕ 0
16 7 15 nnexpcld ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → 2 M + 1 ∈ ℕ
17 5 16 zmodcld ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → N mod 2 M + 1 ∈ ℕ 0
18 17 nn0cnd ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → N mod 2 M + 1 ∈ ℂ
19 18 adantr ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ M ∈ bits ⁡ N → N mod 2 M + 1 ∈ ℂ
20 12 19 pncan3d ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ M ∈ bits ⁡ N → N mod 2 M + N mod 2 M + 1 - N mod 2 M = N mod 2 M + 1
21 18 11 subcld ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → N mod 2 M + 1 − N mod 2 M ∈ ℂ
22 21 adantr ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ M ∈ bits ⁡ N → N mod 2 M + 1 − N mod 2 M ∈ ℂ
23 6 a1i ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ M ∈ bits ⁡ N → 2 ∈ ℕ
24 simplr ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ M ∈ bits ⁡ N → M ∈ ℕ 0
25 23 24 nnexpcld ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ M ∈ bits ⁡ N → 2 M ∈ ℕ
26 25 nncnd ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ M ∈ bits ⁡ N → 2 M ∈ ℂ
27 2cnd ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → 2 ∈ ℂ
28 2ne0 ⊢ 2 ≠ 0
29 28 a1i ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → 2 ≠ 0
30 8 nn0zd ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → M ∈ ℤ
31 27 29 30 expne0d ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → 2 M ≠ 0
32 31 adantr ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ M ∈ bits ⁡ N → 2 M ≠ 0
33 z0even ⊢ 2 ∥ 0
34 id ⊢ N mod 2 M + 1 − N mod 2 M 2 M = 0 → N mod 2 M + 1 − N mod 2 M 2 M = 0
35 33 34 breqtrrid ⊢ N mod 2 M + 1 − N mod 2 M 2 M = 0 → 2 ∥ N mod 2 M + 1 − N mod 2 M 2 M
36 bitsval2 ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → M ∈ bits ⁡ N ↔ ¬ 2 ∥ N 2 M
37 5 zred ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → N ∈ ℝ
38 9 nnrpd ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → 2 M ∈ ℝ +
39 moddiffl ⊢ N ∈ ℝ ∧ 2 M ∈ ℝ + → N − N mod 2 M 2 M = N 2 M
40 37 38 39 syl2anc ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → N − N mod 2 M 2 M = N 2 M
41 40 breq2d ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → 2 ∥ N − N mod 2 M 2 M ↔ 2 ∥ N 2 M
42 2z ⊢ 2 ∈ ℤ
43 42 a1i ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → 2 ∈ ℤ
44 moddifz ⊢ N ∈ ℝ ∧ 2 M ∈ ℝ + → N − N mod 2 M 2 M ∈ ℤ
45 37 38 44 syl2anc ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → N − N mod 2 M 2 M ∈ ℤ
46 5 zcnd ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → N ∈ ℂ
47 46 11 18 nnncan1d ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → N - N mod 2 M - N − N mod 2 M + 1 = N mod 2 M + 1 − N mod 2 M
48 47 oveq1d ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → N - N mod 2 M - N − N mod 2 M + 1 2 M = N mod 2 M + 1 − N mod 2 M 2 M
49 46 11 subcld ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → N − N mod 2 M ∈ ℂ
50 46 18 subcld ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → N − N mod 2 M + 1 ∈ ℂ
51 9 nncnd ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → 2 M ∈ ℂ
52 49 50 51 31 divsubdird ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → N - N mod 2 M - N − N mod 2 M + 1 2 M = N − N mod 2 M 2 M − N − N mod 2 M + 1 2 M
53 48 52 eqtr3d ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → N mod 2 M + 1 − N mod 2 M 2 M = N − N mod 2 M 2 M − N − N mod 2 M + 1 2 M
54 27 50 mulcomd ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → 2 ⁢ N − N mod 2 M + 1 = N − N mod 2 M + 1 ⋅ 2
55 27 51 mulcomd ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → 2 ⁢ 2 M = 2 M ⋅ 2
56 27 8 expp1d ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → 2 M + 1 = 2 M ⋅ 2
57 55 56 eqtr4d ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → 2 ⁢ 2 M = 2 M + 1
58 54 57 oveq12d ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → 2 ⁢ N − N mod 2 M + 1 2 ⁢ 2 M = N − N mod 2 M + 1 ⋅ 2 2 M + 1
59 50 51 27 31 29 divcan5d ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → 2 ⁢ N − N mod 2 M + 1 2 ⁢ 2 M = N − N mod 2 M + 1 2 M
60 16 nncnd ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → 2 M + 1 ∈ ℂ
61 30 peano2zd ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → M + 1 ∈ ℤ
62 27 29 61 expne0d ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → 2 M + 1 ≠ 0
63 50 27 60 62 div23d ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → N − N mod 2 M + 1 ⋅ 2 2 M + 1 = N − N mod 2 M + 1 2 M + 1 ⋅ 2
64 58 59 63 3eqtr3d ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → N − N mod 2 M + 1 2 M = N − N mod 2 M + 1 2 M + 1 ⋅ 2
65 16 nnrpd ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → 2 M + 1 ∈ ℝ +
66 moddifz ⊢ N ∈ ℝ ∧ 2 M + 1 ∈ ℝ + → N − N mod 2 M + 1 2 M + 1 ∈ ℤ
67 37 65 66 syl2anc ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → N − N mod 2 M + 1 2 M + 1 ∈ ℤ
68 67 43 zmulcld ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → N − N mod 2 M + 1 2 M + 1 ⋅ 2 ∈ ℤ
69 64 68 eqeltrd ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → N − N mod 2 M + 1 2 M ∈ ℤ
70 45 69 zsubcld ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → N − N mod 2 M 2 M − N − N mod 2 M + 1 2 M ∈ ℤ
71 53 70 eqeltrd ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → N mod 2 M + 1 − N mod 2 M 2 M ∈ ℤ
72 dvdsmul2 ⊢ N − N mod 2 M + 1 2 M + 1 ∈ ℤ ∧ 2 ∈ ℤ → 2 ∥ N − N mod 2 M + 1 2 M + 1 ⋅ 2
73 67 43 72 syl2anc ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → 2 ∥ N − N mod 2 M + 1 2 M + 1 ⋅ 2
74 46 18 11 nnncan2d ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → N - N mod 2 M - N mod 2 M + 1 − N mod 2 M = N − N mod 2 M + 1
75 74 oveq1d ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → N - N mod 2 M - N mod 2 M + 1 − N mod 2 M 2 M = N − N mod 2 M + 1 2 M
76 49 21 51 31 divsubdird ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → N - N mod 2 M - N mod 2 M + 1 − N mod 2 M 2 M = N − N mod 2 M 2 M − N mod 2 M + 1 − N mod 2 M 2 M
77 75 76 64 3eqtr3d ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → N − N mod 2 M 2 M − N mod 2 M + 1 − N mod 2 M 2 M = N − N mod 2 M + 1 2 M + 1 ⋅ 2
78 73 77 breqtrrd ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → 2 ∥ N − N mod 2 M 2 M − N mod 2 M + 1 − N mod 2 M 2 M
79 dvdssub2 ⊢ 2 ∈ ℤ ∧ N − N mod 2 M 2 M ∈ ℤ ∧ N mod 2 M + 1 − N mod 2 M 2 M ∈ ℤ ∧ 2 ∥ N − N mod 2 M 2 M − N mod 2 M + 1 − N mod 2 M 2 M → 2 ∥ N − N mod 2 M 2 M ↔ 2 ∥ N mod 2 M + 1 − N mod 2 M 2 M
80 43 45 71 78 79 syl31anc ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → 2 ∥ N − N mod 2 M 2 M ↔ 2 ∥ N mod 2 M + 1 − N mod 2 M 2 M
81 41 80 bitr3d ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → 2 ∥ N 2 M ↔ 2 ∥ N mod 2 M + 1 − N mod 2 M 2 M
82 81 notbid ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → ¬ 2 ∥ N 2 M ↔ ¬ 2 ∥ N mod 2 M + 1 − N mod 2 M 2 M
83 36 82 bitrd ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → M ∈ bits ⁡ N ↔ ¬ 2 ∥ N mod 2 M + 1 − N mod 2 M 2 M
84 83 con2bid ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → 2 ∥ N mod 2 M + 1 − N mod 2 M 2 M ↔ ¬ M ∈ bits ⁡ N
85 35 84 imbitrid ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → N mod 2 M + 1 − N mod 2 M 2 M = 0 → ¬ M ∈ bits ⁡ N
86 85 con2d ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → M ∈ bits ⁡ N → ¬ N mod 2 M + 1 − N mod 2 M 2 M = 0
87 df-neg ⊢ − 1 = 0 − 1
88 51 mulm1d ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → -1 ⁢ 2 M = − 2 M
89 9 nnred ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → 2 M ∈ ℝ
90 89 renegcld ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → − 2 M ∈ ℝ
91 37 38 modcld ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → N mod 2 M ∈ ℝ
92 91 renegcld ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → − N mod 2 M ∈ ℝ
93 37 65 modcld ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → N mod 2 M + 1 ∈ ℝ
94 93 91 resubcld ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → N mod 2 M + 1 − N mod 2 M ∈ ℝ
95 modlt ⊢ N ∈ ℝ ∧ 2 M ∈ ℝ + → N mod 2 M < 2 M
96 37 38 95 syl2anc ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → N mod 2 M < 2 M
97 91 89 ltnegd ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → N mod 2 M < 2 M ↔ − 2 M < − N mod 2 M
98 96 97 mpbid ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → − 2 M < − N mod 2 M
99 df-neg ⊢ − N mod 2 M = 0 − N mod 2 M
100 0red ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → 0 ∈ ℝ
101 modge0 ⊢ N ∈ ℝ ∧ 2 M + 1 ∈ ℝ + → 0 ≤ N mod 2 M + 1
102 37 65 101 syl2anc ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → 0 ≤ N mod 2 M + 1
103 100 93 91 102 lesub1dd ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → 0 − N mod 2 M ≤ N mod 2 M + 1 − N mod 2 M
104 99 103 eqbrtrid ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → − N mod 2 M ≤ N mod 2 M + 1 − N mod 2 M
105 90 92 94 98 104 ltletrd ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → − 2 M < N mod 2 M + 1 − N mod 2 M
106 88 105 eqbrtrd ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → -1 ⁢ 2 M < N mod 2 M + 1 − N mod 2 M
107 1red ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → 1 ∈ ℝ
108 107 renegcld ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → − 1 ∈ ℝ
109 108 94 38 ltmuldivd ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → -1 ⁢ 2 M < N mod 2 M + 1 − N mod 2 M ↔ − 1 < N mod 2 M + 1 − N mod 2 M 2 M
110 106 109 mpbid ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → − 1 < N mod 2 M + 1 − N mod 2 M 2 M
111 87 110 eqbrtrrid ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → 0 − 1 < N mod 2 M + 1 − N mod 2 M 2 M
112 0zd ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → 0 ∈ ℤ
113 zlem1lt ⊢ 0 ∈ ℤ ∧ N mod 2 M + 1 − N mod 2 M 2 M ∈ ℤ → 0 ≤ N mod 2 M + 1 − N mod 2 M 2 M ↔ 0 − 1 < N mod 2 M + 1 − N mod 2 M 2 M
114 112 71 113 syl2anc ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → 0 ≤ N mod 2 M + 1 − N mod 2 M 2 M ↔ 0 − 1 < N mod 2 M + 1 − N mod 2 M 2 M
115 111 114 mpbird ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → 0 ≤ N mod 2 M + 1 − N mod 2 M 2 M
116 elnn0z ⊢ N mod 2 M + 1 − N mod 2 M 2 M ∈ ℕ 0 ↔ N mod 2 M + 1 − N mod 2 M 2 M ∈ ℤ ∧ 0 ≤ N mod 2 M + 1 − N mod 2 M 2 M
117 71 115 116 sylanbrc ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → N mod 2 M + 1 − N mod 2 M 2 M ∈ ℕ 0
118 nn0uz ⊢ ℕ 0 = ℤ ≥ 0
119 117 118 eleqtrdi ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → N mod 2 M + 1 − N mod 2 M 2 M ∈ ℤ ≥ 0
120 16 nnred ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → 2 M + 1 ∈ ℝ
121 modge0 ⊢ N ∈ ℝ ∧ 2 M ∈ ℝ + → 0 ≤ N mod 2 M
122 37 38 121 syl2anc ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → 0 ≤ N mod 2 M
123 93 91 subge02d ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → 0 ≤ N mod 2 M ↔ N mod 2 M + 1 − N mod 2 M ≤ N mod 2 M + 1
124 122 123 mpbid ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → N mod 2 M + 1 − N mod 2 M ≤ N mod 2 M + 1
125 modlt ⊢ N ∈ ℝ ∧ 2 M + 1 ∈ ℝ + → N mod 2 M + 1 < 2 M + 1
126 37 65 125 syl2anc ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → N mod 2 M + 1 < 2 M + 1
127 94 93 120 124 126 lelttrd ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → N mod 2 M + 1 − N mod 2 M < 2 M + 1
128 127 56 breqtrd ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → N mod 2 M + 1 − N mod 2 M < 2 M ⋅ 2
129 7 nnred ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → 2 ∈ ℝ
130 94 129 38 ltdivmuld ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → N mod 2 M + 1 − N mod 2 M 2 M < 2 ↔ N mod 2 M + 1 − N mod 2 M < 2 M ⋅ 2
131 128 130 mpbird ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → N mod 2 M + 1 − N mod 2 M 2 M < 2
132 elfzo2 ⊢ N mod 2 M + 1 − N mod 2 M 2 M ∈ 0 ..^ 2 ↔ N mod 2 M + 1 − N mod 2 M 2 M ∈ ℤ ≥ 0 ∧ 2 ∈ ℤ ∧ N mod 2 M + 1 − N mod 2 M 2 M < 2
133 119 43 131 132 syl3anbrc ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → N mod 2 M + 1 − N mod 2 M 2 M ∈ 0 ..^ 2
134 fzo0to2pr ⊢ 0 ..^ 2 = 0 1
135 133 134 eleqtrdi ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → N mod 2 M + 1 − N mod 2 M 2 M ∈ 0 1
136 elpri ⊢ N mod 2 M + 1 − N mod 2 M 2 M ∈ 0 1 → N mod 2 M + 1 − N mod 2 M 2 M = 0 ∨ N mod 2 M + 1 − N mod 2 M 2 M = 1
137 135 136 syl ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → N mod 2 M + 1 − N mod 2 M 2 M = 0 ∨ N mod 2 M + 1 − N mod 2 M 2 M = 1
138 137 ord ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → ¬ N mod 2 M + 1 − N mod 2 M 2 M = 0 → N mod 2 M + 1 − N mod 2 M 2 M = 1
139 86 138 syld ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → M ∈ bits ⁡ N → N mod 2 M + 1 − N mod 2 M 2 M = 1
140 139 imp ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ M ∈ bits ⁡ N → N mod 2 M + 1 − N mod 2 M 2 M = 1
141 22 26 32 140 diveq1d ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ M ∈ bits ⁡ N → N mod 2 M + 1 − N mod 2 M = 2 M
142 141 oveq2d ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ M ∈ bits ⁡ N → N mod 2 M + N mod 2 M + 1 - N mod 2 M = N mod 2 M + 2 M
143 20 142 eqtr3d ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ M ∈ bits ⁡ N → N mod 2 M + 1 = N mod 2 M + 2 M
144 18 adantr ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ ¬ M ∈ bits ⁡ N → N mod 2 M + 1 ∈ ℂ
145 11 adantr ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ ¬ M ∈ bits ⁡ N → N mod 2 M ∈ ℂ
146 21 adantr ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ ¬ M ∈ bits ⁡ N → N mod 2 M + 1 − N mod 2 M ∈ ℂ
147 51 adantr ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ ¬ M ∈ bits ⁡ N → 2 M ∈ ℂ
148 31 adantr ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ ¬ M ∈ bits ⁡ N → 2 M ≠ 0
149 n2dvds1 ⊢ ¬ 2 ∥ 1
150 breq2 ⊢ N mod 2 M + 1 − N mod 2 M 2 M = 1 → 2 ∥ N mod 2 M + 1 − N mod 2 M 2 M ↔ 2 ∥ 1
151 149 150 mtbiri ⊢ N mod 2 M + 1 − N mod 2 M 2 M = 1 → ¬ 2 ∥ N mod 2 M + 1 − N mod 2 M 2 M
152 138 151 syl6 ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → ¬ N mod 2 M + 1 − N mod 2 M 2 M = 0 → ¬ 2 ∥ N mod 2 M + 1 − N mod 2 M 2 M
153 152 83 sylibrd ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → ¬ N mod 2 M + 1 − N mod 2 M 2 M = 0 → M ∈ bits ⁡ N
154 153 con1d ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → ¬ M ∈ bits ⁡ N → N mod 2 M + 1 − N mod 2 M 2 M = 0
155 154 imp ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ ¬ M ∈ bits ⁡ N → N mod 2 M + 1 − N mod 2 M 2 M = 0
156 146 147 148 155 diveq0d ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ ¬ M ∈ bits ⁡ N → N mod 2 M + 1 − N mod 2 M = 0
157 144 145 156 subeq0d ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ ¬ M ∈ bits ⁡ N → N mod 2 M + 1 = N mod 2 M
158 145 addridd ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ ¬ M ∈ bits ⁡ N → N mod 2 M + 0 = N mod 2 M
159 157 158 eqtr4d ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ ¬ M ∈ bits ⁡ N → N mod 2 M + 1 = N mod 2 M + 0
160 2 4 143 159 ifbothda ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → N mod 2 M + 1 = N mod 2 M + if M ∈ bits ⁡ N 2 M 0