Metamath Proof Explorer


Theorem bitsf1

Description: The bits function is an injection from ZZ to ~P NN0 . It is obviously not a bijection (by Cantor's theorem canth2 ), and in fact its range is the set of finite and cofinite subsets of NN0 . (Contributed by Mario Carneiro, 22-Sep-2016)

Ref Expression
Assertion bitsf1 ⊢ bits : ℤ ⟶ 1-1 𝒫 ℕ 0

Proof

Step Hyp Ref Expression
1 bitsf ⊢ bits : ℤ ⟶ 𝒫 ℕ 0
2 simpl ⊢ x ∈ ℤ ∧ y ∈ ℤ → x ∈ ℤ
3 2 zcnd ⊢ x ∈ ℤ ∧ y ∈ ℤ → x ∈ ℂ
4 3 adantr ⊢ x ∈ ℤ ∧ y ∈ ℤ ∧ − x ∈ ℕ ∧ bits ⁡ x = bits ⁡ y → x ∈ ℂ
5 simpr ⊢ x ∈ ℤ ∧ y ∈ ℤ → y ∈ ℤ
6 5 zcnd ⊢ x ∈ ℤ ∧ y ∈ ℤ → y ∈ ℂ
7 6 adantr ⊢ x ∈ ℤ ∧ y ∈ ℤ ∧ − x ∈ ℕ ∧ bits ⁡ x = bits ⁡ y → y ∈ ℂ
8 4 negcld ⊢ x ∈ ℤ ∧ y ∈ ℤ ∧ − x ∈ ℕ ∧ bits ⁡ x = bits ⁡ y → − x ∈ ℂ
9 7 negcld ⊢ x ∈ ℤ ∧ y ∈ ℤ ∧ − x ∈ ℕ ∧ bits ⁡ x = bits ⁡ y → − y ∈ ℂ
10 1cnd ⊢ x ∈ ℤ ∧ y ∈ ℤ ∧ − x ∈ ℕ ∧ bits ⁡ x = bits ⁡ y → 1 ∈ ℂ
11 simprr ⊢ x ∈ ℤ ∧ y ∈ ℤ ∧ − x ∈ ℕ ∧ bits ⁡ x = bits ⁡ y → bits ⁡ x = bits ⁡ y
12 11 difeq2d ⊢ x ∈ ℤ ∧ y ∈ ℤ ∧ − x ∈ ℕ ∧ bits ⁡ x = bits ⁡ y → ℕ 0 ∖ bits ⁡ x = ℕ 0 ∖ bits ⁡ y
13 bitscmp ⊢ x ∈ ℤ → ℕ 0 ∖ bits ⁡ x = bits ⁡ - x - 1
14 13 ad2antrr ⊢ x ∈ ℤ ∧ y ∈ ℤ ∧ − x ∈ ℕ ∧ bits ⁡ x = bits ⁡ y → ℕ 0 ∖ bits ⁡ x = bits ⁡ - x - 1
15 bitscmp ⊢ y ∈ ℤ → ℕ 0 ∖ bits ⁡ y = bits ⁡ - y - 1
16 15 ad2antlr ⊢ x ∈ ℤ ∧ y ∈ ℤ ∧ − x ∈ ℕ ∧ bits ⁡ x = bits ⁡ y → ℕ 0 ∖ bits ⁡ y = bits ⁡ - y - 1
17 12 14 16 3eqtr3d ⊢ x ∈ ℤ ∧ y ∈ ℤ ∧ − x ∈ ℕ ∧ bits ⁡ x = bits ⁡ y → bits ⁡ - x - 1 = bits ⁡ - y - 1
18 nnm1nn0 ⊢ − x ∈ ℕ → - x - 1 ∈ ℕ 0
19 18 ad2antrl ⊢ x ∈ ℤ ∧ y ∈ ℤ ∧ − x ∈ ℕ ∧ bits ⁡ x = bits ⁡ y → - x - 1 ∈ ℕ 0
20 19 fvresd ⊢ x ∈ ℤ ∧ y ∈ ℤ ∧ − x ∈ ℕ ∧ bits ⁡ x = bits ⁡ y → bits ↾ ℕ 0 ⁡ - x - 1 = bits ⁡ - x - 1
21 ominf ⊢ ¬ ω ∈ Fin
22 nn0ennn ⊢ ℕ 0 ≈ ℕ
23 nnenom ⊢ ℕ ≈ ω
24 22 23 entr2i ⊢ ω ≈ ℕ 0
25 enfii ⊢ ℕ 0 ∈ Fin ∧ ω ≈ ℕ 0 → ω ∈ Fin
26 24 25 mpan2 ⊢ ℕ 0 ∈ Fin → ω ∈ Fin
27 21 26 mto ⊢ ¬ ℕ 0 ∈ Fin
28 difinf ⊢ ¬ ℕ 0 ∈ Fin ∧ bits ⁡ x ∈ Fin → ¬ ℕ 0 ∖ bits ⁡ x ∈ Fin
29 27 28 mpan ⊢ bits ⁡ x ∈ Fin → ¬ ℕ 0 ∖ bits ⁡ x ∈ Fin
30 bitsfi ⊢ - x - 1 ∈ ℕ 0 → bits ⁡ - x - 1 ∈ Fin
31 19 30 syl ⊢ x ∈ ℤ ∧ y ∈ ℤ ∧ − x ∈ ℕ ∧ bits ⁡ x = bits ⁡ y → bits ⁡ - x - 1 ∈ Fin
32 14 31 eqeltrd ⊢ x ∈ ℤ ∧ y ∈ ℤ ∧ − x ∈ ℕ ∧ bits ⁡ x = bits ⁡ y → ℕ 0 ∖ bits ⁡ x ∈ Fin
33 29 32 nsyl3 ⊢ x ∈ ℤ ∧ y ∈ ℤ ∧ − x ∈ ℕ ∧ bits ⁡ x = bits ⁡ y → ¬ bits ⁡ x ∈ Fin
34 11 33 eqneltrrd ⊢ x ∈ ℤ ∧ y ∈ ℤ ∧ − x ∈ ℕ ∧ bits ⁡ x = bits ⁡ y → ¬ bits ⁡ y ∈ Fin
35 bitsfi ⊢ y ∈ ℕ 0 → bits ⁡ y ∈ Fin
36 34 35 nsyl ⊢ x ∈ ℤ ∧ y ∈ ℤ ∧ − x ∈ ℕ ∧ bits ⁡ x = bits ⁡ y → ¬ y ∈ ℕ 0
37 5 znegcld ⊢ x ∈ ℤ ∧ y ∈ ℤ → − y ∈ ℤ
38 elznn ⊢ − y ∈ ℤ ↔ − y ∈ ℝ ∧ − y ∈ ℕ ∨ − − y ∈ ℕ 0
39 38 simprbi ⊢ − y ∈ ℤ → − y ∈ ℕ ∨ − − y ∈ ℕ 0
40 37 39 syl ⊢ x ∈ ℤ ∧ y ∈ ℤ → − y ∈ ℕ ∨ − − y ∈ ℕ 0
41 6 negnegd ⊢ x ∈ ℤ ∧ y ∈ ℤ → − − y = y
42 41 eleq1d ⊢ x ∈ ℤ ∧ y ∈ ℤ → − − y ∈ ℕ 0 ↔ y ∈ ℕ 0
43 42 orbi2d ⊢ x ∈ ℤ ∧ y ∈ ℤ → − y ∈ ℕ ∨ − − y ∈ ℕ 0 ↔ − y ∈ ℕ ∨ y ∈ ℕ 0
44 40 43 mpbid ⊢ x ∈ ℤ ∧ y ∈ ℤ → − y ∈ ℕ ∨ y ∈ ℕ 0
45 44 adantr ⊢ x ∈ ℤ ∧ y ∈ ℤ ∧ − x ∈ ℕ ∧ bits ⁡ x = bits ⁡ y → − y ∈ ℕ ∨ y ∈ ℕ 0
46 45 ord ⊢ x ∈ ℤ ∧ y ∈ ℤ ∧ − x ∈ ℕ ∧ bits ⁡ x = bits ⁡ y → ¬ − y ∈ ℕ → y ∈ ℕ 0
47 36 46 mt3d ⊢ x ∈ ℤ ∧ y ∈ ℤ ∧ − x ∈ ℕ ∧ bits ⁡ x = bits ⁡ y → − y ∈ ℕ
48 nnm1nn0 ⊢ − y ∈ ℕ → - y - 1 ∈ ℕ 0
49 47 48 syl ⊢ x ∈ ℤ ∧ y ∈ ℤ ∧ − x ∈ ℕ ∧ bits ⁡ x = bits ⁡ y → - y - 1 ∈ ℕ 0
50 49 fvresd ⊢ x ∈ ℤ ∧ y ∈ ℤ ∧ − x ∈ ℕ ∧ bits ⁡ x = bits ⁡ y → bits ↾ ℕ 0 ⁡ - y - 1 = bits ⁡ - y - 1
51 17 20 50 3eqtr4d ⊢ x ∈ ℤ ∧ y ∈ ℤ ∧ − x ∈ ℕ ∧ bits ⁡ x = bits ⁡ y → bits ↾ ℕ 0 ⁡ - x - 1 = bits ↾ ℕ 0 ⁡ - y - 1
52 bitsf1o ⊢ bits ↾ ℕ 0 : ℕ 0 ⟶ 1-1 onto 𝒫 ℕ 0 ∩ Fin
53 f1of1 ⊢ bits ↾ ℕ 0 : ℕ 0 ⟶ 1-1 onto 𝒫 ℕ 0 ∩ Fin → bits ↾ ℕ 0 : ℕ 0 ⟶ 1-1 𝒫 ℕ 0 ∩ Fin
54 52 53 ax-mp ⊢ bits ↾ ℕ 0 : ℕ 0 ⟶ 1-1 𝒫 ℕ 0 ∩ Fin
55 f1fveq ⊢ bits ↾ ℕ 0 : ℕ 0 ⟶ 1-1 𝒫 ℕ 0 ∩ Fin ∧ - x - 1 ∈ ℕ 0 ∧ - y - 1 ∈ ℕ 0 → bits ↾ ℕ 0 ⁡ - x - 1 = bits ↾ ℕ 0 ⁡ - y - 1 ↔ - x - 1 = - y - 1
56 54 55 mpan ⊢ - x - 1 ∈ ℕ 0 ∧ - y - 1 ∈ ℕ 0 → bits ↾ ℕ 0 ⁡ - x - 1 = bits ↾ ℕ 0 ⁡ - y - 1 ↔ - x - 1 = - y - 1
57 19 49 56 syl2anc ⊢ x ∈ ℤ ∧ y ∈ ℤ ∧ − x ∈ ℕ ∧ bits ⁡ x = bits ⁡ y → bits ↾ ℕ 0 ⁡ - x - 1 = bits ↾ ℕ 0 ⁡ - y - 1 ↔ - x - 1 = - y - 1
58 51 57 mpbid ⊢ x ∈ ℤ ∧ y ∈ ℤ ∧ − x ∈ ℕ ∧ bits ⁡ x = bits ⁡ y → - x - 1 = - y - 1
59 8 9 10 58 subcan2d ⊢ x ∈ ℤ ∧ y ∈ ℤ ∧ − x ∈ ℕ ∧ bits ⁡ x = bits ⁡ y → − x = − y
60 4 7 59 neg11d ⊢ x ∈ ℤ ∧ y ∈ ℤ ∧ − x ∈ ℕ ∧ bits ⁡ x = bits ⁡ y → x = y
61 60 expr ⊢ x ∈ ℤ ∧ y ∈ ℤ ∧ − x ∈ ℕ → bits ⁡ x = bits ⁡ y → x = y
62 3 negnegd ⊢ x ∈ ℤ ∧ y ∈ ℤ → − − x = x
63 62 eleq1d ⊢ x ∈ ℤ ∧ y ∈ ℤ → − − x ∈ ℕ 0 ↔ x ∈ ℕ 0
64 63 biimpa ⊢ x ∈ ℤ ∧ y ∈ ℤ ∧ − − x ∈ ℕ 0 → x ∈ ℕ 0
65 simprr ⊢ x ∈ ℤ ∧ y ∈ ℤ ∧ x ∈ ℕ 0 ∧ bits ⁡ x = bits ⁡ y → bits ⁡ x = bits ⁡ y
66 fvres ⊢ x ∈ ℕ 0 → bits ↾ ℕ 0 ⁡ x = bits ⁡ x
67 66 ad2antrl ⊢ x ∈ ℤ ∧ y ∈ ℤ ∧ x ∈ ℕ 0 ∧ bits ⁡ x = bits ⁡ y → bits ↾ ℕ 0 ⁡ x = bits ⁡ x
68 15 ad2antlr ⊢ x ∈ ℤ ∧ y ∈ ℤ ∧ x ∈ ℕ 0 ∧ bits ⁡ x = bits ⁡ y → ℕ 0 ∖ bits ⁡ y = bits ⁡ - y - 1
69 bitsfi ⊢ x ∈ ℕ 0 → bits ⁡ x ∈ Fin
70 69 ad2antrl ⊢ x ∈ ℤ ∧ y ∈ ℤ ∧ x ∈ ℕ 0 ∧ bits ⁡ x = bits ⁡ y → bits ⁡ x ∈ Fin
71 65 70 eqeltrrd ⊢ x ∈ ℤ ∧ y ∈ ℤ ∧ x ∈ ℕ 0 ∧ bits ⁡ x = bits ⁡ y → bits ⁡ y ∈ Fin
72 difinf ⊢ ¬ ℕ 0 ∈ Fin ∧ bits ⁡ y ∈ Fin → ¬ ℕ 0 ∖ bits ⁡ y ∈ Fin
73 27 71 72 sylancr ⊢ x ∈ ℤ ∧ y ∈ ℤ ∧ x ∈ ℕ 0 ∧ bits ⁡ x = bits ⁡ y → ¬ ℕ 0 ∖ bits ⁡ y ∈ Fin
74 68 73 eqneltrrd ⊢ x ∈ ℤ ∧ y ∈ ℤ ∧ x ∈ ℕ 0 ∧ bits ⁡ x = bits ⁡ y → ¬ bits ⁡ - y - 1 ∈ Fin
75 bitsfi ⊢ - y - 1 ∈ ℕ 0 → bits ⁡ - y - 1 ∈ Fin
76 74 75 nsyl ⊢ x ∈ ℤ ∧ y ∈ ℤ ∧ x ∈ ℕ 0 ∧ bits ⁡ x = bits ⁡ y → ¬ - y - 1 ∈ ℕ 0
77 76 48 nsyl ⊢ x ∈ ℤ ∧ y ∈ ℤ ∧ x ∈ ℕ 0 ∧ bits ⁡ x = bits ⁡ y → ¬ − y ∈ ℕ
78 44 adantr ⊢ x ∈ ℤ ∧ y ∈ ℤ ∧ x ∈ ℕ 0 ∧ bits ⁡ x = bits ⁡ y → − y ∈ ℕ ∨ y ∈ ℕ 0
79 78 ord ⊢ x ∈ ℤ ∧ y ∈ ℤ ∧ x ∈ ℕ 0 ∧ bits ⁡ x = bits ⁡ y → ¬ − y ∈ ℕ → y ∈ ℕ 0
80 77 79 mpd ⊢ x ∈ ℤ ∧ y ∈ ℤ ∧ x ∈ ℕ 0 ∧ bits ⁡ x = bits ⁡ y → y ∈ ℕ 0
81 80 fvresd ⊢ x ∈ ℤ ∧ y ∈ ℤ ∧ x ∈ ℕ 0 ∧ bits ⁡ x = bits ⁡ y → bits ↾ ℕ 0 ⁡ y = bits ⁡ y
82 65 67 81 3eqtr4d ⊢ x ∈ ℤ ∧ y ∈ ℤ ∧ x ∈ ℕ 0 ∧ bits ⁡ x = bits ⁡ y → bits ↾ ℕ 0 ⁡ x = bits ↾ ℕ 0 ⁡ y
83 simprl ⊢ x ∈ ℤ ∧ y ∈ ℤ ∧ x ∈ ℕ 0 ∧ bits ⁡ x = bits ⁡ y → x ∈ ℕ 0
84 f1fveq ⊢ bits ↾ ℕ 0 : ℕ 0 ⟶ 1-1 𝒫 ℕ 0 ∩ Fin ∧ x ∈ ℕ 0 ∧ y ∈ ℕ 0 → bits ↾ ℕ 0 ⁡ x = bits ↾ ℕ 0 ⁡ y ↔ x = y
85 54 84 mpan ⊢ x ∈ ℕ 0 ∧ y ∈ ℕ 0 → bits ↾ ℕ 0 ⁡ x = bits ↾ ℕ 0 ⁡ y ↔ x = y
86 83 80 85 syl2anc ⊢ x ∈ ℤ ∧ y ∈ ℤ ∧ x ∈ ℕ 0 ∧ bits ⁡ x = bits ⁡ y → bits ↾ ℕ 0 ⁡ x = bits ↾ ℕ 0 ⁡ y ↔ x = y
87 82 86 mpbid ⊢ x ∈ ℤ ∧ y ∈ ℤ ∧ x ∈ ℕ 0 ∧ bits ⁡ x = bits ⁡ y → x = y
88 87 expr ⊢ x ∈ ℤ ∧ y ∈ ℤ ∧ x ∈ ℕ 0 → bits ⁡ x = bits ⁡ y → x = y
89 64 88 syldan ⊢ x ∈ ℤ ∧ y ∈ ℤ ∧ − − x ∈ ℕ 0 → bits ⁡ x = bits ⁡ y → x = y
90 2 znegcld ⊢ x ∈ ℤ ∧ y ∈ ℤ → − x ∈ ℤ
91 elznn ⊢ − x ∈ ℤ ↔ − x ∈ ℝ ∧ − x ∈ ℕ ∨ − − x ∈ ℕ 0
92 91 simprbi ⊢ − x ∈ ℤ → − x ∈ ℕ ∨ − − x ∈ ℕ 0
93 90 92 syl ⊢ x ∈ ℤ ∧ y ∈ ℤ → − x ∈ ℕ ∨ − − x ∈ ℕ 0
94 61 89 93 mpjaodan ⊢ x ∈ ℤ ∧ y ∈ ℤ → bits ⁡ x = bits ⁡ y → x = y
95 94 rgen2 ⊢ ∀ x ∈ ℤ ∀ y ∈ ℤ bits ⁡ x = bits ⁡ y → x = y
96 dff13 ⊢ bits : ℤ ⟶ 1-1 𝒫 ℕ 0 ↔ bits : ℤ ⟶ 𝒫 ℕ 0 ∧ ∀ x ∈ ℤ ∀ y ∈ ℤ bits ⁡ x = bits ⁡ y → x = y
97 1 95 96 mpbir2an ⊢ bits : ℤ ⟶ 1-1 𝒫 ℕ 0