Metamath Proof Explorer


Theorem choicefi

Description: For a finite set, a choice function exists, without using the axiom of choice. (Contributed by Glauco Siliprandi, 24-Dec-2020)

Ref Expression
Hypotheses choicefi.a ⊢ φ → A ∈ Fin
choicefi.b ⊢ φ ∧ x ∈ A → B ∈ W
choicefi.n ⊢ φ ∧ x ∈ A → B ≠ ∅
Assertion choicefi ⊢ φ → ∃ f f Fn A ∧ ∀ x ∈ A f ⁡ x ∈ B

Proof

Step Hyp Ref Expression
1 choicefi.a ⊢ φ → A ∈ Fin
2 choicefi.b ⊢ φ ∧ x ∈ A → B ∈ W
3 choicefi.n ⊢ φ ∧ x ∈ A → B ≠ ∅
4 mptfi ⊢ A ∈ Fin → x ∈ A ⟼ B ∈ Fin
5 rnfi ⊢ x ∈ A ⟼ B ∈ Fin → ran ⁡ x ∈ A ⟼ B ∈ Fin
6 fnchoice ⊢ ran ⁡ x ∈ A ⟼ B ∈ Fin → ∃ g g Fn ran ⁡ x ∈ A ⟼ B ∧ ∀ y ∈ ran ⁡ x ∈ A ⟼ B y ≠ ∅ → g ⁡ y ∈ y
7 1 4 5 6 4syl ⊢ φ → ∃ g g Fn ran ⁡ x ∈ A ⟼ B ∧ ∀ y ∈ ran ⁡ x ∈ A ⟼ B y ≠ ∅ → g ⁡ y ∈ y
8 simpl ⊢ φ ∧ g Fn ran ⁡ x ∈ A ⟼ B ∧ ∀ y ∈ ran ⁡ x ∈ A ⟼ B y ≠ ∅ → g ⁡ y ∈ y → φ
9 simprl ⊢ φ ∧ g Fn ran ⁡ x ∈ A ⟼ B ∧ ∀ y ∈ ran ⁡ x ∈ A ⟼ B y ≠ ∅ → g ⁡ y ∈ y → g Fn ran ⁡ x ∈ A ⟼ B
10 nfv ⊢ Ⅎ y φ
11 nfra1 ⊢ Ⅎ y ∀ y ∈ ran ⁡ x ∈ A ⟼ B y ≠ ∅ → g ⁡ y ∈ y
12 10 11 nfan ⊢ Ⅎ y φ ∧ ∀ y ∈ ran ⁡ x ∈ A ⟼ B y ≠ ∅ → g ⁡ y ∈ y
13 rspa ⊢ ∀ y ∈ ran ⁡ x ∈ A ⟼ B y ≠ ∅ → g ⁡ y ∈ y ∧ y ∈ ran ⁡ x ∈ A ⟼ B → y ≠ ∅ → g ⁡ y ∈ y
14 13 adantll ⊢ φ ∧ ∀ y ∈ ran ⁡ x ∈ A ⟼ B y ≠ ∅ → g ⁡ y ∈ y ∧ y ∈ ran ⁡ x ∈ A ⟼ B → y ≠ ∅ → g ⁡ y ∈ y
15 vex ⊢ y ∈ V
16 eqid ⊢ x ∈ A ⟼ B = x ∈ A ⟼ B
17 16 elrnmpt ⊢ y ∈ V → y ∈ ran ⁡ x ∈ A ⟼ B ↔ ∃ x ∈ A y = B
18 15 17 ax-mp ⊢ y ∈ ran ⁡ x ∈ A ⟼ B ↔ ∃ x ∈ A y = B
19 18 bilani ⊢ φ ∧ y ∈ ran ⁡ x ∈ A ⟼ B → ∃ x ∈ A y = B
20 simp3 ⊢ φ ∧ x ∈ A ∧ y = B → y = B
21 3 3adant3 ⊢ φ ∧ x ∈ A ∧ y = B → B ≠ ∅
22 20 21 eqnetrd ⊢ φ ∧ x ∈ A ∧ y = B → y ≠ ∅
23 22 3exp ⊢ φ → x ∈ A → y = B → y ≠ ∅
24 23 rexlimdv ⊢ φ → ∃ x ∈ A y = B → y ≠ ∅
25 24 adantr ⊢ φ ∧ y ∈ ran ⁡ x ∈ A ⟼ B → ∃ x ∈ A y = B → y ≠ ∅
26 19 25 mpd ⊢ φ ∧ y ∈ ran ⁡ x ∈ A ⟼ B → y ≠ ∅
27 26 adantlr ⊢ φ ∧ ∀ y ∈ ran ⁡ x ∈ A ⟼ B y ≠ ∅ → g ⁡ y ∈ y ∧ y ∈ ran ⁡ x ∈ A ⟼ B → y ≠ ∅
28 id ⊢ y ≠ ∅ → g ⁡ y ∈ y → y ≠ ∅ → g ⁡ y ∈ y
29 28 imp ⊢ y ≠ ∅ → g ⁡ y ∈ y ∧ y ≠ ∅ → g ⁡ y ∈ y
30 14 27 29 syl2anc ⊢ φ ∧ ∀ y ∈ ran ⁡ x ∈ A ⟼ B y ≠ ∅ → g ⁡ y ∈ y ∧ y ∈ ran ⁡ x ∈ A ⟼ B → g ⁡ y ∈ y
31 30 ex ⊢ φ ∧ ∀ y ∈ ran ⁡ x ∈ A ⟼ B y ≠ ∅ → g ⁡ y ∈ y → y ∈ ran ⁡ x ∈ A ⟼ B → g ⁡ y ∈ y
32 12 31 ralrimi ⊢ φ ∧ ∀ y ∈ ran ⁡ x ∈ A ⟼ B y ≠ ∅ → g ⁡ y ∈ y → ∀ y ∈ ran ⁡ x ∈ A ⟼ B g ⁡ y ∈ y
33 rsp ⊢ ∀ y ∈ ran ⁡ x ∈ A ⟼ B g ⁡ y ∈ y → y ∈ ran ⁡ x ∈ A ⟼ B → g ⁡ y ∈ y
34 32 33 syl ⊢ φ ∧ ∀ y ∈ ran ⁡ x ∈ A ⟼ B y ≠ ∅ → g ⁡ y ∈ y → y ∈ ran ⁡ x ∈ A ⟼ B → g ⁡ y ∈ y
35 12 34 ralrimi ⊢ φ ∧ ∀ y ∈ ran ⁡ x ∈ A ⟼ B y ≠ ∅ → g ⁡ y ∈ y → ∀ y ∈ ran ⁡ x ∈ A ⟼ B g ⁡ y ∈ y
36 35 adantrl ⊢ φ ∧ g Fn ran ⁡ x ∈ A ⟼ B ∧ ∀ y ∈ ran ⁡ x ∈ A ⟼ B y ≠ ∅ → g ⁡ y ∈ y → ∀ y ∈ ran ⁡ x ∈ A ⟼ B g ⁡ y ∈ y
37 vex ⊢ g ∈ V
38 37 a1i ⊢ φ → g ∈ V
39 1 mptexd ⊢ φ → x ∈ A ⟼ B ∈ V
40 coexg ⊢ g ∈ V ∧ x ∈ A ⟼ B ∈ V → g ∘ x ∈ A ⟼ B ∈ V
41 38 39 40 syl2anc ⊢ φ → g ∘ x ∈ A ⟼ B ∈ V
42 41 3ad2ant1 ⊢ φ ∧ g Fn ran ⁡ x ∈ A ⟼ B ∧ ∀ y ∈ ran ⁡ x ∈ A ⟼ B g ⁡ y ∈ y → g ∘ x ∈ A ⟼ B ∈ V
43 simpr ⊢ φ ∧ g Fn ran ⁡ x ∈ A ⟼ B → g Fn ran ⁡ x ∈ A ⟼ B
44 2 ralrimiva ⊢ φ → ∀ x ∈ A B ∈ W
45 16 fnmpt ⊢ ∀ x ∈ A B ∈ W → x ∈ A ⟼ B Fn A
46 44 45 syl ⊢ φ → x ∈ A ⟼ B Fn A
47 46 adantr ⊢ φ ∧ g Fn ran ⁡ x ∈ A ⟼ B → x ∈ A ⟼ B Fn A
48 ssidd ⊢ φ ∧ g Fn ran ⁡ x ∈ A ⟼ B → ran ⁡ x ∈ A ⟼ B ⊆ ran ⁡ x ∈ A ⟼ B
49 fnco ⊢ g Fn ran ⁡ x ∈ A ⟼ B ∧ x ∈ A ⟼ B Fn A ∧ ran ⁡ x ∈ A ⟼ B ⊆ ran ⁡ x ∈ A ⟼ B → g ∘ x ∈ A ⟼ B Fn A
50 43 47 48 49 syl3anc ⊢ φ ∧ g Fn ran ⁡ x ∈ A ⟼ B → g ∘ x ∈ A ⟼ B Fn A
51 50 3adant3 ⊢ φ ∧ g Fn ran ⁡ x ∈ A ⟼ B ∧ ∀ y ∈ ran ⁡ x ∈ A ⟼ B g ⁡ y ∈ y → g ∘ x ∈ A ⟼ B Fn A
52 nfv ⊢ Ⅎ x φ
53 nfcv ⊢ Ⅎ _ x g
54 nfmpt1 ⊢ Ⅎ _ x x ∈ A ⟼ B
55 54 nfrn ⊢ Ⅎ _ x ran ⁡ x ∈ A ⟼ B
56 53 55 nffn ⊢ Ⅎ x g Fn ran ⁡ x ∈ A ⟼ B
57 nfv ⊢ Ⅎ x g ⁡ y ∈ y
58 55 57 nfralw ⊢ Ⅎ x ∀ y ∈ ran ⁡ x ∈ A ⟼ B g ⁡ y ∈ y
59 52 56 58 nf3an ⊢ Ⅎ x φ ∧ g Fn ran ⁡ x ∈ A ⟼ B ∧ ∀ y ∈ ran ⁡ x ∈ A ⟼ B g ⁡ y ∈ y
60 funmpt ⊢ Fun ⁡ x ∈ A ⟼ B
61 60 a1i ⊢ φ ∧ x ∈ A → Fun ⁡ x ∈ A ⟼ B
62 simpr ⊢ φ ∧ x ∈ A → x ∈ A
63 16 2 dmmptd ⊢ φ → dom ⁡ x ∈ A ⟼ B = A
64 63 eqcomd ⊢ φ → A = dom ⁡ x ∈ A ⟼ B
65 64 adantr ⊢ φ ∧ x ∈ A → A = dom ⁡ x ∈ A ⟼ B
66 62 65 eleqtrd ⊢ φ ∧ x ∈ A → x ∈ dom ⁡ x ∈ A ⟼ B
67 fvco ⊢ Fun ⁡ x ∈ A ⟼ B ∧ x ∈ dom ⁡ x ∈ A ⟼ B → g ∘ x ∈ A ⟼ B ⁡ x = g ⁡ x ∈ A ⟼ B ⁡ x
68 61 66 67 syl2anc ⊢ φ ∧ x ∈ A → g ∘ x ∈ A ⟼ B ⁡ x = g ⁡ x ∈ A ⟼ B ⁡ x
69 16 fvmpt2 ⊢ x ∈ A ∧ B ∈ W → x ∈ A ⟼ B ⁡ x = B
70 62 2 69 syl2anc ⊢ φ ∧ x ∈ A → x ∈ A ⟼ B ⁡ x = B
71 70 fveq2d ⊢ φ ∧ x ∈ A → g ⁡ x ∈ A ⟼ B ⁡ x = g ⁡ B
72 68 71 eqtrd ⊢ φ ∧ x ∈ A → g ∘ x ∈ A ⟼ B ⁡ x = g ⁡ B
73 72 3ad2antl1 ⊢ φ ∧ g Fn ran ⁡ x ∈ A ⟼ B ∧ ∀ y ∈ ran ⁡ x ∈ A ⟼ B g ⁡ y ∈ y ∧ x ∈ A → g ∘ x ∈ A ⟼ B ⁡ x = g ⁡ B
74 16 elrnmpt1 ⊢ x ∈ A ∧ B ∈ W → B ∈ ran ⁡ x ∈ A ⟼ B
75 62 2 74 syl2anc ⊢ φ ∧ x ∈ A → B ∈ ran ⁡ x ∈ A ⟼ B
76 75 3ad2antl1 ⊢ φ ∧ g Fn ran ⁡ x ∈ A ⟼ B ∧ ∀ y ∈ ran ⁡ x ∈ A ⟼ B g ⁡ y ∈ y ∧ x ∈ A → B ∈ ran ⁡ x ∈ A ⟼ B
77 simpl3 ⊢ φ ∧ g Fn ran ⁡ x ∈ A ⟼ B ∧ ∀ y ∈ ran ⁡ x ∈ A ⟼ B g ⁡ y ∈ y ∧ x ∈ A → ∀ y ∈ ran ⁡ x ∈ A ⟼ B g ⁡ y ∈ y
78 fveq2 ⊢ y = B → g ⁡ y = g ⁡ B
79 id ⊢ y = B → y = B
80 78 79 eleq12d ⊢ y = B → g ⁡ y ∈ y ↔ g ⁡ B ∈ B
81 80 rspcva ⊢ B ∈ ran ⁡ x ∈ A ⟼ B ∧ ∀ y ∈ ran ⁡ x ∈ A ⟼ B g ⁡ y ∈ y → g ⁡ B ∈ B
82 76 77 81 syl2anc ⊢ φ ∧ g Fn ran ⁡ x ∈ A ⟼ B ∧ ∀ y ∈ ran ⁡ x ∈ A ⟼ B g ⁡ y ∈ y ∧ x ∈ A → g ⁡ B ∈ B
83 73 82 eqeltrd ⊢ φ ∧ g Fn ran ⁡ x ∈ A ⟼ B ∧ ∀ y ∈ ran ⁡ x ∈ A ⟼ B g ⁡ y ∈ y ∧ x ∈ A → g ∘ x ∈ A ⟼ B ⁡ x ∈ B
84 83 ex ⊢ φ ∧ g Fn ran ⁡ x ∈ A ⟼ B ∧ ∀ y ∈ ran ⁡ x ∈ A ⟼ B g ⁡ y ∈ y → x ∈ A → g ∘ x ∈ A ⟼ B ⁡ x ∈ B
85 59 84 ralrimi ⊢ φ ∧ g Fn ran ⁡ x ∈ A ⟼ B ∧ ∀ y ∈ ran ⁡ x ∈ A ⟼ B g ⁡ y ∈ y → ∀ x ∈ A g ∘ x ∈ A ⟼ B ⁡ x ∈ B
86 51 85 jca ⊢ φ ∧ g Fn ran ⁡ x ∈ A ⟼ B ∧ ∀ y ∈ ran ⁡ x ∈ A ⟼ B g ⁡ y ∈ y → g ∘ x ∈ A ⟼ B Fn A ∧ ∀ x ∈ A g ∘ x ∈ A ⟼ B ⁡ x ∈ B
87 fneq1 ⊢ f = g ∘ x ∈ A ⟼ B → f Fn A ↔ g ∘ x ∈ A ⟼ B Fn A
88 nfcv ⊢ Ⅎ _ x f
89 53 54 nfco ⊢ Ⅎ _ x g ∘ x ∈ A ⟼ B
90 88 89 nfeq ⊢ Ⅎ x f = g ∘ x ∈ A ⟼ B
91 fveq1 ⊢ f = g ∘ x ∈ A ⟼ B → f ⁡ x = g ∘ x ∈ A ⟼ B ⁡ x
92 91 eleq1d ⊢ f = g ∘ x ∈ A ⟼ B → f ⁡ x ∈ B ↔ g ∘ x ∈ A ⟼ B ⁡ x ∈ B
93 90 92 ralbid ⊢ f = g ∘ x ∈ A ⟼ B → ∀ x ∈ A f ⁡ x ∈ B ↔ ∀ x ∈ A g ∘ x ∈ A ⟼ B ⁡ x ∈ B
94 87 93 anbi12d ⊢ f = g ∘ x ∈ A ⟼ B → f Fn A ∧ ∀ x ∈ A f ⁡ x ∈ B ↔ g ∘ x ∈ A ⟼ B Fn A ∧ ∀ x ∈ A g ∘ x ∈ A ⟼ B ⁡ x ∈ B
95 94 spcegv ⊢ g ∘ x ∈ A ⟼ B ∈ V → g ∘ x ∈ A ⟼ B Fn A ∧ ∀ x ∈ A g ∘ x ∈ A ⟼ B ⁡ x ∈ B → ∃ f f Fn A ∧ ∀ x ∈ A f ⁡ x ∈ B
96 42 86 95 sylc ⊢ φ ∧ g Fn ran ⁡ x ∈ A ⟼ B ∧ ∀ y ∈ ran ⁡ x ∈ A ⟼ B g ⁡ y ∈ y → ∃ f f Fn A ∧ ∀ x ∈ A f ⁡ x ∈ B
97 8 9 36 96 syl3anc ⊢ φ ∧ g Fn ran ⁡ x ∈ A ⟼ B ∧ ∀ y ∈ ran ⁡ x ∈ A ⟼ B y ≠ ∅ → g ⁡ y ∈ y → ∃ f f Fn A ∧ ∀ x ∈ A f ⁡ x ∈ B
98 97 ex ⊢ φ → g Fn ran ⁡ x ∈ A ⟼ B ∧ ∀ y ∈ ran ⁡ x ∈ A ⟼ B y ≠ ∅ → g ⁡ y ∈ y → ∃ f f Fn A ∧ ∀ x ∈ A f ⁡ x ∈ B
99 98 exlimdv ⊢ φ → ∃ g g Fn ran ⁡ x ∈ A ⟼ B ∧ ∀ y ∈ ran ⁡ x ∈ A ⟼ B y ≠ ∅ → g ⁡ y ∈ y → ∃ f f Fn A ∧ ∀ x ∈ A f ⁡ x ∈ B
100 7 99 mpd ⊢ φ → ∃ f f Fn A ∧ ∀ x ∈ A f ⁡ x ∈ B