Step |
Hyp |
Ref |
Expression |
1 |
|
eqid |
⊢ ( 𝑘 ∈ ℕ0 ↦ ( bits ‘ 𝑘 ) ) = ( 𝑘 ∈ ℕ0 ↦ ( bits ‘ 𝑘 ) ) |
2 |
|
bitsss |
⊢ ( bits ‘ 𝑘 ) ⊆ ℕ0 |
3 |
2
|
a1i |
⊢ ( 𝑘 ∈ ℕ0 → ( bits ‘ 𝑘 ) ⊆ ℕ0 ) |
4 |
|
bitsfi |
⊢ ( 𝑘 ∈ ℕ0 → ( bits ‘ 𝑘 ) ∈ Fin ) |
5 |
|
elfpw |
⊢ ( ( bits ‘ 𝑘 ) ∈ ( 𝒫 ℕ0 ∩ Fin ) ↔ ( ( bits ‘ 𝑘 ) ⊆ ℕ0 ∧ ( bits ‘ 𝑘 ) ∈ Fin ) ) |
6 |
3 4 5
|
sylanbrc |
⊢ ( 𝑘 ∈ ℕ0 → ( bits ‘ 𝑘 ) ∈ ( 𝒫 ℕ0 ∩ Fin ) ) |
7 |
6
|
adantl |
⊢ ( ( ⊤ ∧ 𝑘 ∈ ℕ0 ) → ( bits ‘ 𝑘 ) ∈ ( 𝒫 ℕ0 ∩ Fin ) ) |
8 |
|
elinel2 |
⊢ ( 𝑥 ∈ ( 𝒫 ℕ0 ∩ Fin ) → 𝑥 ∈ Fin ) |
9 |
|
2nn0 |
⊢ 2 ∈ ℕ0 |
10 |
9
|
a1i |
⊢ ( ( 𝑥 ∈ ( 𝒫 ℕ0 ∩ Fin ) ∧ 𝑛 ∈ 𝑥 ) → 2 ∈ ℕ0 ) |
11 |
|
elfpw |
⊢ ( 𝑥 ∈ ( 𝒫 ℕ0 ∩ Fin ) ↔ ( 𝑥 ⊆ ℕ0 ∧ 𝑥 ∈ Fin ) ) |
12 |
11
|
simplbi |
⊢ ( 𝑥 ∈ ( 𝒫 ℕ0 ∩ Fin ) → 𝑥 ⊆ ℕ0 ) |
13 |
12
|
sselda |
⊢ ( ( 𝑥 ∈ ( 𝒫 ℕ0 ∩ Fin ) ∧ 𝑛 ∈ 𝑥 ) → 𝑛 ∈ ℕ0 ) |
14 |
10 13
|
nn0expcld |
⊢ ( ( 𝑥 ∈ ( 𝒫 ℕ0 ∩ Fin ) ∧ 𝑛 ∈ 𝑥 ) → ( 2 ↑ 𝑛 ) ∈ ℕ0 ) |
15 |
8 14
|
fsumnn0cl |
⊢ ( 𝑥 ∈ ( 𝒫 ℕ0 ∩ Fin ) → Σ 𝑛 ∈ 𝑥 ( 2 ↑ 𝑛 ) ∈ ℕ0 ) |
16 |
15
|
adantl |
⊢ ( ( ⊤ ∧ 𝑥 ∈ ( 𝒫 ℕ0 ∩ Fin ) ) → Σ 𝑛 ∈ 𝑥 ( 2 ↑ 𝑛 ) ∈ ℕ0 ) |
17 |
|
bitsinv2 |
⊢ ( 𝑥 ∈ ( 𝒫 ℕ0 ∩ Fin ) → ( bits ‘ Σ 𝑛 ∈ 𝑥 ( 2 ↑ 𝑛 ) ) = 𝑥 ) |
18 |
17
|
eqcomd |
⊢ ( 𝑥 ∈ ( 𝒫 ℕ0 ∩ Fin ) → 𝑥 = ( bits ‘ Σ 𝑛 ∈ 𝑥 ( 2 ↑ 𝑛 ) ) ) |
19 |
18
|
ad2antll |
⊢ ( ( ⊤ ∧ ( 𝑘 ∈ ℕ0 ∧ 𝑥 ∈ ( 𝒫 ℕ0 ∩ Fin ) ) ) → 𝑥 = ( bits ‘ Σ 𝑛 ∈ 𝑥 ( 2 ↑ 𝑛 ) ) ) |
20 |
|
fveq2 |
⊢ ( 𝑘 = Σ 𝑛 ∈ 𝑥 ( 2 ↑ 𝑛 ) → ( bits ‘ 𝑘 ) = ( bits ‘ Σ 𝑛 ∈ 𝑥 ( 2 ↑ 𝑛 ) ) ) |
21 |
20
|
eqeq2d |
⊢ ( 𝑘 = Σ 𝑛 ∈ 𝑥 ( 2 ↑ 𝑛 ) → ( 𝑥 = ( bits ‘ 𝑘 ) ↔ 𝑥 = ( bits ‘ Σ 𝑛 ∈ 𝑥 ( 2 ↑ 𝑛 ) ) ) ) |
22 |
19 21
|
syl5ibrcom |
⊢ ( ( ⊤ ∧ ( 𝑘 ∈ ℕ0 ∧ 𝑥 ∈ ( 𝒫 ℕ0 ∩ Fin ) ) ) → ( 𝑘 = Σ 𝑛 ∈ 𝑥 ( 2 ↑ 𝑛 ) → 𝑥 = ( bits ‘ 𝑘 ) ) ) |
23 |
|
bitsinv1 |
⊢ ( 𝑘 ∈ ℕ0 → Σ 𝑛 ∈ ( bits ‘ 𝑘 ) ( 2 ↑ 𝑛 ) = 𝑘 ) |
24 |
23
|
eqcomd |
⊢ ( 𝑘 ∈ ℕ0 → 𝑘 = Σ 𝑛 ∈ ( bits ‘ 𝑘 ) ( 2 ↑ 𝑛 ) ) |
25 |
24
|
ad2antrl |
⊢ ( ( ⊤ ∧ ( 𝑘 ∈ ℕ0 ∧ 𝑥 ∈ ( 𝒫 ℕ0 ∩ Fin ) ) ) → 𝑘 = Σ 𝑛 ∈ ( bits ‘ 𝑘 ) ( 2 ↑ 𝑛 ) ) |
26 |
|
sumeq1 |
⊢ ( 𝑥 = ( bits ‘ 𝑘 ) → Σ 𝑛 ∈ 𝑥 ( 2 ↑ 𝑛 ) = Σ 𝑛 ∈ ( bits ‘ 𝑘 ) ( 2 ↑ 𝑛 ) ) |
27 |
26
|
eqeq2d |
⊢ ( 𝑥 = ( bits ‘ 𝑘 ) → ( 𝑘 = Σ 𝑛 ∈ 𝑥 ( 2 ↑ 𝑛 ) ↔ 𝑘 = Σ 𝑛 ∈ ( bits ‘ 𝑘 ) ( 2 ↑ 𝑛 ) ) ) |
28 |
25 27
|
syl5ibrcom |
⊢ ( ( ⊤ ∧ ( 𝑘 ∈ ℕ0 ∧ 𝑥 ∈ ( 𝒫 ℕ0 ∩ Fin ) ) ) → ( 𝑥 = ( bits ‘ 𝑘 ) → 𝑘 = Σ 𝑛 ∈ 𝑥 ( 2 ↑ 𝑛 ) ) ) |
29 |
22 28
|
impbid |
⊢ ( ( ⊤ ∧ ( 𝑘 ∈ ℕ0 ∧ 𝑥 ∈ ( 𝒫 ℕ0 ∩ Fin ) ) ) → ( 𝑘 = Σ 𝑛 ∈ 𝑥 ( 2 ↑ 𝑛 ) ↔ 𝑥 = ( bits ‘ 𝑘 ) ) ) |
30 |
1 7 16 29
|
f1ocnv2d |
⊢ ( ⊤ → ( ( 𝑘 ∈ ℕ0 ↦ ( bits ‘ 𝑘 ) ) : ℕ0 –1-1-onto→ ( 𝒫 ℕ0 ∩ Fin ) ∧ ◡ ( 𝑘 ∈ ℕ0 ↦ ( bits ‘ 𝑘 ) ) = ( 𝑥 ∈ ( 𝒫 ℕ0 ∩ Fin ) ↦ Σ 𝑛 ∈ 𝑥 ( 2 ↑ 𝑛 ) ) ) ) |
31 |
30
|
simpld |
⊢ ( ⊤ → ( 𝑘 ∈ ℕ0 ↦ ( bits ‘ 𝑘 ) ) : ℕ0 –1-1-onto→ ( 𝒫 ℕ0 ∩ Fin ) ) |
32 |
|
bitsf |
⊢ bits : ℤ ⟶ 𝒫 ℕ0 |
33 |
32
|
a1i |
⊢ ( ⊤ → bits : ℤ ⟶ 𝒫 ℕ0 ) |
34 |
33
|
feqmptd |
⊢ ( ⊤ → bits = ( 𝑘 ∈ ℤ ↦ ( bits ‘ 𝑘 ) ) ) |
35 |
34
|
reseq1d |
⊢ ( ⊤ → ( bits ↾ ℕ0 ) = ( ( 𝑘 ∈ ℤ ↦ ( bits ‘ 𝑘 ) ) ↾ ℕ0 ) ) |
36 |
|
nn0ssz |
⊢ ℕ0 ⊆ ℤ |
37 |
|
resmpt |
⊢ ( ℕ0 ⊆ ℤ → ( ( 𝑘 ∈ ℤ ↦ ( bits ‘ 𝑘 ) ) ↾ ℕ0 ) = ( 𝑘 ∈ ℕ0 ↦ ( bits ‘ 𝑘 ) ) ) |
38 |
36 37
|
ax-mp |
⊢ ( ( 𝑘 ∈ ℤ ↦ ( bits ‘ 𝑘 ) ) ↾ ℕ0 ) = ( 𝑘 ∈ ℕ0 ↦ ( bits ‘ 𝑘 ) ) |
39 |
35 38
|
eqtrdi |
⊢ ( ⊤ → ( bits ↾ ℕ0 ) = ( 𝑘 ∈ ℕ0 ↦ ( bits ‘ 𝑘 ) ) ) |
40 |
39
|
f1oeq1d |
⊢ ( ⊤ → ( ( bits ↾ ℕ0 ) : ℕ0 –1-1-onto→ ( 𝒫 ℕ0 ∩ Fin ) ↔ ( 𝑘 ∈ ℕ0 ↦ ( bits ‘ 𝑘 ) ) : ℕ0 –1-1-onto→ ( 𝒫 ℕ0 ∩ Fin ) ) ) |
41 |
31 40
|
mpbird |
⊢ ( ⊤ → ( bits ↾ ℕ0 ) : ℕ0 –1-1-onto→ ( 𝒫 ℕ0 ∩ Fin ) ) |
42 |
39
|
cnveqd |
⊢ ( ⊤ → ◡ ( bits ↾ ℕ0 ) = ◡ ( 𝑘 ∈ ℕ0 ↦ ( bits ‘ 𝑘 ) ) ) |
43 |
30
|
simprd |
⊢ ( ⊤ → ◡ ( 𝑘 ∈ ℕ0 ↦ ( bits ‘ 𝑘 ) ) = ( 𝑥 ∈ ( 𝒫 ℕ0 ∩ Fin ) ↦ Σ 𝑛 ∈ 𝑥 ( 2 ↑ 𝑛 ) ) ) |
44 |
42 43
|
eqtrd |
⊢ ( ⊤ → ◡ ( bits ↾ ℕ0 ) = ( 𝑥 ∈ ( 𝒫 ℕ0 ∩ Fin ) ↦ Σ 𝑛 ∈ 𝑥 ( 2 ↑ 𝑛 ) ) ) |
45 |
41 44
|
jca |
⊢ ( ⊤ → ( ( bits ↾ ℕ0 ) : ℕ0 –1-1-onto→ ( 𝒫 ℕ0 ∩ Fin ) ∧ ◡ ( bits ↾ ℕ0 ) = ( 𝑥 ∈ ( 𝒫 ℕ0 ∩ Fin ) ↦ Σ 𝑛 ∈ 𝑥 ( 2 ↑ 𝑛 ) ) ) ) |
46 |
45
|
mptru |
⊢ ( ( bits ↾ ℕ0 ) : ℕ0 –1-1-onto→ ( 𝒫 ℕ0 ∩ Fin ) ∧ ◡ ( bits ↾ ℕ0 ) = ( 𝑥 ∈ ( 𝒫 ℕ0 ∩ Fin ) ↦ Σ 𝑛 ∈ 𝑥 ( 2 ↑ 𝑛 ) ) ) |