Metamath Proof Explorer


Theorem bitsfzolem

Description: Lemma for bitsfzo . (Contributed by Mario Carneiro, 5-Sep-2016) (Revised by AV, 1-Oct-2020)

Ref Expression
Hypotheses bitsfzo.1 ⊢ φ → N ∈ ℕ 0
bitsfzo.2 ⊢ φ → M ∈ ℕ 0
bitsfzo.3 ⊢ φ → bits ⁡ N ⊆ 0 ..^ M
bitsfzo.4 ⊢ S = inf n ∈ ℕ 0 | N < 2 n ℝ <
Assertion bitsfzolem ⊢ φ → N ∈ 0 ..^ 2 M

Proof

Step Hyp Ref Expression
1 bitsfzo.1 ⊢ φ → N ∈ ℕ 0
2 bitsfzo.2 ⊢ φ → M ∈ ℕ 0
3 bitsfzo.3 ⊢ φ → bits ⁡ N ⊆ 0 ..^ M
4 bitsfzo.4 ⊢ S = inf n ∈ ℕ 0 | N < 2 n ℝ <
5 nn0uz ⊢ ℕ 0 = ℤ ≥ 0
6 1 5 eleqtrdi ⊢ φ → N ∈ ℤ ≥ 0
7 2nn ⊢ 2 ∈ ℕ
8 7 a1i ⊢ φ → 2 ∈ ℕ
9 8 2 nnexpcld ⊢ φ → 2 M ∈ ℕ
10 9 nnzd ⊢ φ → 2 M ∈ ℤ
11 3 adantr ⊢ φ ∧ 2 M ≤ N → bits ⁡ N ⊆ 0 ..^ M
12 n2dvds1 ⊢ ¬ 2 ∥ 1
13 7 a1i ⊢ φ ∧ 2 M ≤ N → 2 ∈ ℕ
14 ssrab2 ⊢ n ∈ ℕ 0 | N < 2 n ⊆ ℕ 0
15 14 5 sseqtri ⊢ n ∈ ℕ 0 | N < 2 n ⊆ ℤ ≥ 0
16 nnssnn0 ⊢ ℕ ⊆ ℕ 0
17 1 nn0red ⊢ φ → N ∈ ℝ
18 2re ⊢ 2 ∈ ℝ
19 18 a1i ⊢ φ → 2 ∈ ℝ
20 1lt2 ⊢ 1 < 2
21 20 a1i ⊢ φ → 1 < 2
22 expnbnd ⊢ N ∈ ℝ ∧ 2 ∈ ℝ ∧ 1 < 2 → ∃ n ∈ ℕ N < 2 n
23 17 19 21 22 syl3anc ⊢ φ → ∃ n ∈ ℕ N < 2 n
24 ssrexv ⊢ ℕ ⊆ ℕ 0 → ∃ n ∈ ℕ N < 2 n → ∃ n ∈ ℕ 0 N < 2 n
25 16 23 24 mpsyl ⊢ φ → ∃ n ∈ ℕ 0 N < 2 n
26 rabn0 ⊢ n ∈ ℕ 0 | N < 2 n ≠ ∅ ↔ ∃ n ∈ ℕ 0 N < 2 n
27 25 26 sylibr ⊢ φ → n ∈ ℕ 0 | N < 2 n ≠ ∅
28 infssuzcl ⊢ n ∈ ℕ 0 | N < 2 n ⊆ ℤ ≥ 0 ∧ n ∈ ℕ 0 | N < 2 n ≠ ∅ → inf n ∈ ℕ 0 | N < 2 n ℝ < ∈ n ∈ ℕ 0 | N < 2 n
29 15 27 28 sylancr ⊢ φ → inf n ∈ ℕ 0 | N < 2 n ℝ < ∈ n ∈ ℕ 0 | N < 2 n
30 4 29 eqeltrid ⊢ φ → S ∈ n ∈ ℕ 0 | N < 2 n
31 14 30 sselid ⊢ φ → S ∈ ℕ 0
32 31 nn0zd ⊢ φ → S ∈ ℤ
33 32 adantr ⊢ φ ∧ 2 M ≤ N → S ∈ ℤ
34 0red ⊢ φ ∧ 2 M ≤ N → 0 ∈ ℝ
35 2 nn0zd ⊢ φ → M ∈ ℤ
36 35 adantr ⊢ φ ∧ 2 M ≤ N → M ∈ ℤ
37 36 zred ⊢ φ ∧ 2 M ≤ N → M ∈ ℝ
38 33 zred ⊢ φ ∧ 2 M ≤ N → S ∈ ℝ
39 2 adantr ⊢ φ ∧ 2 M ≤ N → M ∈ ℕ 0
40 39 nn0ge0d ⊢ φ ∧ 2 M ≤ N → 0 ≤ M
41 18 a1i ⊢ φ ∧ 2 M ≤ N → 2 ∈ ℝ
42 41 39 reexpcld ⊢ φ ∧ 2 M ≤ N → 2 M ∈ ℝ
43 17 adantr ⊢ φ ∧ 2 M ≤ N → N ∈ ℝ
44 8 31 nnexpcld ⊢ φ → 2 S ∈ ℕ
45 44 adantr ⊢ φ ∧ 2 M ≤ N → 2 S ∈ ℕ
46 45 nnred ⊢ φ ∧ 2 M ≤ N → 2 S ∈ ℝ
47 simpr ⊢ φ ∧ 2 M ≤ N → 2 M ≤ N
48 30 adantr ⊢ φ ∧ 2 M ≤ N → S ∈ n ∈ ℕ 0 | N < 2 n
49 oveq2 ⊢ m = S → 2 m = 2 S
50 49 breq2d ⊢ m = S → N < 2 m ↔ N < 2 S
51 oveq2 ⊢ n = m → 2 n = 2 m
52 51 breq2d ⊢ n = m → N < 2 n ↔ N < 2 m
53 52 cbvrabv ⊢ n ∈ ℕ 0 | N < 2 n = m ∈ ℕ 0 | N < 2 m
54 50 53 elrab2 ⊢ S ∈ n ∈ ℕ 0 | N < 2 n ↔ S ∈ ℕ 0 ∧ N < 2 S
55 54 simprbi ⊢ S ∈ n ∈ ℕ 0 | N < 2 n → N < 2 S
56 48 55 syl ⊢ φ ∧ 2 M ≤ N → N < 2 S
57 42 43 46 47 56 lelttrd ⊢ φ ∧ 2 M ≤ N → 2 M < 2 S
58 20 a1i ⊢ φ ∧ 2 M ≤ N → 1 < 2
59 41 36 33 58 ltexp2d ⊢ φ ∧ 2 M ≤ N → M < S ↔ 2 M < 2 S
60 57 59 mpbird ⊢ φ ∧ 2 M ≤ N → M < S
61 34 37 38 40 60 lelttrd ⊢ φ ∧ 2 M ≤ N → 0 < S
62 elnnz ⊢ S ∈ ℕ ↔ S ∈ ℤ ∧ 0 < S
63 33 61 62 sylanbrc ⊢ φ ∧ 2 M ≤ N → S ∈ ℕ
64 nnm1nn0 ⊢ S ∈ ℕ → S − 1 ∈ ℕ 0
65 63 64 syl ⊢ φ ∧ 2 M ≤ N → S − 1 ∈ ℕ 0
66 13 65 nnexpcld ⊢ φ ∧ 2 M ≤ N → 2 S − 1 ∈ ℕ
67 66 nncnd ⊢ φ ∧ 2 M ≤ N → 2 S − 1 ∈ ℂ
68 67 mullidd ⊢ φ ∧ 2 M ≤ N → 1 ⁢ 2 S − 1 = 2 S − 1
69 66 nnred ⊢ φ ∧ 2 M ≤ N → 2 S − 1 ∈ ℝ
70 38 ltm1d ⊢ φ ∧ 2 M ≤ N → S − 1 < S
71 65 nn0red ⊢ φ ∧ 2 M ≤ N → S − 1 ∈ ℝ
72 71 38 ltnled ⊢ φ ∧ 2 M ≤ N → S − 1 < S ↔ ¬ S ≤ S − 1
73 70 72 mpbid ⊢ φ ∧ 2 M ≤ N → ¬ S ≤ S − 1
74 oveq2 ⊢ m = S − 1 → 2 m = 2 S − 1
75 74 breq2d ⊢ m = S − 1 → N < 2 m ↔ N < 2 S − 1
76 75 53 elrab2 ⊢ S − 1 ∈ n ∈ ℕ 0 | N < 2 n ↔ S − 1 ∈ ℕ 0 ∧ N < 2 S − 1
77 infssuzle ⊢ n ∈ ℕ 0 | N < 2 n ⊆ ℤ ≥ 0 ∧ S − 1 ∈ n ∈ ℕ 0 | N < 2 n → inf n ∈ ℕ 0 | N < 2 n ℝ < ≤ S − 1
78 15 77 mpan ⊢ S − 1 ∈ n ∈ ℕ 0 | N < 2 n → inf n ∈ ℕ 0 | N < 2 n ℝ < ≤ S − 1
79 4 78 eqbrtrid ⊢ S − 1 ∈ n ∈ ℕ 0 | N < 2 n → S ≤ S − 1
80 79 a1i ⊢ φ ∧ 2 M ≤ N → S − 1 ∈ n ∈ ℕ 0 | N < 2 n → S ≤ S − 1
81 76 80 biimtrrid ⊢ φ ∧ 2 M ≤ N → S − 1 ∈ ℕ 0 ∧ N < 2 S − 1 → S ≤ S − 1
82 65 81 mpand ⊢ φ ∧ 2 M ≤ N → N < 2 S − 1 → S ≤ S − 1
83 73 82 mtod ⊢ φ ∧ 2 M ≤ N → ¬ N < 2 S − 1
84 69 43 83 nltled ⊢ φ ∧ 2 M ≤ N → 2 S − 1 ≤ N
85 68 84 eqbrtrd ⊢ φ ∧ 2 M ≤ N → 1 ⁢ 2 S − 1 ≤ N
86 1red ⊢ φ ∧ 2 M ≤ N → 1 ∈ ℝ
87 2rp ⊢ 2 ∈ ℝ +
88 87 a1i ⊢ φ ∧ 2 M ≤ N → 2 ∈ ℝ +
89 1z ⊢ 1 ∈ ℤ
90 89 a1i ⊢ φ ∧ 2 M ≤ N → 1 ∈ ℤ
91 33 90 zsubcld ⊢ φ ∧ 2 M ≤ N → S − 1 ∈ ℤ
92 88 91 rpexpcld ⊢ φ ∧ 2 M ≤ N → 2 S − 1 ∈ ℝ +
93 86 43 92 lemuldivd ⊢ φ ∧ 2 M ≤ N → 1 ⁢ 2 S − 1 ≤ N ↔ 1 ≤ N 2 S − 1
94 85 93 mpbid ⊢ φ ∧ 2 M ≤ N → 1 ≤ N 2 S − 1
95 2cn ⊢ 2 ∈ ℂ
96 expm1t ⊢ 2 ∈ ℂ ∧ S ∈ ℕ → 2 S = 2 S − 1 ⋅ 2
97 95 63 96 sylancr ⊢ φ ∧ 2 M ≤ N → 2 S = 2 S − 1 ⋅ 2
98 56 97 breqtrd ⊢ φ ∧ 2 M ≤ N → N < 2 S − 1 ⋅ 2
99 43 41 92 ltdivmuld ⊢ φ ∧ 2 M ≤ N → N 2 S − 1 < 2 ↔ N < 2 S − 1 ⋅ 2
100 98 99 mpbird ⊢ φ ∧ 2 M ≤ N → N 2 S − 1 < 2
101 df-2 ⊢ 2 = 1 + 1
102 100 101 breqtrdi ⊢ φ ∧ 2 M ≤ N → N 2 S − 1 < 1 + 1
103 43 92 rerpdivcld ⊢ φ ∧ 2 M ≤ N → N 2 S − 1 ∈ ℝ
104 flbi ⊢ N 2 S − 1 ∈ ℝ ∧ 1 ∈ ℤ → N 2 S − 1 = 1 ↔ 1 ≤ N 2 S − 1 ∧ N 2 S − 1 < 1 + 1
105 103 89 104 sylancl ⊢ φ ∧ 2 M ≤ N → N 2 S − 1 = 1 ↔ 1 ≤ N 2 S − 1 ∧ N 2 S − 1 < 1 + 1
106 94 102 105 mpbir2and ⊢ φ ∧ 2 M ≤ N → N 2 S − 1 = 1
107 106 breq2d ⊢ φ ∧ 2 M ≤ N → 2 ∥ N 2 S − 1 ↔ 2 ∥ 1
108 12 107 mtbiri ⊢ φ ∧ 2 M ≤ N → ¬ 2 ∥ N 2 S − 1
109 1 nn0zd ⊢ φ → N ∈ ℤ
110 bitsval2 ⊢ N ∈ ℤ ∧ S − 1 ∈ ℕ 0 → S − 1 ∈ bits ⁡ N ↔ ¬ 2 ∥ N 2 S − 1
111 109 65 110 syl2an2r ⊢ φ ∧ 2 M ≤ N → S − 1 ∈ bits ⁡ N ↔ ¬ 2 ∥ N 2 S − 1
112 108 111 mpbird ⊢ φ ∧ 2 M ≤ N → S − 1 ∈ bits ⁡ N
113 11 112 sseldd ⊢ φ ∧ 2 M ≤ N → S − 1 ∈ 0 ..^ M
114 elfzolt2 ⊢ S − 1 ∈ 0 ..^ M → S − 1 < M
115 113 114 syl ⊢ φ ∧ 2 M ≤ N → S − 1 < M
116 zlem1lt ⊢ S ∈ ℤ ∧ M ∈ ℤ → S ≤ M ↔ S − 1 < M
117 32 36 116 syl2an2r ⊢ φ ∧ 2 M ≤ N → S ≤ M ↔ S − 1 < M
118 115 117 mpbird ⊢ φ ∧ 2 M ≤ N → S ≤ M
119 37 38 ltnled ⊢ φ ∧ 2 M ≤ N → M < S ↔ ¬ S ≤ M
120 60 119 mpbid ⊢ φ ∧ 2 M ≤ N → ¬ S ≤ M
121 118 120 pm2.65da ⊢ φ → ¬ 2 M ≤ N
122 9 nnred ⊢ φ → 2 M ∈ ℝ
123 17 122 ltnled ⊢ φ → N < 2 M ↔ ¬ 2 M ≤ N
124 121 123 mpbird ⊢ φ → N < 2 M
125 elfzo2 ⊢ N ∈ 0 ..^ 2 M ↔ N ∈ ℤ ≥ 0 ∧ 2 M ∈ ℤ ∧ N < 2 M
126 6 10 124 125 syl3anbrc ⊢ φ → N ∈ 0 ..^ 2 M