Metamath Proof Explorer


Theorem dfacacn

Description: A choice equivalent: every set has choice sets of every length. (Contributed by Mario Carneiro, 31-Aug-2015)

Ref Expression
Assertion dfacacn ( CHOICE ↔ ∀ 𝑥 AC 𝑥 = V )

Proof

Step Hyp Ref Expression
1 acacni ( ( CHOICE𝑥 ∈ V ) → AC 𝑥 = V )
2 1 elvd ( CHOICEAC 𝑥 = V )
3 2 alrimiv ( CHOICE → ∀ 𝑥 AC 𝑥 = V )
4 vex 𝑦 ∈ V
5 4 difexi ( 𝑦 ∖ { ∅ } ) ∈ V
6 acneq ( 𝑥 = ( 𝑦 ∖ { ∅ } ) → AC 𝑥 = AC ( 𝑦 ∖ { ∅ } ) )
7 6 eqeq1d ( 𝑥 = ( 𝑦 ∖ { ∅ } ) → ( AC 𝑥 = V ↔ AC ( 𝑦 ∖ { ∅ } ) = V ) )
8 5 7 spcv ( ∀ 𝑥 AC 𝑥 = V → AC ( 𝑦 ∖ { ∅ } ) = V )
9 vuniex 𝑦 ∈ V
10 id ( AC ( 𝑦 ∖ { ∅ } ) = V → AC ( 𝑦 ∖ { ∅ } ) = V )
11 9 10 eleqtrrid ( AC ( 𝑦 ∖ { ∅ } ) = V → 𝑦AC ( 𝑦 ∖ { ∅ } ) )
12 eldifi ( 𝑧 ∈ ( 𝑦 ∖ { ∅ } ) → 𝑧𝑦 )
13 elssuni ( 𝑧𝑦𝑧 𝑦 )
14 12 13 syl ( 𝑧 ∈ ( 𝑦 ∖ { ∅ } ) → 𝑧 𝑦 )
15 eldifsni ( 𝑧 ∈ ( 𝑦 ∖ { ∅ } ) → 𝑧 ≠ ∅ )
16 14 15 jca ( 𝑧 ∈ ( 𝑦 ∖ { ∅ } ) → ( 𝑧 𝑦𝑧 ≠ ∅ ) )
17 16 rgen 𝑧 ∈ ( 𝑦 ∖ { ∅ } ) ( 𝑧 𝑦𝑧 ≠ ∅ )
18 acni2 ( ( 𝑦AC ( 𝑦 ∖ { ∅ } ) ∧ ∀ 𝑧 ∈ ( 𝑦 ∖ { ∅ } ) ( 𝑧 𝑦𝑧 ≠ ∅ ) ) → ∃ 𝑔 ( 𝑔 : ( 𝑦 ∖ { ∅ } ) ⟶ 𝑦 ∧ ∀ 𝑧 ∈ ( 𝑦 ∖ { ∅ } ) ( 𝑔𝑧 ) ∈ 𝑧 ) )
19 11 17 18 sylancl ( AC ( 𝑦 ∖ { ∅ } ) = V → ∃ 𝑔 ( 𝑔 : ( 𝑦 ∖ { ∅ } ) ⟶ 𝑦 ∧ ∀ 𝑧 ∈ ( 𝑦 ∖ { ∅ } ) ( 𝑔𝑧 ) ∈ 𝑧 ) )
20 4 mptex ( 𝑥𝑦 ↦ ( 𝑔𝑥 ) ) ∈ V
21 eldifsn ( 𝑧 ∈ ( 𝑦 ∖ { ∅ } ) ↔ ( 𝑧𝑦𝑧 ≠ ∅ ) )
22 21 imbi1i ( ( 𝑧 ∈ ( 𝑦 ∖ { ∅ } ) → ( ( 𝑥𝑦 ↦ ( 𝑔𝑥 ) ) ‘ 𝑧 ) ∈ 𝑧 ) ↔ ( ( 𝑧𝑦𝑧 ≠ ∅ ) → ( ( 𝑥𝑦 ↦ ( 𝑔𝑥 ) ) ‘ 𝑧 ) ∈ 𝑧 ) )
23 fveq2 ( 𝑥 = 𝑧 → ( 𝑔𝑥 ) = ( 𝑔𝑧 ) )
24 eqid ( 𝑥𝑦 ↦ ( 𝑔𝑥 ) ) = ( 𝑥𝑦 ↦ ( 𝑔𝑥 ) )
25 fvex ( 𝑔𝑧 ) ∈ V
26 23 24 25 fvmpt ( 𝑧𝑦 → ( ( 𝑥𝑦 ↦ ( 𝑔𝑥 ) ) ‘ 𝑧 ) = ( 𝑔𝑧 ) )
27 12 26 syl ( 𝑧 ∈ ( 𝑦 ∖ { ∅ } ) → ( ( 𝑥𝑦 ↦ ( 𝑔𝑥 ) ) ‘ 𝑧 ) = ( 𝑔𝑧 ) )
28 27 eleq1d ( 𝑧 ∈ ( 𝑦 ∖ { ∅ } ) → ( ( ( 𝑥𝑦 ↦ ( 𝑔𝑥 ) ) ‘ 𝑧 ) ∈ 𝑧 ↔ ( 𝑔𝑧 ) ∈ 𝑧 ) )
29 28 pm5.74i ( ( 𝑧 ∈ ( 𝑦 ∖ { ∅ } ) → ( ( 𝑥𝑦 ↦ ( 𝑔𝑥 ) ) ‘ 𝑧 ) ∈ 𝑧 ) ↔ ( 𝑧 ∈ ( 𝑦 ∖ { ∅ } ) → ( 𝑔𝑧 ) ∈ 𝑧 ) )
30 impexp ( ( ( 𝑧𝑦𝑧 ≠ ∅ ) → ( ( 𝑥𝑦 ↦ ( 𝑔𝑥 ) ) ‘ 𝑧 ) ∈ 𝑧 ) ↔ ( 𝑧𝑦 → ( 𝑧 ≠ ∅ → ( ( 𝑥𝑦 ↦ ( 𝑔𝑥 ) ) ‘ 𝑧 ) ∈ 𝑧 ) ) )
31 22 29 30 3bitr3i ( ( 𝑧 ∈ ( 𝑦 ∖ { ∅ } ) → ( 𝑔𝑧 ) ∈ 𝑧 ) ↔ ( 𝑧𝑦 → ( 𝑧 ≠ ∅ → ( ( 𝑥𝑦 ↦ ( 𝑔𝑥 ) ) ‘ 𝑧 ) ∈ 𝑧 ) ) )
32 31 ralbii2 ( ∀ 𝑧 ∈ ( 𝑦 ∖ { ∅ } ) ( 𝑔𝑧 ) ∈ 𝑧 ↔ ∀ 𝑧𝑦 ( 𝑧 ≠ ∅ → ( ( 𝑥𝑦 ↦ ( 𝑔𝑥 ) ) ‘ 𝑧 ) ∈ 𝑧 ) )
33 32 bilani ( ( 𝑔 : ( 𝑦 ∖ { ∅ } ) ⟶ 𝑦 ∧ ∀ 𝑧 ∈ ( 𝑦 ∖ { ∅ } ) ( 𝑔𝑧 ) ∈ 𝑧 ) → ∀ 𝑧𝑦 ( 𝑧 ≠ ∅ → ( ( 𝑥𝑦 ↦ ( 𝑔𝑥 ) ) ‘ 𝑧 ) ∈ 𝑧 ) )
34 fvrn0 ( 𝑔𝑥 ) ∈ ( ran 𝑔 ∪ { ∅ } )
35 34 rgenw 𝑥𝑦 ( 𝑔𝑥 ) ∈ ( ran 𝑔 ∪ { ∅ } )
36 24 fmpt ( ∀ 𝑥𝑦 ( 𝑔𝑥 ) ∈ ( ran 𝑔 ∪ { ∅ } ) ↔ ( 𝑥𝑦 ↦ ( 𝑔𝑥 ) ) : 𝑦 ⟶ ( ran 𝑔 ∪ { ∅ } ) )
37 35 36 mpbi ( 𝑥𝑦 ↦ ( 𝑔𝑥 ) ) : 𝑦 ⟶ ( ran 𝑔 ∪ { ∅ } )
38 ffn ( ( 𝑥𝑦 ↦ ( 𝑔𝑥 ) ) : 𝑦 ⟶ ( ran 𝑔 ∪ { ∅ } ) → ( 𝑥𝑦 ↦ ( 𝑔𝑥 ) ) Fn 𝑦 )
39 37 38 ax-mp ( 𝑥𝑦 ↦ ( 𝑔𝑥 ) ) Fn 𝑦
40 33 39 jctil ( ( 𝑔 : ( 𝑦 ∖ { ∅ } ) ⟶ 𝑦 ∧ ∀ 𝑧 ∈ ( 𝑦 ∖ { ∅ } ) ( 𝑔𝑧 ) ∈ 𝑧 ) → ( ( 𝑥𝑦 ↦ ( 𝑔𝑥 ) ) Fn 𝑦 ∧ ∀ 𝑧𝑦 ( 𝑧 ≠ ∅ → ( ( 𝑥𝑦 ↦ ( 𝑔𝑥 ) ) ‘ 𝑧 ) ∈ 𝑧 ) ) )
41 fneq1 ( 𝑓 = ( 𝑥𝑦 ↦ ( 𝑔𝑥 ) ) → ( 𝑓 Fn 𝑦 ↔ ( 𝑥𝑦 ↦ ( 𝑔𝑥 ) ) Fn 𝑦 ) )
42 fveq1 ( 𝑓 = ( 𝑥𝑦 ↦ ( 𝑔𝑥 ) ) → ( 𝑓𝑧 ) = ( ( 𝑥𝑦 ↦ ( 𝑔𝑥 ) ) ‘ 𝑧 ) )
43 42 eleq1d ( 𝑓 = ( 𝑥𝑦 ↦ ( 𝑔𝑥 ) ) → ( ( 𝑓𝑧 ) ∈ 𝑧 ↔ ( ( 𝑥𝑦 ↦ ( 𝑔𝑥 ) ) ‘ 𝑧 ) ∈ 𝑧 ) )
44 43 imbi2d ( 𝑓 = ( 𝑥𝑦 ↦ ( 𝑔𝑥 ) ) → ( ( 𝑧 ≠ ∅ → ( 𝑓𝑧 ) ∈ 𝑧 ) ↔ ( 𝑧 ≠ ∅ → ( ( 𝑥𝑦 ↦ ( 𝑔𝑥 ) ) ‘ 𝑧 ) ∈ 𝑧 ) ) )
45 44 ralbidv ( 𝑓 = ( 𝑥𝑦 ↦ ( 𝑔𝑥 ) ) → ( ∀ 𝑧𝑦 ( 𝑧 ≠ ∅ → ( 𝑓𝑧 ) ∈ 𝑧 ) ↔ ∀ 𝑧𝑦 ( 𝑧 ≠ ∅ → ( ( 𝑥𝑦 ↦ ( 𝑔𝑥 ) ) ‘ 𝑧 ) ∈ 𝑧 ) ) )
46 41 45 anbi12d ( 𝑓 = ( 𝑥𝑦 ↦ ( 𝑔𝑥 ) ) → ( ( 𝑓 Fn 𝑦 ∧ ∀ 𝑧𝑦 ( 𝑧 ≠ ∅ → ( 𝑓𝑧 ) ∈ 𝑧 ) ) ↔ ( ( 𝑥𝑦 ↦ ( 𝑔𝑥 ) ) Fn 𝑦 ∧ ∀ 𝑧𝑦 ( 𝑧 ≠ ∅ → ( ( 𝑥𝑦 ↦ ( 𝑔𝑥 ) ) ‘ 𝑧 ) ∈ 𝑧 ) ) ) )
47 46 spcegv ( ( 𝑥𝑦 ↦ ( 𝑔𝑥 ) ) ∈ V → ( ( ( 𝑥𝑦 ↦ ( 𝑔𝑥 ) ) Fn 𝑦 ∧ ∀ 𝑧𝑦 ( 𝑧 ≠ ∅ → ( ( 𝑥𝑦 ↦ ( 𝑔𝑥 ) ) ‘ 𝑧 ) ∈ 𝑧 ) ) → ∃ 𝑓 ( 𝑓 Fn 𝑦 ∧ ∀ 𝑧𝑦 ( 𝑧 ≠ ∅ → ( 𝑓𝑧 ) ∈ 𝑧 ) ) ) )
48 20 40 47 mpsyl ( ( 𝑔 : ( 𝑦 ∖ { ∅ } ) ⟶ 𝑦 ∧ ∀ 𝑧 ∈ ( 𝑦 ∖ { ∅ } ) ( 𝑔𝑧 ) ∈ 𝑧 ) → ∃ 𝑓 ( 𝑓 Fn 𝑦 ∧ ∀ 𝑧𝑦 ( 𝑧 ≠ ∅ → ( 𝑓𝑧 ) ∈ 𝑧 ) ) )
49 48 exlimiv ( ∃ 𝑔 ( 𝑔 : ( 𝑦 ∖ { ∅ } ) ⟶ 𝑦 ∧ ∀ 𝑧 ∈ ( 𝑦 ∖ { ∅ } ) ( 𝑔𝑧 ) ∈ 𝑧 ) → ∃ 𝑓 ( 𝑓 Fn 𝑦 ∧ ∀ 𝑧𝑦 ( 𝑧 ≠ ∅ → ( 𝑓𝑧 ) ∈ 𝑧 ) ) )
50 8 19 49 3syl ( ∀ 𝑥 AC 𝑥 = V → ∃ 𝑓 ( 𝑓 Fn 𝑦 ∧ ∀ 𝑧𝑦 ( 𝑧 ≠ ∅ → ( 𝑓𝑧 ) ∈ 𝑧 ) ) )
51 50 alrimiv ( ∀ 𝑥 AC 𝑥 = V → ∀ 𝑦𝑓 ( 𝑓 Fn 𝑦 ∧ ∀ 𝑧𝑦 ( 𝑧 ≠ ∅ → ( 𝑓𝑧 ) ∈ 𝑧 ) ) )
52 dfac4 ( CHOICE ↔ ∀ 𝑦𝑓 ( 𝑓 Fn 𝑦 ∧ ∀ 𝑧𝑦 ( 𝑧 ≠ ∅ → ( 𝑓𝑧 ) ∈ 𝑧 ) ) )
53 51 52 sylibr ( ∀ 𝑥 AC 𝑥 = V → CHOICE )
54 3 53 impbii ( CHOICE ↔ ∀ 𝑥 AC 𝑥 = V )