Metamath Proof Explorer


Theorem bitsmod

Description: Truncating the bit sequence after some M is equivalent to reducing the argument mod 2 ^ M . (Contributed by Mario Carneiro, 6-Sep-2016)

Ref Expression
Assertion bitsmod ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → bits ⁡ N mod 2 M = bits ⁡ N ∩ 0 ..^ M

Proof

Step Hyp Ref Expression
1 simpl ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → N ∈ ℤ
2 2nn ⊢ 2 ∈ ℕ
3 2 a1i ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → 2 ∈ ℕ
4 simpr ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → M ∈ ℕ 0
5 3 4 nnexpcld ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → 2 M ∈ ℕ
6 1 5 zmodcld ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → N mod 2 M ∈ ℕ 0
7 6 nn0zd ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → N mod 2 M ∈ ℤ
8 7 biantrurd ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → x ∈ ℕ 0 ∧ ¬ 2 ∥ N mod 2 M 2 x ↔ N mod 2 M ∈ ℤ ∧ x ∈ ℕ 0 ∧ ¬ 2 ∥ N mod 2 M 2 x
9 1 ad2antrr ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ x < M → N ∈ ℤ
10 simplr ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ x < M → x ∈ ℕ 0
11 bitsval2 ⊢ N ∈ ℤ ∧ x ∈ ℕ 0 → x ∈ bits ⁡ N ↔ ¬ 2 ∥ N 2 x
12 9 10 11 syl2anc ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ x < M → x ∈ bits ⁡ N ↔ ¬ 2 ∥ N 2 x
13 simpr ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ x < M → x < M
14 13 biantrud ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ x < M → x ∈ bits ⁡ N ↔ x ∈ bits ⁡ N ∧ x < M
15 2z ⊢ 2 ∈ ℤ
16 15 a1i ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ x < M → 2 ∈ ℤ
17 9 zred ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ x < M → N ∈ ℝ
18 2 a1i ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ x < M → 2 ∈ ℕ
19 18 10 nnexpcld ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ x < M → 2 x ∈ ℕ
20 17 19 nndivred ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ x < M → N 2 x ∈ ℝ
21 20 flcld ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ x < M → N 2 x ∈ ℤ
22 7 ad2antrr ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ x < M → N mod 2 M ∈ ℤ
23 22 zred ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ x < M → N mod 2 M ∈ ℝ
24 23 19 nndivred ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ x < M → N mod 2 M 2 x ∈ ℝ
25 24 flcld ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ x < M → N mod 2 M 2 x ∈ ℤ
26 19 nnzd ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ x < M → 2 x ∈ ℤ
27 26 16 zmulcld ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ x < M → 2 x ⋅ 2 ∈ ℤ
28 5 ad2antrr ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ x < M → 2 M ∈ ℕ
29 28 nnzd ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ x < M → 2 M ∈ ℤ
30 9 22 zsubcld ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ x < M → N − N mod 2 M ∈ ℤ
31 2cnd ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ x < M → 2 ∈ ℂ
32 31 10 expp1d ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ x < M → 2 x + 1 = 2 x ⋅ 2
33 1nn0 ⊢ 1 ∈ ℕ 0
34 33 a1i ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ x < M → 1 ∈ ℕ 0
35 10 34 nn0addcld ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ x < M → x + 1 ∈ ℕ 0
36 35 nn0zd ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ x < M → x + 1 ∈ ℤ
37 simplr ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 → M ∈ ℕ 0
38 37 adantr ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ x < M → M ∈ ℕ 0
39 38 nn0zd ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ x < M → M ∈ ℤ
40 nn0ltp1le ⊢ x ∈ ℕ 0 ∧ M ∈ ℕ 0 → x < M ↔ x + 1 ≤ M
41 10 38 40 syl2anc ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ x < M → x < M ↔ x + 1 ≤ M
42 13 41 mpbid ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ x < M → x + 1 ≤ M
43 eluz2 ⊢ M ∈ ℤ ≥ x + 1 ↔ x + 1 ∈ ℤ ∧ M ∈ ℤ ∧ x + 1 ≤ M
44 36 39 42 43 syl3anbrc ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ x < M → M ∈ ℤ ≥ x + 1
45 dvdsexp ⊢ 2 ∈ ℤ ∧ x + 1 ∈ ℕ 0 ∧ M ∈ ℤ ≥ x + 1 → 2 x + 1 ∥ 2 M
46 16 35 44 45 syl3anc ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ x < M → 2 x + 1 ∥ 2 M
47 32 46 eqbrtrrd ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ x < M → 2 x ⋅ 2 ∥ 2 M
48 28 nnrpd ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ x < M → 2 M ∈ ℝ +
49 moddifz ⊢ N ∈ ℝ ∧ 2 M ∈ ℝ + → N − N mod 2 M 2 M ∈ ℤ
50 17 48 49 syl2anc ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ x < M → N − N mod 2 M 2 M ∈ ℤ
51 2ne0 ⊢ 2 ≠ 0
52 51 a1i ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ x < M → 2 ≠ 0
53 31 52 39 expne0d ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ x < M → 2 M ≠ 0
54 dvdsval2 ⊢ 2 M ∈ ℤ ∧ 2 M ≠ 0 ∧ N − N mod 2 M ∈ ℤ → 2 M ∥ N − N mod 2 M ↔ N − N mod 2 M 2 M ∈ ℤ
55 29 53 30 54 syl3anc ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ x < M → 2 M ∥ N − N mod 2 M ↔ N − N mod 2 M 2 M ∈ ℤ
56 50 55 mpbird ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ x < M → 2 M ∥ N − N mod 2 M
57 27 29 30 47 56 dvdstrd ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ x < M → 2 x ⋅ 2 ∥ N − N mod 2 M
58 30 zcnd ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ x < M → N − N mod 2 M ∈ ℂ
59 19 nncnd ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ x < M → 2 x ∈ ℂ
60 10 nn0zd ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ x < M → x ∈ ℤ
61 31 52 60 expne0d ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ x < M → 2 x ≠ 0
62 58 59 61 divcan2d ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ x < M → 2 x ⁢ N − N mod 2 M 2 x = N − N mod 2 M
63 57 62 breqtrrd ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ x < M → 2 x ⋅ 2 ∥ 2 x ⁢ N − N mod 2 M 2 x
64 10 nn0red ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ x < M → x ∈ ℝ
65 38 nn0red ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ x < M → M ∈ ℝ
66 64 65 13 ltled ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ x < M → x ≤ M
67 eluz2 ⊢ M ∈ ℤ ≥ x ↔ x ∈ ℤ ∧ M ∈ ℤ ∧ x ≤ M
68 60 39 66 67 syl3anbrc ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ x < M → M ∈ ℤ ≥ x
69 dvdsexp ⊢ 2 ∈ ℤ ∧ x ∈ ℕ 0 ∧ M ∈ ℤ ≥ x → 2 x ∥ 2 M
70 16 10 68 69 syl3anc ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ x < M → 2 x ∥ 2 M
71 26 29 30 70 56 dvdstrd ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ x < M → 2 x ∥ N − N mod 2 M
72 dvdsval2 ⊢ 2 x ∈ ℤ ∧ 2 x ≠ 0 ∧ N − N mod 2 M ∈ ℤ → 2 x ∥ N − N mod 2 M ↔ N − N mod 2 M 2 x ∈ ℤ
73 26 61 30 72 syl3anc ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ x < M → 2 x ∥ N − N mod 2 M ↔ N − N mod 2 M 2 x ∈ ℤ
74 71 73 mpbid ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ x < M → N − N mod 2 M 2 x ∈ ℤ
75 dvdscmulr ⊢ 2 ∈ ℤ ∧ N − N mod 2 M 2 x ∈ ℤ ∧ 2 x ∈ ℤ ∧ 2 x ≠ 0 → 2 x ⋅ 2 ∥ 2 x ⁢ N − N mod 2 M 2 x ↔ 2 ∥ N − N mod 2 M 2 x
76 16 74 26 61 75 syl112anc ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ x < M → 2 x ⋅ 2 ∥ 2 x ⁢ N − N mod 2 M 2 x ↔ 2 ∥ N − N mod 2 M 2 x
77 63 76 mpbid ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ x < M → 2 ∥ N − N mod 2 M 2 x
78 25 zcnd ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ x < M → N mod 2 M 2 x ∈ ℂ
79 74 zcnd ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ x < M → N − N mod 2 M 2 x ∈ ℂ
80 22 zcnd ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ x < M → N mod 2 M ∈ ℂ
81 9 zcnd ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ x < M → N ∈ ℂ
82 80 81 pncan3d ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ x < M → N mod 2 M + N - N mod 2 M = N
83 82 oveq1d ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ x < M → N mod 2 M + N - N mod 2 M 2 x = N 2 x
84 80 58 59 61 divdird ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ x < M → N mod 2 M + N - N mod 2 M 2 x = N mod 2 M 2 x + N − N mod 2 M 2 x
85 83 84 eqtr3d ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ x < M → N 2 x = N mod 2 M 2 x + N − N mod 2 M 2 x
86 85 fveq2d ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ x < M → N 2 x = N mod 2 M 2 x + N − N mod 2 M 2 x
87 fladdz ⊢ N mod 2 M 2 x ∈ ℝ ∧ N − N mod 2 M 2 x ∈ ℤ → N mod 2 M 2 x + N − N mod 2 M 2 x = N mod 2 M 2 x + N − N mod 2 M 2 x
88 24 74 87 syl2anc ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ x < M → N mod 2 M 2 x + N − N mod 2 M 2 x = N mod 2 M 2 x + N − N mod 2 M 2 x
89 86 88 eqtrd ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ x < M → N 2 x = N mod 2 M 2 x + N − N mod 2 M 2 x
90 78 79 89 mvrladdd ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ x < M → N 2 x − N mod 2 M 2 x = N − N mod 2 M 2 x
91 77 90 breqtrrd ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ x < M → 2 ∥ N 2 x − N mod 2 M 2 x
92 dvdssub2 ⊢ 2 ∈ ℤ ∧ N 2 x ∈ ℤ ∧ N mod 2 M 2 x ∈ ℤ ∧ 2 ∥ N 2 x − N mod 2 M 2 x → 2 ∥ N 2 x ↔ 2 ∥ N mod 2 M 2 x
93 16 21 25 91 92 syl31anc ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ x < M → 2 ∥ N 2 x ↔ 2 ∥ N mod 2 M 2 x
94 93 notbid ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ x < M → ¬ 2 ∥ N 2 x ↔ ¬ 2 ∥ N mod 2 M 2 x
95 12 14 94 3bitr3d ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ x < M → x ∈ bits ⁡ N ∧ x < M ↔ ¬ 2 ∥ N mod 2 M 2 x
96 z0even ⊢ 2 ∥ 0
97 1 ad2antrr ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ ¬ x < M → N ∈ ℤ
98 97 zred ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ ¬ x < M → N ∈ ℝ
99 2rp ⊢ 2 ∈ ℝ +
100 99 a1i ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ ¬ x < M → 2 ∈ ℝ +
101 37 nn0zd ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 → M ∈ ℤ
102 101 adantr ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ ¬ x < M → M ∈ ℤ
103 100 102 rpexpcld ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ ¬ x < M → 2 M ∈ ℝ +
104 98 103 modcld ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ ¬ x < M → N mod 2 M ∈ ℝ
105 simplr ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ ¬ x < M → x ∈ ℕ 0
106 105 nn0zd ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ ¬ x < M → x ∈ ℤ
107 100 106 rpexpcld ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ ¬ x < M → 2 x ∈ ℝ +
108 6 ad2antrr ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ ¬ x < M → N mod 2 M ∈ ℕ 0
109 108 nn0ge0d ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ ¬ x < M → 0 ≤ N mod 2 M
110 104 107 109 divge0d ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ ¬ x < M → 0 ≤ N mod 2 M 2 x
111 103 rpred ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ ¬ x < M → 2 M ∈ ℝ
112 107 rpred ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ ¬ x < M → 2 x ∈ ℝ
113 modlt ⊢ N ∈ ℝ ∧ 2 M ∈ ℝ + → N mod 2 M < 2 M
114 98 103 113 syl2anc ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ ¬ x < M → N mod 2 M < 2 M
115 100 rpred ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ ¬ x < M → 2 ∈ ℝ
116 1le2 ⊢ 1 ≤ 2
117 116 a1i ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ ¬ x < M → 1 ≤ 2
118 102 zred ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ ¬ x < M → M ∈ ℝ
119 105 nn0red ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ ¬ x < M → x ∈ ℝ
120 simpr ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ ¬ x < M → ¬ x < M
121 118 119 120 nltled ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ ¬ x < M → M ≤ x
122 eluz2 ⊢ x ∈ ℤ ≥ M ↔ M ∈ ℤ ∧ x ∈ ℤ ∧ M ≤ x
123 102 106 121 122 syl3anbrc ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ ¬ x < M → x ∈ ℤ ≥ M
124 115 117 123 leexp2ad ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ ¬ x < M → 2 M ≤ 2 x
125 104 111 112 114 124 ltletrd ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ ¬ x < M → N mod 2 M < 2 x
126 107 rpcnd ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ ¬ x < M → 2 x ∈ ℂ
127 126 mulridd ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ ¬ x < M → 2 x ⋅ 1 = 2 x
128 125 127 breqtrrd ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ ¬ x < M → N mod 2 M < 2 x ⋅ 1
129 1red ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ ¬ x < M → 1 ∈ ℝ
130 104 129 107 ltdivmuld ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ ¬ x < M → N mod 2 M 2 x < 1 ↔ N mod 2 M < 2 x ⋅ 1
131 128 130 mpbird ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ ¬ x < M → N mod 2 M 2 x < 1
132 1e0p1 ⊢ 1 = 0 + 1
133 131 132 breqtrdi ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ ¬ x < M → N mod 2 M 2 x < 0 + 1
134 104 107 rerpdivcld ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ ¬ x < M → N mod 2 M 2 x ∈ ℝ
135 0z ⊢ 0 ∈ ℤ
136 flbi ⊢ N mod 2 M 2 x ∈ ℝ ∧ 0 ∈ ℤ → N mod 2 M 2 x = 0 ↔ 0 ≤ N mod 2 M 2 x ∧ N mod 2 M 2 x < 0 + 1
137 134 135 136 sylancl ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ ¬ x < M → N mod 2 M 2 x = 0 ↔ 0 ≤ N mod 2 M 2 x ∧ N mod 2 M 2 x < 0 + 1
138 110 133 137 mpbir2and ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ ¬ x < M → N mod 2 M 2 x = 0
139 96 138 breqtrrid ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ ¬ x < M → 2 ∥ N mod 2 M 2 x
140 120 intnand ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ ¬ x < M → ¬ x ∈ bits ⁡ N ∧ x < M
141 139 140 2thd ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ ¬ x < M → 2 ∥ N mod 2 M 2 x ↔ ¬ x ∈ bits ⁡ N ∧ x < M
142 141 con2bid ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 ∧ ¬ x < M → x ∈ bits ⁡ N ∧ x < M ↔ ¬ 2 ∥ N mod 2 M 2 x
143 95 142 pm2.61dan ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 → x ∈ bits ⁡ N ∧ x < M ↔ ¬ 2 ∥ N mod 2 M 2 x
144 101 biantrurd ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 → x ∈ bits ⁡ N ∧ x < M ↔ M ∈ ℤ ∧ x ∈ bits ⁡ N ∧ x < M
145 143 144 bitr3d ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 → ¬ 2 ∥ N mod 2 M 2 x ↔ M ∈ ℤ ∧ x ∈ bits ⁡ N ∧ x < M
146 an12 ⊢ M ∈ ℤ ∧ x ∈ bits ⁡ N ∧ x < M ↔ x ∈ bits ⁡ N ∧ M ∈ ℤ ∧ x < M
147 145 146 bitrdi ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 ∧ x ∈ ℕ 0 → ¬ 2 ∥ N mod 2 M 2 x ↔ x ∈ bits ⁡ N ∧ M ∈ ℤ ∧ x < M
148 147 pm5.32da ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → x ∈ ℕ 0 ∧ ¬ 2 ∥ N mod 2 M 2 x ↔ x ∈ ℕ 0 ∧ x ∈ bits ⁡ N ∧ M ∈ ℤ ∧ x < M
149 8 148 bitr3d ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → N mod 2 M ∈ ℤ ∧ x ∈ ℕ 0 ∧ ¬ 2 ∥ N mod 2 M 2 x ↔ x ∈ ℕ 0 ∧ x ∈ bits ⁡ N ∧ M ∈ ℤ ∧ x < M
150 3anass ⊢ N mod 2 M ∈ ℤ ∧ x ∈ ℕ 0 ∧ ¬ 2 ∥ N mod 2 M 2 x ↔ N mod 2 M ∈ ℤ ∧ x ∈ ℕ 0 ∧ ¬ 2 ∥ N mod 2 M 2 x
151 elfzo2 ⊢ x ∈ 0 ..^ M ↔ x ∈ ℤ ≥ 0 ∧ M ∈ ℤ ∧ x < M
152 elnn0uz ⊢ x ∈ ℕ 0 ↔ x ∈ ℤ ≥ 0
153 152 3anbi1i ⊢ x ∈ ℕ 0 ∧ M ∈ ℤ ∧ x < M ↔ x ∈ ℤ ≥ 0 ∧ M ∈ ℤ ∧ x < M
154 3anass ⊢ x ∈ ℕ 0 ∧ M ∈ ℤ ∧ x < M ↔ x ∈ ℕ 0 ∧ M ∈ ℤ ∧ x < M
155 151 153 154 3bitr2i ⊢ x ∈ 0 ..^ M ↔ x ∈ ℕ 0 ∧ M ∈ ℤ ∧ x < M
156 155 anbi2i ⊢ x ∈ bits ⁡ N ∧ x ∈ 0 ..^ M ↔ x ∈ bits ⁡ N ∧ x ∈ ℕ 0 ∧ M ∈ ℤ ∧ x < M
157 an12 ⊢ x ∈ bits ⁡ N ∧ x ∈ ℕ 0 ∧ M ∈ ℤ ∧ x < M ↔ x ∈ ℕ 0 ∧ x ∈ bits ⁡ N ∧ M ∈ ℤ ∧ x < M
158 156 157 bitri ⊢ x ∈ bits ⁡ N ∧ x ∈ 0 ..^ M ↔ x ∈ ℕ 0 ∧ x ∈ bits ⁡ N ∧ M ∈ ℤ ∧ x < M
159 149 150 158 3bitr4g ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → N mod 2 M ∈ ℤ ∧ x ∈ ℕ 0 ∧ ¬ 2 ∥ N mod 2 M 2 x ↔ x ∈ bits ⁡ N ∧ x ∈ 0 ..^ M
160 bitsval ⊢ x ∈ bits ⁡ N mod 2 M ↔ N mod 2 M ∈ ℤ ∧ x ∈ ℕ 0 ∧ ¬ 2 ∥ N mod 2 M 2 x
161 elin ⊢ x ∈ bits ⁡ N ∩ 0 ..^ M ↔ x ∈ bits ⁡ N ∧ x ∈ 0 ..^ M
162 159 160 161 3bitr4g ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → x ∈ bits ⁡ N mod 2 M ↔ x ∈ bits ⁡ N ∩ 0 ..^ M
163 162 eqrdv ⊢ N ∈ ℤ ∧ M ∈ ℕ 0 → bits ⁡ N mod 2 M = bits ⁡ N ∩ 0 ..^ M