Theorem power_equinum_indicators

Theorem. power_equinum_indicators
set X → num_eq (power X) (Map X {∅, {∅}})

This theorem states that the power set of a set X is equinumerous to set of maps from X to {0, 1}.

Proof sketch
Equinumerousity of two sets means that there is a bijection between them. We have the canonical bijection
  φ: power X → Map X {0, 1}, φ A := χA,
where χA is the indicator function of A. First we need to show that φ is injective. So let A, B be two arbritary sets in the domain. Assume φ A = φ B. By definition of φ this means χA = χB. Let x ∈ A. Then χA = 1, thus χB = 1, and therefore x ∈ B. In the same way, x ∈ A is derived from x ∈ B. Thus A = B by extensionality. Now we need to show that φ is surjective. So let f be an arbritary element in the codomain. We need to find an A with φ A = f. Let A := f−1{1}, the "one-fiber" of f. So we need to show χA x = f x for an arbritary x ∈ X, then χA = f holds by function extensionality. There are only two cases for the value of f. In the case f x = 1, it holds that x ∈ A, since A has just been defined this way. So χA x = 1, thus χA x = f x, as desired. In the case f x = 0, it holds that x ∈ X \ A, for the same reason. So χA x = 0, thus χA x = f x, as desired. q.e.d.

Proof
let φ = {t | ∃A. A ∈ power X ∧ t = (A, χ A X)}.
01. 1 ⊢ set X, hypo.
02. 2 ⊢ A ∈ power X, hypo.
03. 2 ⊢ A ⊆ X, power_elim 2.
04. 2 ⊢ map (χ A X) X {∅, {∅}}, indicator_is_map 3.
05. 1, 2 ⊢ χ A X ∈ Map X {∅, {∅}}, Map_intro 4 1.
06. 1 ⊢ A ∈ power X → χ A X ∈ Map X {∅, {∅}}, subj_intro 5.
07. 1 ⊢ ∀A. A ∈ power X → χ A X ∈ Map X {∅, {∅}}, uq_intro 6.
08. ⊢ φ = φ, eq_refl.
09. 1 ⊢ map φ (power X) (Map X {∅, {∅}}), map_from_term 8 7.

10. 10 ⊢ A ∈ power X, hypo.
11. 11 ⊢ B ∈ power X, hypo.
12. 12 ⊢ app φ A = app φ B, hypo.
13. 1, 10 ⊢ app φ A = χ A X, map_from_term_app 8 7 10.
14. 1, 11 ⊢ app φ B = χ B X, map_from_term_app 8 7 11.
15. 1, 10, 12 ⊢ χ A X = app φ B, eq_trans_ll 13 12.
16. 1, 10, 11, 12 ⊢ χ A X = χ B X, eq_trans 15 14.
17. 10 ⊢ A ⊆ X, power_elim 10.
18. 11 ⊢ B ⊆ X, power_elim 11.
19. 19 ⊢ x ∈ A, hypo.
20. 10, 19 ⊢ app (χ A X) x = {∅}, indicator_app_is_one 17 19.
21. 1, 10, 11, 12, 19 ⊢ app (χ B X) x = {∅},
  eq_subst 16 20, P t ↔ app t x = {∅}.
22. 10, 19 ⊢ x ∈ X, incl_elim 17 19.
23. 1, 10, 11, 12, 19 ⊢ x ∈ B, from_indicator_app_is_one 18 22 21.
24. 1, 10, 11, 12 ⊢ x ∈ A → x ∈ B, subj_intro 23.
25. 25 ⊢ x ∈ B, hypo.
26. 11, 25 ⊢ app (χ B X) x = {∅}, indicator_app_is_one 18 25.
27. 1, 10, 11, 12, 25 ⊢ app (χ A X) x = {∅},
  eq_subst_rev 16 26, P t ↔ app t x = {∅}.
28. 11, 25 ⊢ x ∈ X, incl_elim 18 25.
29. 1, 10, 11, 12, 25 ⊢ x ∈ A, from_indicator_app_is_one 17 28 27.
30. 1, 10, 11, 12 ⊢ x ∈ B → x ∈ A, subj_intro 29.
31. 1, 10, 11, 12 ⊢ x ∈ A ↔ x ∈ B, bij_intro 24 30.
32. 1, 10, 11, 12 ⊢ ∀x. x ∈ A ↔ x ∈ B, uq_intro 31.
33. 1, 10, 11, 12 ⊢ A = B, ext 32.
34. 1 ⊢ A ∈ power X → B ∈ power X → app φ A = app φ B → A = B,
  subj_intro_iii 33.
35. 1 ⊢ ∀B. A ∈ power X → B ∈ power X →
  app φ A = app φ B → A = B, uq_intro 34.
36. 1 ⊢ ∀A. ∀B. A ∈ power X → B ∈ power X →
  app φ A = app φ B → A = B, uq_intro 35.
37. 1 ⊢ inj φ (power X) (Map X {∅, {∅}}), inj_intro 9 36.

let A = inv_img f {{∅}}.
38. 38 ⊢ f ∈ Map X {∅, {∅}}, hypo.
39. 38 ⊢ map f X {∅, {∅}}, Map_elim 38.
40. 38 ⊢ function f ∧ dom f = X ∧ rng f ⊆ {∅, {∅}}, map_unfold 39.
41. 38 ⊢ dom f = X, conj_elimlr 40.
42. 42 ⊢ x ∈ X, hypo.
43. 38, 42 ⊢ app f x ∈ {∅, {∅}}, map_app_in_cod 39 42.
44. 38, 42 ⊢ app f x ∈ {∅} ∨ app f x ∈ {{∅}}, union_elim 43.

