Metamath Proof Explorer


Theorem bitsuz

Description: The bits of a number are all at least N iff the number is divisible by 2 ^ N . (Contributed by Mario Carneiro, 21-Sep-2016)

Ref Expression
Assertion bitsuz ⊢ A ∈ ℤ ∧ N ∈ ℕ 0 → 2 N ∥ A ↔ bits ⁡ A ⊆ ℤ ≥ N

Proof

Step Hyp Ref Expression
1 bitsres ⊢ A ∈ ℤ ∧ N ∈ ℕ 0 → bits ⁡ A ∩ ℤ ≥ N = bits ⁡ A 2 N ⁢ 2 N
2 1 eqeq1d ⊢ A ∈ ℤ ∧ N ∈ ℕ 0 → bits ⁡ A ∩ ℤ ≥ N = bits ⁡ A ↔ bits ⁡ A 2 N ⁢ 2 N = bits ⁡ A
3 simpl ⊢ A ∈ ℤ ∧ N ∈ ℕ 0 → A ∈ ℤ
4 3 zred ⊢ A ∈ ℤ ∧ N ∈ ℕ 0 → A ∈ ℝ
5 2nn ⊢ 2 ∈ ℕ
6 5 a1i ⊢ A ∈ ℤ ∧ N ∈ ℕ 0 → 2 ∈ ℕ
7 simpr ⊢ A ∈ ℤ ∧ N ∈ ℕ 0 → N ∈ ℕ 0
8 6 7 nnexpcld ⊢ A ∈ ℤ ∧ N ∈ ℕ 0 → 2 N ∈ ℕ
9 4 8 nndivred ⊢ A ∈ ℤ ∧ N ∈ ℕ 0 → A 2 N ∈ ℝ
10 9 flcld ⊢ A ∈ ℤ ∧ N ∈ ℕ 0 → A 2 N ∈ ℤ
11 8 nnzd ⊢ A ∈ ℤ ∧ N ∈ ℕ 0 → 2 N ∈ ℤ
12 10 11 zmulcld ⊢ A ∈ ℤ ∧ N ∈ ℕ 0 → A 2 N ⁢ 2 N ∈ ℤ
13 bitsf1 ⊢ bits : ℤ ⟶ 1-1 𝒫 ℕ 0
14 f1fveq ⊢ bits : ℤ ⟶ 1-1 𝒫 ℕ 0 ∧ A 2 N ⁢ 2 N ∈ ℤ ∧ A ∈ ℤ → bits ⁡ A 2 N ⁢ 2 N = bits ⁡ A ↔ A 2 N ⁢ 2 N = A
15 13 14 mpan ⊢ A 2 N ⁢ 2 N ∈ ℤ ∧ A ∈ ℤ → bits ⁡ A 2 N ⁢ 2 N = bits ⁡ A ↔ A 2 N ⁢ 2 N = A
16 12 3 15 syl2anc ⊢ A ∈ ℤ ∧ N ∈ ℕ 0 → bits ⁡ A 2 N ⁢ 2 N = bits ⁡ A ↔ A 2 N ⁢ 2 N = A
17 dvdsmul2 ⊢ A 2 N ∈ ℤ ∧ 2 N ∈ ℤ → 2 N ∥ A 2 N ⁢ 2 N
18 10 11 17 syl2anc ⊢ A ∈ ℤ ∧ N ∈ ℕ 0 → 2 N ∥ A 2 N ⁢ 2 N
19 breq2 ⊢ A 2 N ⁢ 2 N = A → 2 N ∥ A 2 N ⁢ 2 N ↔ 2 N ∥ A
20 18 19 syl5ibcom ⊢ A ∈ ℤ ∧ N ∈ ℕ 0 → A 2 N ⁢ 2 N = A → 2 N ∥ A
21 8 nnne0d ⊢ A ∈ ℤ ∧ N ∈ ℕ 0 → 2 N ≠ 0
22 dvdsval2 ⊢ 2 N ∈ ℤ ∧ 2 N ≠ 0 ∧ A ∈ ℤ → 2 N ∥ A ↔ A 2 N ∈ ℤ
23 11 21 3 22 syl3anc ⊢ A ∈ ℤ ∧ N ∈ ℕ 0 → 2 N ∥ A ↔ A 2 N ∈ ℤ
24 23 biimpa ⊢ A ∈ ℤ ∧ N ∈ ℕ 0 ∧ 2 N ∥ A → A 2 N ∈ ℤ
25 flid ⊢ A 2 N ∈ ℤ → A 2 N = A 2 N
26 24 25 syl ⊢ A ∈ ℤ ∧ N ∈ ℕ 0 ∧ 2 N ∥ A → A 2 N = A 2 N
27 26 oveq1d ⊢ A ∈ ℤ ∧ N ∈ ℕ 0 ∧ 2 N ∥ A → A 2 N ⁢ 2 N = A 2 N ⁢ 2 N
28 3 zcnd ⊢ A ∈ ℤ ∧ N ∈ ℕ 0 → A ∈ ℂ
29 28 adantr ⊢ A ∈ ℤ ∧ N ∈ ℕ 0 ∧ 2 N ∥ A → A ∈ ℂ
30 8 nncnd ⊢ A ∈ ℤ ∧ N ∈ ℕ 0 → 2 N ∈ ℂ
31 30 adantr ⊢ A ∈ ℤ ∧ N ∈ ℕ 0 ∧ 2 N ∥ A → 2 N ∈ ℂ
32 2cnd ⊢ A ∈ ℤ ∧ N ∈ ℕ 0 ∧ 2 N ∥ A → 2 ∈ ℂ
33 2ne0 ⊢ 2 ≠ 0
34 33 a1i ⊢ A ∈ ℤ ∧ N ∈ ℕ 0 ∧ 2 N ∥ A → 2 ≠ 0
35 7 nn0zd ⊢ A ∈ ℤ ∧ N ∈ ℕ 0 → N ∈ ℤ
36 35 adantr ⊢ A ∈ ℤ ∧ N ∈ ℕ 0 ∧ 2 N ∥ A → N ∈ ℤ
37 32 34 36 expne0d ⊢ A ∈ ℤ ∧ N ∈ ℕ 0 ∧ 2 N ∥ A → 2 N ≠ 0
38 29 31 37 divcan1d ⊢ A ∈ ℤ ∧ N ∈ ℕ 0 ∧ 2 N ∥ A → A 2 N ⁢ 2 N = A
39 27 38 eqtrd ⊢ A ∈ ℤ ∧ N ∈ ℕ 0 ∧ 2 N ∥ A → A 2 N ⁢ 2 N = A
40 39 ex ⊢ A ∈ ℤ ∧ N ∈ ℕ 0 → 2 N ∥ A → A 2 N ⁢ 2 N = A
41 20 40 impbid ⊢ A ∈ ℤ ∧ N ∈ ℕ 0 → A 2 N ⁢ 2 N = A ↔ 2 N ∥ A
42 2 16 41 3bitrrd ⊢ A ∈ ℤ ∧ N ∈ ℕ 0 → 2 N ∥ A ↔ bits ⁡ A ∩ ℤ ≥ N = bits ⁡ A
43 dfss2 ⊢ bits ⁡ A ⊆ ℤ ≥ N ↔ bits ⁡ A ∩ ℤ ≥ N = bits ⁡ A
44 42 43 bitr4di ⊢ A ∈ ℤ ∧ N ∈ ℕ 0 → 2 N ∥ A ↔ bits ⁡ A ⊆ ℤ ≥ N