ILE Home Intuitionistic Logic Explorer < Previous   Next >
Nearby theorems
Mirrors  >  Home  >  ILE Home  >  Th. List  >  bitsinv1lem GIF version

Theorem bitsinv1lem 12647
Description: Lemma for bitsinv1 12648. (Contributed by Mario Carneiro, 22-Sep-2016.)
Assertion
Ref Expression
bitsinv1lem ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → (𝑁 mod (2↑(𝑀 + 1))) = ((𝑁 mod (2↑𝑀)) + if(𝑀 ∈ (bits‘𝑁), (2↑𝑀), 0)))

Proof of Theorem bitsinv1lem
StepHypRef Expression
1 oveq2 6058 . . 3 ((2↑𝑀) = if(𝑀 ∈ (bits‘𝑁), (2↑𝑀), 0) → ((𝑁 mod (2↑𝑀)) + (2↑𝑀)) = ((𝑁 mod (2↑𝑀)) + if(𝑀 ∈ (bits‘𝑁), (2↑𝑀), 0)))
21eqeq2d 2244 . 2 ((2↑𝑀) = if(𝑀 ∈ (bits‘𝑁), (2↑𝑀), 0) → ((𝑁 mod (2↑(𝑀 + 1))) = ((𝑁 mod (2↑𝑀)) + (2↑𝑀)) ↔ (𝑁 mod (2↑(𝑀 + 1))) = ((𝑁 mod (2↑𝑀)) + if(𝑀 ∈ (bits‘𝑁), (2↑𝑀), 0))))
3 oveq2 6058 . . 3 (0 = if(𝑀 ∈ (bits‘𝑁), (2↑𝑀), 0) → ((𝑁 mod (2↑𝑀)) + 0) = ((𝑁 mod (2↑𝑀)) + if(𝑀 ∈ (bits‘𝑁), (2↑𝑀), 0)))
43eqeq2d 2244 . 2 (0 = if(𝑀 ∈ (bits‘𝑁), (2↑𝑀), 0) → ((𝑁 mod (2↑(𝑀 + 1))) = ((𝑁 mod (2↑𝑀)) + 0) ↔ (𝑁 mod (2↑(𝑀 + 1))) = ((𝑁 mod (2↑𝑀)) + if(𝑀 ∈ (bits‘𝑁), (2↑𝑀), 0))))
5 simpl 109 . . . . . . 7 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → 𝑁 ∈ ℤ)
6 2nn 9399 . . . . . . . . 9 2 ∈ ℕ
76a1i 9 . . . . . . . 8 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → 2 ∈ ℕ)
8 simpr 110 . . . . . . . 8 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → 𝑀 ∈ ℕ0)
97, 8nnexpcld 11057 . . . . . . 7 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → (2↑𝑀) ∈ ℕ)
105, 9zmodcld 10707 . . . . . 6 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → (𝑁 mod (2↑𝑀)) ∈ ℕ0)
1110nn0cnd 9555 . . . . 5 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → (𝑁 mod (2↑𝑀)) ∈ ℂ)
1211adantr 276 . . . 4 (((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) ∧ 𝑀 ∈ (bits‘𝑁)) → (𝑁 mod (2↑𝑀)) ∈ ℂ)
13 1nn0 9512 . . . . . . . . . 10 1 ∈ ℕ0
1413a1i 9 . . . . . . . . 9 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → 1 ∈ ℕ0)
158, 14nn0addcld 9557 . . . . . . . 8 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → (𝑀 + 1) ∈ ℕ0)
167, 15nnexpcld 11057 . . . . . . 7 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → (2↑(𝑀 + 1)) ∈ ℕ)
175, 16zmodcld 10707 . . . . . 6 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → (𝑁 mod (2↑(𝑀 + 1))) ∈ ℕ0)
1817nn0cnd 9555 . . . . 5 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → (𝑁 mod (2↑(𝑀 + 1))) ∈ ℂ)
1918adantr 276 . . . 4 (((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) ∧ 𝑀 ∈ (bits‘𝑁)) → (𝑁 mod (2↑(𝑀 + 1))) ∈ ℂ)
2012, 19pncan3d 8587 . . 3 (((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) ∧ 𝑀 ∈ (bits‘𝑁)) → ((𝑁 mod (2↑𝑀)) + ((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀)))) = (𝑁 mod (2↑(𝑀 + 1))))
2118, 11subcld 8584 . . . . . 6 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → ((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) ∈ ℂ)
2221adantr 276 . . . . 5 (((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) ∧ 𝑀 ∈ (bits‘𝑁)) → ((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) ∈ ℂ)
236a1i 9 . . . . . . 7 (((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) ∧ 𝑀 ∈ (bits‘𝑁)) → 2 ∈ ℕ)
24 simplr 529 . . . . . . 7 (((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) ∧ 𝑀 ∈ (bits‘𝑁)) → 𝑀 ∈ ℕ0)
2523, 24nnexpcld 11057 . . . . . 6 (((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) ∧ 𝑀 ∈ (bits‘𝑁)) → (2↑𝑀) ∈ ℕ)
2625nncnd 9251 . . . . 5 (((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) ∧ 𝑀 ∈ (bits‘𝑁)) → (2↑𝑀) ∈ ℂ)
27 2cnd 9310 . . . . . . 7 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → 2 ∈ ℂ)
287nnap0d 9283 . . . . . . 7 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → 2 # 0)
298nn0zd 9698 . . . . . . 7 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → 𝑀 ∈ ℤ)
3027, 28, 29expap0d 11041 . . . . . 6 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → (2↑𝑀) # 0)
3130adantr 276 . . . . 5 (((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) ∧ 𝑀 ∈ (bits‘𝑁)) → (2↑𝑀) # 0)
32 z0even 12597 . . . . . . . . . 10 2 ∥ 0
33 id 19 . . . . . . . . . 10 ((((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) / (2↑𝑀)) = 0 → (((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) / (2↑𝑀)) = 0)
3432, 33breqtrrid 4147 . . . . . . . . 9 ((((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) / (2↑𝑀)) = 0 → 2 ∥ (((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) / (2↑𝑀)))
35 bitsval2 12630 . . . . . . . . . . . 12 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → (𝑀 ∈ (bits‘𝑁) ↔ ¬ 2 ∥ (⌊‘(𝑁 / (2↑𝑀)))))
36 zq 9958 . . . . . . . . . . . . . . . . 17 (𝑁 ∈ ℤ → 𝑁 ∈ ℚ)
3736adantr 276 . . . . . . . . . . . . . . . 16 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → 𝑁 ∈ ℚ)
38 2z 9605 . . . . . . . . . . . . . . . . . 18 2 ∈ ℤ
39 zq 9958 . . . . . . . . . . . . . . . . . 18 (2 ∈ ℤ → 2 ∈ ℚ)
4038, 39ax-mp 5 . . . . . . . . . . . . . . . . 17 2 ∈ ℚ
41 qexpcl 10917 . . . . . . . . . . . . . . . . 17 ((2 ∈ ℚ ∧ 𝑀 ∈ ℕ0) → (2↑𝑀) ∈ ℚ)
4240, 8, 41sylancr 414 . . . . . . . . . . . . . . . 16 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → (2↑𝑀) ∈ ℚ)
439nngt0d 9281 . . . . . . . . . . . . . . . 16 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → 0 < (2↑𝑀))
44 modqdiffl 10697 . . . . . . . . . . . . . . . 16 ((𝑁 ∈ ℚ ∧ (2↑𝑀) ∈ ℚ ∧ 0 < (2↑𝑀)) → ((𝑁 − (𝑁 mod (2↑𝑀))) / (2↑𝑀)) = (⌊‘(𝑁 / (2↑𝑀))))
4537, 42, 43, 44syl3anc 1274 . . . . . . . . . . . . . . 15 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → ((𝑁 − (𝑁 mod (2↑𝑀))) / (2↑𝑀)) = (⌊‘(𝑁 / (2↑𝑀))))
4645breq2d 4121 . . . . . . . . . . . . . 14 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → (2 ∥ ((𝑁 − (𝑁 mod (2↑𝑀))) / (2↑𝑀)) ↔ 2 ∥ (⌊‘(𝑁 / (2↑𝑀)))))
4738a1i 9 . . . . . . . . . . . . . . 15 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → 2 ∈ ℤ)
48 modqdifz 10698 . . . . . . . . . . . . . . . 16 ((𝑁 ∈ ℚ ∧ (2↑𝑀) ∈ ℚ ∧ 0 < (2↑𝑀)) → ((𝑁 − (𝑁 mod (2↑𝑀))) / (2↑𝑀)) ∈ ℤ)
4937, 42, 43, 48syl3anc 1274 . . . . . . . . . . . . . . 15 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → ((𝑁 − (𝑁 mod (2↑𝑀))) / (2↑𝑀)) ∈ ℤ)
505zcnd 9701 . . . . . . . . . . . . . . . . . . 19 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → 𝑁 ∈ ℂ)
5150, 11, 18nnncan1d 8618 . . . . . . . . . . . . . . . . . 18 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → ((𝑁 − (𝑁 mod (2↑𝑀))) − (𝑁 − (𝑁 mod (2↑(𝑀 + 1))))) = ((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))))
5251oveq1d 6065 . . . . . . . . . . . . . . . . 17 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → (((𝑁 − (𝑁 mod (2↑𝑀))) − (𝑁 − (𝑁 mod (2↑(𝑀 + 1))))) / (2↑𝑀)) = (((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) / (2↑𝑀)))
5350, 11subcld 8584 . . . . . . . . . . . . . . . . . 18 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → (𝑁 − (𝑁 mod (2↑𝑀))) ∈ ℂ)
5450, 18subcld 8584 . . . . . . . . . . . . . . . . . 18 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → (𝑁 − (𝑁 mod (2↑(𝑀 + 1)))) ∈ ℂ)
559nncnd 9251 . . . . . . . . . . . . . . . . . 18 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → (2↑𝑀) ∈ ℂ)
5653, 54, 55, 30divsubdirapd 9104 . . . . . . . . . . . . . . . . 17 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → (((𝑁 − (𝑁 mod (2↑𝑀))) − (𝑁 − (𝑁 mod (2↑(𝑀 + 1))))) / (2↑𝑀)) = (((𝑁 − (𝑁 mod (2↑𝑀))) / (2↑𝑀)) − ((𝑁 − (𝑁 mod (2↑(𝑀 + 1)))) / (2↑𝑀))))
5752, 56eqtr3d 2267 . . . . . . . . . . . . . . . 16 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → (((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) / (2↑𝑀)) = (((𝑁 − (𝑁 mod (2↑𝑀))) / (2↑𝑀)) − ((𝑁 − (𝑁 mod (2↑(𝑀 + 1)))) / (2↑𝑀))))
5827, 54mulcomd 8295 . . . . . . . . . . . . . . . . . . . 20 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → (2 · (𝑁 − (𝑁 mod (2↑(𝑀 + 1))))) = ((𝑁 − (𝑁 mod (2↑(𝑀 + 1)))) · 2))
5927, 55mulcomd 8295 . . . . . . . . . . . . . . . . . . . . 21 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → (2 · (2↑𝑀)) = ((2↑𝑀) · 2))
6027, 8expp1d 11036 . . . . . . . . . . . . . . . . . . . . 21 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → (2↑(𝑀 + 1)) = ((2↑𝑀) · 2))
6159, 60eqtr4d 2268 . . . . . . . . . . . . . . . . . . . 20 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → (2 · (2↑𝑀)) = (2↑(𝑀 + 1)))
6258, 61oveq12d 6068 . . . . . . . . . . . . . . . . . . 19 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → ((2 · (𝑁 − (𝑁 mod (2↑(𝑀 + 1))))) / (2 · (2↑𝑀))) = (((𝑁 − (𝑁 mod (2↑(𝑀 + 1)))) · 2) / (2↑(𝑀 + 1))))
63 2ap0 9330 . . . . . . . . . . . . . . . . . . . . 21 2 # 0
6463a1i 9 . . . . . . . . . . . . . . . . . . . 20 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → 2 # 0)
6554, 55, 27, 30, 64divcanap5d 9091 . . . . . . . . . . . . . . . . . . 19 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → ((2 · (𝑁 − (𝑁 mod (2↑(𝑀 + 1))))) / (2 · (2↑𝑀))) = ((𝑁 − (𝑁 mod (2↑(𝑀 + 1)))) / (2↑𝑀)))
6616nncnd 9251 . . . . . . . . . . . . . . . . . . . 20 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → (2↑(𝑀 + 1)) ∈ ℂ)
6729peano2zd 9703 . . . . . . . . . . . . . . . . . . . . 21 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → (𝑀 + 1) ∈ ℤ)
6827, 28, 67expap0d 11041 . . . . . . . . . . . . . . . . . . . 20 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → (2↑(𝑀 + 1)) # 0)
6954, 27, 66, 68div23apd 9102 . . . . . . . . . . . . . . . . . . 19 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → (((𝑁 − (𝑁 mod (2↑(𝑀 + 1)))) · 2) / (2↑(𝑀 + 1))) = (((𝑁 − (𝑁 mod (2↑(𝑀 + 1)))) / (2↑(𝑀 + 1))) · 2))
7062, 65, 693eqtr3d 2273 . . . . . . . . . . . . . . . . . 18 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → ((𝑁 − (𝑁 mod (2↑(𝑀 + 1)))) / (2↑𝑀)) = (((𝑁 − (𝑁 mod (2↑(𝑀 + 1)))) / (2↑(𝑀 + 1))) · 2))
71 qexpcl 10917 . . . . . . . . . . . . . . . . . . . . 21 ((2 ∈ ℚ ∧ (𝑀 + 1) ∈ ℕ0) → (2↑(𝑀 + 1)) ∈ ℚ)
7240, 15, 71sylancr 414 . . . . . . . . . . . . . . . . . . . 20 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → (2↑(𝑀 + 1)) ∈ ℚ)
7316nngt0d 9281 . . . . . . . . . . . . . . . . . . . 20 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → 0 < (2↑(𝑀 + 1)))
74 modqdifz 10698 . . . . . . . . . . . . . . . . . . . 20 ((𝑁 ∈ ℚ ∧ (2↑(𝑀 + 1)) ∈ ℚ ∧ 0 < (2↑(𝑀 + 1))) → ((𝑁 − (𝑁 mod (2↑(𝑀 + 1)))) / (2↑(𝑀 + 1))) ∈ ℤ)
7537, 72, 73, 74syl3anc 1274 . . . . . . . . . . . . . . . . . . 19 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → ((𝑁 − (𝑁 mod (2↑(𝑀 + 1)))) / (2↑(𝑀 + 1))) ∈ ℤ)
7675, 47zmulcld 9706 . . . . . . . . . . . . . . . . . 18 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → (((𝑁 − (𝑁 mod (2↑(𝑀 + 1)))) / (2↑(𝑀 + 1))) · 2) ∈ ℤ)
7770, 76eqeltrd 2309 . . . . . . . . . . . . . . . . 17 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → ((𝑁 − (𝑁 mod (2↑(𝑀 + 1)))) / (2↑𝑀)) ∈ ℤ)
7849, 77zsubcld 9705 . . . . . . . . . . . . . . . 16 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → (((𝑁 − (𝑁 mod (2↑𝑀))) / (2↑𝑀)) − ((𝑁 − (𝑁 mod (2↑(𝑀 + 1)))) / (2↑𝑀))) ∈ ℤ)
7957, 78eqeltrd 2309 . . . . . . . . . . . . . . 15 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → (((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) / (2↑𝑀)) ∈ ℤ)
80 dvdsmul2 12500 . . . . . . . . . . . . . . . . 17 ((((𝑁 − (𝑁 mod (2↑(𝑀 + 1)))) / (2↑(𝑀 + 1))) ∈ ℤ ∧ 2 ∈ ℤ) → 2 ∥ (((𝑁 − (𝑁 mod (2↑(𝑀 + 1)))) / (2↑(𝑀 + 1))) · 2))
8175, 47, 80syl2anc 411 . . . . . . . . . . . . . . . 16 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → 2 ∥ (((𝑁 − (𝑁 mod (2↑(𝑀 + 1)))) / (2↑(𝑀 + 1))) · 2))
8250, 18, 11nnncan2d 8619 . . . . . . . . . . . . . . . . . 18 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → ((𝑁 − (𝑁 mod (2↑𝑀))) − ((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀)))) = (𝑁 − (𝑁 mod (2↑(𝑀 + 1)))))
8382oveq1d 6065 . . . . . . . . . . . . . . . . 17 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → (((𝑁 − (𝑁 mod (2↑𝑀))) − ((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀)))) / (2↑𝑀)) = ((𝑁 − (𝑁 mod (2↑(𝑀 + 1)))) / (2↑𝑀)))
8453, 21, 55, 30divsubdirapd 9104 . . . . . . . . . . . . . . . . 17 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → (((𝑁 − (𝑁 mod (2↑𝑀))) − ((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀)))) / (2↑𝑀)) = (((𝑁 − (𝑁 mod (2↑𝑀))) / (2↑𝑀)) − (((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) / (2↑𝑀))))
8583, 84, 703eqtr3d 2273 . . . . . . . . . . . . . . . 16 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → (((𝑁 − (𝑁 mod (2↑𝑀))) / (2↑𝑀)) − (((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) / (2↑𝑀))) = (((𝑁 − (𝑁 mod (2↑(𝑀 + 1)))) / (2↑(𝑀 + 1))) · 2))
8681, 85breqtrrd 4137 . . . . . . . . . . . . . . 15 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → 2 ∥ (((𝑁 − (𝑁 mod (2↑𝑀))) / (2↑𝑀)) − (((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) / (2↑𝑀))))
87 dvdssub2 12521 . . . . . . . . . . . . . . 15 (((2 ∈ ℤ ∧ ((𝑁 − (𝑁 mod (2↑𝑀))) / (2↑𝑀)) ∈ ℤ ∧ (((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) / (2↑𝑀)) ∈ ℤ) ∧ 2 ∥ (((𝑁 − (𝑁 mod (2↑𝑀))) / (2↑𝑀)) − (((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) / (2↑𝑀)))) → (2 ∥ ((𝑁 − (𝑁 mod (2↑𝑀))) / (2↑𝑀)) ↔ 2 ∥ (((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) / (2↑𝑀))))
8847, 49, 79, 86, 87syl31anc 1277 . . . . . . . . . . . . . 14 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → (2 ∥ ((𝑁 − (𝑁 mod (2↑𝑀))) / (2↑𝑀)) ↔ 2 ∥ (((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) / (2↑𝑀))))
8946, 88bitr3d 190 . . . . . . . . . . . . 13 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → (2 ∥ (⌊‘(𝑁 / (2↑𝑀))) ↔ 2 ∥ (((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) / (2↑𝑀))))
9089notbid 673 . . . . . . . . . . . 12 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → (¬ 2 ∥ (⌊‘(𝑁 / (2↑𝑀))) ↔ ¬ 2 ∥ (((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) / (2↑𝑀))))
9135, 90bitrd 188 . . . . . . . . . . 11 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → (𝑀 ∈ (bits‘𝑁) ↔ ¬ 2 ∥ (((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) / (2↑𝑀))))
9291biimpd 144 . . . . . . . . . 10 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → (𝑀 ∈ (bits‘𝑁) → ¬ 2 ∥ (((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) / (2↑𝑀))))
9392con2d 629 . . . . . . . . 9 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → (2 ∥ (((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) / (2↑𝑀)) → ¬ 𝑀 ∈ (bits‘𝑁)))
9434, 93syl5 32 . . . . . . . 8 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → ((((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) / (2↑𝑀)) = 0 → ¬ 𝑀 ∈ (bits‘𝑁)))
9594con2d 629 . . . . . . 7 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → (𝑀 ∈ (bits‘𝑁) → ¬ (((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) / (2↑𝑀)) = 0))
96 df-neg 8447 . . . . . . . . . . . . . . 15 -1 = (0 − 1)
9755mulm1d 8683 . . . . . . . . . . . . . . . . 17 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → (-1 · (2↑𝑀)) = -(2↑𝑀))
989nnred 9250 . . . . . . . . . . . . . . . . . . 19 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → (2↑𝑀) ∈ ℝ)
9998renegcld 8653 . . . . . . . . . . . . . . . . . 18 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → -(2↑𝑀) ∈ ℝ)
10037, 42, 43modqcld 10690 . . . . . . . . . . . . . . . . . . . 20 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → (𝑁 mod (2↑𝑀)) ∈ ℚ)
101 qre 9957 . . . . . . . . . . . . . . . . . . . 20 ((𝑁 mod (2↑𝑀)) ∈ ℚ → (𝑁 mod (2↑𝑀)) ∈ ℝ)
102100, 101syl 14 . . . . . . . . . . . . . . . . . . 19 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → (𝑁 mod (2↑𝑀)) ∈ ℝ)
103102renegcld 8653 . . . . . . . . . . . . . . . . . 18 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → -(𝑁 mod (2↑𝑀)) ∈ ℝ)
10437, 72, 73modqcld 10690 . . . . . . . . . . . . . . . . . . . 20 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → (𝑁 mod (2↑(𝑀 + 1))) ∈ ℚ)
105 qre 9957 . . . . . . . . . . . . . . . . . . . 20 ((𝑁 mod (2↑(𝑀 + 1))) ∈ ℚ → (𝑁 mod (2↑(𝑀 + 1))) ∈ ℝ)
106104, 105syl 14 . . . . . . . . . . . . . . . . . . 19 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → (𝑁 mod (2↑(𝑀 + 1))) ∈ ℝ)
107106, 102resubcld 8654 . . . . . . . . . . . . . . . . . 18 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → ((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) ∈ ℝ)
108 modqlt 10695 . . . . . . . . . . . . . . . . . . . 20 ((𝑁 ∈ ℚ ∧ (2↑𝑀) ∈ ℚ ∧ 0 < (2↑𝑀)) → (𝑁 mod (2↑𝑀)) < (2↑𝑀))
10937, 42, 43, 108syl3anc 1274 . . . . . . . . . . . . . . . . . . 19 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → (𝑁 mod (2↑𝑀)) < (2↑𝑀))
110102, 98ltnegd 8797 . . . . . . . . . . . . . . . . . . 19 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → ((𝑁 mod (2↑𝑀)) < (2↑𝑀) ↔ -(2↑𝑀) < -(𝑁 mod (2↑𝑀))))
111109, 110mpbid 147 . . . . . . . . . . . . . . . . . 18 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → -(2↑𝑀) < -(𝑁 mod (2↑𝑀)))
112 df-neg 8447 . . . . . . . . . . . . . . . . . . 19 -(𝑁 mod (2↑𝑀)) = (0 − (𝑁 mod (2↑𝑀)))
113 0red 8275 . . . . . . . . . . . . . . . . . . . 20 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → 0 ∈ ℝ)
114 modqge0 10694 . . . . . . . . . . . . . . . . . . . . 21 ((𝑁 ∈ ℚ ∧ (2↑(𝑀 + 1)) ∈ ℚ ∧ 0 < (2↑(𝑀 + 1))) → 0 ≤ (𝑁 mod (2↑(𝑀 + 1))))
11537, 72, 73, 114syl3anc 1274 . . . . . . . . . . . . . . . . . . . 20 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → 0 ≤ (𝑁 mod (2↑(𝑀 + 1))))
116113, 106, 102, 115lesub1dd 8835 . . . . . . . . . . . . . . . . . . 19 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → (0 − (𝑁 mod (2↑𝑀))) ≤ ((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))))
117112, 116eqbrtrid 4144 . . . . . . . . . . . . . . . . . 18 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → -(𝑁 mod (2↑𝑀)) ≤ ((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))))
11899, 103, 107, 111, 117ltletrd 8697 . . . . . . . . . . . . . . . . 17 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → -(2↑𝑀) < ((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))))
11997, 118eqbrtrd 4131 . . . . . . . . . . . . . . . 16 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → (-1 · (2↑𝑀)) < ((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))))
120 1red 8289 . . . . . . . . . . . . . . . . . 18 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → 1 ∈ ℝ)
121120renegcld 8653 . . . . . . . . . . . . . . . . 17 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → -1 ∈ ℝ)
1229nnrpd 10027 . . . . . . . . . . . . . . . . 17 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → (2↑𝑀) ∈ ℝ+)
123121, 107, 122ltmuldivd 10077 . . . . . . . . . . . . . . . 16 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → ((-1 · (2↑𝑀)) < ((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) ↔ -1 < (((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) / (2↑𝑀))))
124119, 123mpbid 147 . . . . . . . . . . . . . . 15 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → -1 < (((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) / (2↑𝑀)))
12596, 124eqbrtrrid 4145 . . . . . . . . . . . . . 14 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → (0 − 1) < (((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) / (2↑𝑀)))
126 0zd 9589 . . . . . . . . . . . . . . 15 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → 0 ∈ ℤ)
127 zlem1lt 9634 . . . . . . . . . . . . . . 15 ((0 ∈ ℤ ∧ (((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) / (2↑𝑀)) ∈ ℤ) → (0 ≤ (((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) / (2↑𝑀)) ↔ (0 − 1) < (((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) / (2↑𝑀))))
128126, 79, 127syl2anc 411 . . . . . . . . . . . . . 14 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → (0 ≤ (((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) / (2↑𝑀)) ↔ (0 − 1) < (((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) / (2↑𝑀))))
129125, 128mpbird 167 . . . . . . . . . . . . 13 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → 0 ≤ (((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) / (2↑𝑀)))
130 elnn0z 9590 . . . . . . . . . . . . 13 ((((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) / (2↑𝑀)) ∈ ℕ0 ↔ ((((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) / (2↑𝑀)) ∈ ℤ ∧ 0 ≤ (((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) / (2↑𝑀))))
13179, 129, 130sylanbrc 417 . . . . . . . . . . . 12 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → (((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) / (2↑𝑀)) ∈ ℕ0)
132 nn0uz 9889 . . . . . . . . . . . 12 0 = (ℤ‘0)
133131, 132eleqtrdi 2325 . . . . . . . . . . 11 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → (((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) / (2↑𝑀)) ∈ (ℤ‘0))
13416nnred 9250 . . . . . . . . . . . . . 14 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → (2↑(𝑀 + 1)) ∈ ℝ)
135 modqge0 10694 . . . . . . . . . . . . . . . 16 ((𝑁 ∈ ℚ ∧ (2↑𝑀) ∈ ℚ ∧ 0 < (2↑𝑀)) → 0 ≤ (𝑁 mod (2↑𝑀)))
13637, 42, 43, 135syl3anc 1274 . . . . . . . . . . . . . . 15 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → 0 ≤ (𝑁 mod (2↑𝑀)))
137106, 102subge02d 8811 . . . . . . . . . . . . . . 15 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → (0 ≤ (𝑁 mod (2↑𝑀)) ↔ ((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) ≤ (𝑁 mod (2↑(𝑀 + 1)))))
138136, 137mpbid 147 . . . . . . . . . . . . . 14 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → ((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) ≤ (𝑁 mod (2↑(𝑀 + 1))))
139 modqlt 10695 . . . . . . . . . . . . . . 15 ((𝑁 ∈ ℚ ∧ (2↑(𝑀 + 1)) ∈ ℚ ∧ 0 < (2↑(𝑀 + 1))) → (𝑁 mod (2↑(𝑀 + 1))) < (2↑(𝑀 + 1)))
14037, 72, 73, 139syl3anc 1274 . . . . . . . . . . . . . 14 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → (𝑁 mod (2↑(𝑀 + 1))) < (2↑(𝑀 + 1)))
141107, 106, 134, 138, 140lelttrd 8398 . . . . . . . . . . . . 13 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → ((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) < (2↑(𝑀 + 1)))
142141, 60breqtrd 4135 . . . . . . . . . . . 12 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → ((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) < ((2↑𝑀) · 2))
1437nnred 9250 . . . . . . . . . . . . 13 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → 2 ∈ ℝ)
144107, 143, 122ltdivmuld 10081 . . . . . . . . . . . 12 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → ((((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) / (2↑𝑀)) < 2 ↔ ((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) < ((2↑𝑀) · 2)))
145142, 144mpbird 167 . . . . . . . . . . 11 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → (((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) / (2↑𝑀)) < 2)
146 elfzo2 10484 . . . . . . . . . . 11 ((((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) / (2↑𝑀)) ∈ (0..^2) ↔ ((((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) / (2↑𝑀)) ∈ (ℤ‘0) ∧ 2 ∈ ℤ ∧ (((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) / (2↑𝑀)) < 2))
147133, 47, 145, 146syl3anbrc 1208 . . . . . . . . . 10 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → (((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) / (2↑𝑀)) ∈ (0..^2))
148 fzo0to2pr 10563 . . . . . . . . . 10 (0..^2) = {0, 1}
149147, 148eleqtrdi 2325 . . . . . . . . 9 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → (((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) / (2↑𝑀)) ∈ {0, 1})
150 elpri 3712 . . . . . . . . 9 ((((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) / (2↑𝑀)) ∈ {0, 1} → ((((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) / (2↑𝑀)) = 0 ∨ (((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) / (2↑𝑀)) = 1))
151149, 150syl 14 . . . . . . . 8 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → ((((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) / (2↑𝑀)) = 0 ∨ (((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) / (2↑𝑀)) = 1))
152151ord 732 . . . . . . 7 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → (¬ (((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) / (2↑𝑀)) = 0 → (((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) / (2↑𝑀)) = 1))
15395, 152syld 45 . . . . . 6 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → (𝑀 ∈ (bits‘𝑁) → (((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) / (2↑𝑀)) = 1))
154153imp 124 . . . . 5 (((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) ∧ 𝑀 ∈ (bits‘𝑁)) → (((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) / (2↑𝑀)) = 1)
15522, 26, 31, 154diveqap1d 9072 . . . 4 (((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) ∧ 𝑀 ∈ (bits‘𝑁)) → ((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) = (2↑𝑀))
156155oveq2d 6066 . . 3 (((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) ∧ 𝑀 ∈ (bits‘𝑁)) → ((𝑁 mod (2↑𝑀)) + ((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀)))) = ((𝑁 mod (2↑𝑀)) + (2↑𝑀)))
15720, 156eqtr3d 2267 . 2 (((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) ∧ 𝑀 ∈ (bits‘𝑁)) → (𝑁 mod (2↑(𝑀 + 1))) = ((𝑁 mod (2↑𝑀)) + (2↑𝑀)))
15818adantr 276 . . . 4 (((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) ∧ ¬ 𝑀 ∈ (bits‘𝑁)) → (𝑁 mod (2↑(𝑀 + 1))) ∈ ℂ)
15911adantr 276 . . . 4 (((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) ∧ ¬ 𝑀 ∈ (bits‘𝑁)) → (𝑁 mod (2↑𝑀)) ∈ ℂ)
16021adantr 276 . . . . 5 (((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) ∧ ¬ 𝑀 ∈ (bits‘𝑁)) → ((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) ∈ ℂ)
16155adantr 276 . . . . 5 (((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) ∧ ¬ 𝑀 ∈ (bits‘𝑁)) → (2↑𝑀) ∈ ℂ)
16230adantr 276 . . . . 5 (((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) ∧ ¬ 𝑀 ∈ (bits‘𝑁)) → (2↑𝑀) # 0)
16317nn0zd 9698 . . . . . . . . . 10 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → (𝑁 mod (2↑(𝑀 + 1))) ∈ ℤ)
16410nn0zd 9698 . . . . . . . . . 10 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → (𝑁 mod (2↑𝑀)) ∈ ℤ)
165163, 164zsubcld 9705 . . . . . . . . 9 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → ((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) ∈ ℤ)
166 znq 9956 . . . . . . . . 9 ((((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) ∈ ℤ ∧ (2↑𝑀) ∈ ℕ) → (((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) / (2↑𝑀)) ∈ ℚ)
167165, 9, 166syl2anc 411 . . . . . . . 8 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → (((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) / (2↑𝑀)) ∈ ℚ)
168 0z 9588 . . . . . . . . 9 0 ∈ ℤ
169 zq 9958 . . . . . . . . 9 (0 ∈ ℤ → 0 ∈ ℚ)
170168, 169mp1i 10 . . . . . . . 8 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → 0 ∈ ℚ)
171 qdceq 10604 . . . . . . . 8 (((((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) / (2↑𝑀)) ∈ ℚ ∧ 0 ∈ ℚ) → DECID (((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) / (2↑𝑀)) = 0)
172167, 170, 171syl2anc 411 . . . . . . 7 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → DECID (((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) / (2↑𝑀)) = 0)
173 n2dvds1 12598 . . . . . . . . . 10 ¬ 2 ∥ 1
174 breq2 4113 . . . . . . . . . 10 ((((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) / (2↑𝑀)) = 1 → (2 ∥ (((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) / (2↑𝑀)) ↔ 2 ∥ 1))
175173, 174mtbiri 682 . . . . . . . . 9 ((((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) / (2↑𝑀)) = 1 → ¬ 2 ∥ (((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) / (2↑𝑀)))
176152, 175syl6 33 . . . . . . . 8 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → (¬ (((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) / (2↑𝑀)) = 0 → ¬ 2 ∥ (((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) / (2↑𝑀))))
177176, 91sylibrd 169 . . . . . . 7 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → (¬ (((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) / (2↑𝑀)) = 0 → 𝑀 ∈ (bits‘𝑁)))
178 con1dc 864 . . . . . . 7 (DECID (((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) / (2↑𝑀)) = 0 → ((¬ (((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) / (2↑𝑀)) = 0 → 𝑀 ∈ (bits‘𝑁)) → (¬ 𝑀 ∈ (bits‘𝑁) → (((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) / (2↑𝑀)) = 0)))
179172, 177, 178sylc 62 . . . . . 6 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → (¬ 𝑀 ∈ (bits‘𝑁) → (((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) / (2↑𝑀)) = 0))
180179imp 124 . . . . 5 (((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) ∧ ¬ 𝑀 ∈ (bits‘𝑁)) → (((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) / (2↑𝑀)) = 0)
181160, 161, 162, 180diveqap0d 9071 . . . 4 (((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) ∧ ¬ 𝑀 ∈ (bits‘𝑁)) → ((𝑁 mod (2↑(𝑀 + 1))) − (𝑁 mod (2↑𝑀))) = 0)
182158, 159, 181subeq0d 8592 . . 3 (((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) ∧ ¬ 𝑀 ∈ (bits‘𝑁)) → (𝑁 mod (2↑(𝑀 + 1))) = (𝑁 mod (2↑𝑀)))
183159addridd 8422 . . 3 (((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) ∧ ¬ 𝑀 ∈ (bits‘𝑁)) → ((𝑁 mod (2↑𝑀)) + 0) = (𝑁 mod (2↑𝑀)))
184182, 183eqtr4d 2268 . 2 (((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) ∧ ¬ 𝑀 ∈ (bits‘𝑁)) → (𝑁 mod (2↑(𝑀 + 1))) = ((𝑁 mod (2↑𝑀)) + 0))
185 bitsdc 12633 . 2 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → DECID 𝑀 ∈ (bits‘𝑁))
1862, 4, 157, 184, 185ifbothdadc 3656 1 ((𝑁 ∈ ℤ ∧ 𝑀 ∈ ℕ0) → (𝑁 mod (2↑(𝑀 + 1))) = ((𝑁 mod (2↑𝑀)) + if(𝑀 ∈ (bits‘𝑁), (2↑𝑀), 0)))
Colors of variables: wff set class
Syntax hints:  ¬ wn 3  wi 4  wa 104  wb 105  wo 716  DECID wdc 842   = wceq 1398  wcel 2203  ifcif 3620  {cpr 3690   class class class wbr 4109  cfv 5352  (class class class)co 6050  cc 8125  cr 8126  0cc0 8127  1c1 8128   + caddc 8130   · cmul 8132   < clt 8308  cle 8309  cmin 8444  -cneg 8445   # cap 8855   / cdiv 8946  cn 9237  2c2 9288  0cn0 9496  cz 9577  cuz 9853  cq 9951  ..^cfzo 10476  cfl 10628   mod cmo 10684  cexp 10900  cdvds 12473  bitscbits 12626
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-ia1 106  ax-ia2 107  ax-ia3 108  ax-in1 619  ax-in2 620  ax-io 717  ax-5 1496  ax-7 1497  ax-gen 1498  ax-ie1 1542  ax-ie2 1543  ax-8 1553  ax-10 1554  ax-11 1555  ax-i12 1556  ax-bndl 1558  ax-4 1559  ax-17 1575  ax-i9 1579  ax-ial 1583  ax-i5r 1584  ax-13 2205  ax-14 2206  ax-ext 2214  ax-coll 4225  ax-sep 4228  ax-nul 4236  ax-pow 4287  ax-pr 4322  ax-un 4554  ax-setind 4659  ax-iinf 4710  ax-cnex 8218  ax-resscn 8219  ax-1cn 8220  ax-1re 8221  ax-icn 8222  ax-addcl 8223  ax-addrcl 8224  ax-mulcl 8225  ax-mulrcl 8226  ax-addcom 8227  ax-mulcom 8228  ax-addass 8229  ax-mulass 8230  ax-distr 8231  ax-i2m1 8232  ax-0lt1 8233  ax-1rid 8234  ax-0id 8235  ax-rnegex 8236  ax-precex 8237  ax-cnre 8238  ax-pre-ltirr 8239  ax-pre-ltwlin 8240  ax-pre-lttrn 8241  ax-pre-apti 8242  ax-pre-ltadd 8243  ax-pre-mulgt0 8244  ax-pre-mulext 8245  ax-arch 8246
This theorem depends on definitions:  df-bi 117  df-stab 839  df-dc 843  df-3or 1006  df-3an 1007  df-tru 1401  df-fal 1404  df-nf 1510  df-sb 1812  df-eu 2083  df-mo 2084  df-clab 2219  df-cleq 2225  df-clel 2228  df-nfc 2373  df-ne 2413  df-nel 2508  df-ral 2525  df-rex 2526  df-reu 2527  df-rmo 2528  df-rab 2529  df-v 2815  df-sbc 3043  df-csb 3139  df-dif 3213  df-un 3215  df-in 3217  df-ss 3224  df-nul 3509  df-if 3621  df-pw 3671  df-sn 3695  df-pr 3696  df-op 3698  df-uni 3915  df-int 3950  df-iun 3993  df-br 4110  df-opab 4172  df-mpt 4173  df-tr 4209  df-id 4414  df-po 4417  df-iso 4418  df-iord 4487  df-on 4489  df-ilim 4490  df-suc 4492  df-iom 4713  df-xp 4755  df-rel 4756  df-cnv 4757  df-co 4758  df-dm 4759  df-rn 4760  df-res 4761  df-ima 4762  df-iota 5312  df-fun 5354  df-fn 5355  df-f 5356  df-f1 5357  df-fo 5358  df-f1o 5359  df-fv 5360  df-riota 6003  df-ov 6053  df-oprab 6054  df-mpo 6055  df-1st 6334  df-2nd 6335  df-recs 6536  df-frec 6622  df-pnf 8310  df-mnf 8311  df-xr 8312  df-ltxr 8313  df-le 8314  df-sub 8446  df-neg 8447  df-reap 8849  df-ap 8856  df-div 8947  df-inn 9238  df-2 9296  df-n0 9497  df-z 9578  df-uz 9854  df-q 9952  df-rp 9987  df-fz 10343  df-fzo 10477  df-fl 10630  df-mod 10685  df-seqfrec 10810  df-exp 10901  df-dvds 12474  df-bits 12627
This theorem is referenced by:  bitsinv1  12648
  Copyright terms: Public domain W3C validator