45. 45 ⊢ app f x ∈ {∅}, hypo.
46. 45 ⊢ app f x = ∅, sg_elim empty_set_is_set 45.
47. 45 ⊢ ∅ = app f x, eq_symm 46.
48. 38, 42, 45 ⊢ (x, ∅) ∈ f, map_app_elim 39 42 47.
49. ⊢ A ⊆ dom f, inv_img_incl_in_dom.
50. 38 ⊢ A ⊆ X, eq_subst 41 49, P t ↔ A ⊆ t.
51. 51 ⊢ x ∈ A, hypo.
52. 51 ⊢ ∃y. y ∈ {{∅}} ∧ (x, y) ∈ f, inv_img_elim 51.
53. 53 ⊢ y ∈ {{∅}} ∧ (x, y) ∈ f, hypo.
54. 53 ⊢ y ∈ {{∅}}, conj_eliml 53.
55. 53 ⊢ (x, y) ∈ f, conj_elimr 53.
56. 38 ⊢ function f, conj_elimll 40.
57. 38, 42, 45, 53 ⊢ y = ∅, fn_unique_value 56 55 48.
58. ⊢ set {∅}, set_sg empty_set_is_set.
59. 53 ⊢ y = {∅}, sg_elim 58 54.
60. 38, 42, 45, 53 ⊢ ∅ = {∅}, eq_trans_ll 57 59.
61. 38, 42, 45, 53 ⊢ ⊥, neg_elim zero_neq_one 60.
62. 38, 42, 45, 51 ⊢ ⊥, ex_elim 52 61.
63. 38, 42, 45 ⊢ ¬x ∈ A, neg_intro 62.
64. 38, 42, 45 ⊢ x ∈ X \ A, diff_intro 42 63.
65. 38, 42, 45 ⊢ app (χ A X) x = ∅, indicator_app_is_zero 50 64.
66. 38, 42, 45 ⊢ ∅ = app (χ A X) x, eq_symm 65.
67. 38, 42, 45 ⊢ app f x = app (χ A X) x, eq_trans 46 66.

68. 68 ⊢ app f x ∈ {{∅}}, hypo.
69. 68 ⊢ app f x = {∅}, sg_elim 58 68.
70. 68 ⊢ {∅} = app f x, eq_symm 69.
71. 38, 42, 68 ⊢ (x, {∅}) ∈ f, map_app_elim 39 42 70.
72. ⊢ {∅} = {∅}, eq_refl.
73. ⊢ {∅} ∈ {{∅}}, sg_intro 58 72.
74. 38, 42, 68 ⊢ x ∈ A, inv_img_intro 73 71.
75. 38, 42, 68 ⊢ app (χ A X) x = {∅}, indicator_app_is_one 50 74.
76. 38, 42, 68 ⊢ {∅} = app (χ A X) x, eq_symm 75.
77. 38, 42, 68 ⊢ app f x = app (χ A X) x, eq_trans 69 76.

78. 38, 42 ⊢ app f x = app (χ A X) x, disj_elim 44 67 77.
79. 38 ⊢ x ∈ X → app f x = app (χ A X) x, subj_intro 78.
80. 38 ⊢ ∀x. x ∈ X → app f x = app (χ A X) x, uq_intro 79.
81. 38 ⊢ map (χ A X) X {∅, {∅}}, indicator_is_map 50.
82. 38 ⊢ f = χ A X, map_extensionality 39 81 80.
83. 1, 38 ⊢ set A, subset 50 1.
84. 1, 38 ⊢ A ∈ power X, power_intro 83 50.
85. 1, 38 ⊢ app φ A = χ A X, map_from_term_app 8 7 84.
86. 1, 38 ⊢ χ A X = app φ A, eq_symm 85.
87. 1, 38 ⊢ f = app φ A, eq_trans 82 86.
88. 1, 38 ⊢ (A, f) ∈ φ, map_app_elim 9 84 87.
89. 1, 38 ⊢ f ∈ rng φ, rng_intro 88.
90. 1 ⊢ f ∈ Map X {∅, {∅}} → f ∈ rng φ, subj_intro 89.
91. 1 ⊢ ∀f. f ∈ Map X {∅, {∅}} → f ∈ rng φ, uq_intro 90.
92. 1 ⊢ Map X {∅, {∅}} ⊆ rng φ, incl_intro 91.
93. 1 ⊢ sur φ (power X) (Map X {∅, {∅}}), sur_intro 9 92.

94. 1 ⊢ bij φ (power X) (Map X {∅, {∅}}), bij_from_inj_sur 37 93.
95. 1 ⊢ ∃g. bij g (power X) (Map X {∅, {∅}}), ex_intro 94.
96. 1 ⊢ num_eq (power X) (Map X {∅, {∅}}), num_eq_intro 95.
power_equinum_indicators. ⊢ set X →
  num_eq (power X) (Map X {∅, {∅}}), subj_intro 96.

Dependencies
The given proof depends on 12 axioms:
comp, efq, eq_refl, eq_subst, ext, infinity, lem, pairing, power, subset, substitution, union.