Metamath Proof Explorer


Theorem dfac21

Description: Tychonoff's theorem is a choice equivalent. Definition AC21 of Schechter p. 461. (Contributed by Stefan O'Rear, 22-Feb-2015) (Revised by Mario Carneiro, 27-Aug-2015)

Ref Expression
Assertion dfac21 ( CHOICE ↔ ∀ 𝑓 ( 𝑓 : dom 𝑓 ⟶ Comp → ( ∏t𝑓 ) ∈ Comp ) )

Proof

Step Hyp Ref Expression
1 vex 𝑓 ∈ V
2 1 dmex dom 𝑓 ∈ V
3 2 a1i ( ( CHOICE𝑓 : dom 𝑓 ⟶ Comp ) → dom 𝑓 ∈ V )
4 simpr ( ( CHOICE𝑓 : dom 𝑓 ⟶ Comp ) → 𝑓 : dom 𝑓 ⟶ Comp )
5 fvex ( ∏t𝑓 ) ∈ V
6 5 uniex ( ∏t𝑓 ) ∈ V
7 acufl ( CHOICE → UFL = V )
8 7 adantr ( ( CHOICE𝑓 : dom 𝑓 ⟶ Comp ) → UFL = V )
9 6 8 eleqtrrid ( ( CHOICE𝑓 : dom 𝑓 ⟶ Comp ) → ( ∏t𝑓 ) ∈ UFL )
10 dfac10 ( CHOICE ↔ dom card = V )
11 10 birani ( ( CHOICE𝑓 : dom 𝑓 ⟶ Comp ) → dom card = V )
12 6 11 eleqtrrid ( ( CHOICE𝑓 : dom 𝑓 ⟶ Comp ) → ( ∏t𝑓 ) ∈ dom card )
13 9 12 elind ( ( CHOICE𝑓 : dom 𝑓 ⟶ Comp ) → ( ∏t𝑓 ) ∈ ( UFL ∩ dom card ) )
14 eqid ( ∏t𝑓 ) = ( ∏t𝑓 )
15 eqid ( ∏t𝑓 ) = ( ∏t𝑓 )
16 14 15 ptcmpg ( ( dom 𝑓 ∈ V ∧ 𝑓 : dom 𝑓 ⟶ Comp ∧ ( ∏t𝑓 ) ∈ ( UFL ∩ dom card ) ) → ( ∏t𝑓 ) ∈ Comp )
17 3 4 13 16 syl3anc ( ( CHOICE𝑓 : dom 𝑓 ⟶ Comp ) → ( ∏t𝑓 ) ∈ Comp )
18 17 ex ( CHOICE → ( 𝑓 : dom 𝑓 ⟶ Comp → ( ∏t𝑓 ) ∈ Comp ) )
19 18 alrimiv ( CHOICE → ∀ 𝑓 ( 𝑓 : dom 𝑓 ⟶ Comp → ( ∏t𝑓 ) ∈ Comp ) )
20 fvex ( 𝑔𝑦 ) ∈ V
21 kelac2lem ( ( 𝑔𝑦 ) ∈ V → ( topGen ‘ { ( 𝑔𝑦 ) , { 𝒫 ( 𝑔𝑦 ) } } ) ∈ Comp )
22 20 21 mp1i ( ( ( Fun 𝑔 ∧ ∅ ∉ ran 𝑔 ) ∧ 𝑦 ∈ dom 𝑔 ) → ( topGen ‘ { ( 𝑔𝑦 ) , { 𝒫 ( 𝑔𝑦 ) } } ) ∈ Comp )
23 22 fmpttd ( ( Fun 𝑔 ∧ ∅ ∉ ran 𝑔 ) → ( 𝑦 ∈ dom 𝑔 ↦ ( topGen ‘ { ( 𝑔𝑦 ) , { 𝒫 ( 𝑔𝑦 ) } } ) ) : dom 𝑔 ⟶ Comp )
24 23 ffdmd ( ( Fun 𝑔 ∧ ∅ ∉ ran 𝑔 ) → ( 𝑦 ∈ dom 𝑔 ↦ ( topGen ‘ { ( 𝑔𝑦 ) , { 𝒫 ( 𝑔𝑦 ) } } ) ) : dom ( 𝑦 ∈ dom 𝑔 ↦ ( topGen ‘ { ( 𝑔𝑦 ) , { 𝒫 ( 𝑔𝑦 ) } } ) ) ⟶ Comp )
25 vex 𝑔 ∈ V
26 25 dmex dom 𝑔 ∈ V
27 26 mptex ( 𝑦 ∈ dom 𝑔 ↦ ( topGen ‘ { ( 𝑔𝑦 ) , { 𝒫 ( 𝑔𝑦 ) } } ) ) ∈ V
28 id ( 𝑓 = ( 𝑦 ∈ dom 𝑔 ↦ ( topGen ‘ { ( 𝑔𝑦 ) , { 𝒫 ( 𝑔𝑦 ) } } ) ) → 𝑓 = ( 𝑦 ∈ dom 𝑔 ↦ ( topGen ‘ { ( 𝑔𝑦 ) , { 𝒫 ( 𝑔𝑦 ) } } ) ) )
29 dmeq ( 𝑓 = ( 𝑦 ∈ dom 𝑔 ↦ ( topGen ‘ { ( 𝑔𝑦 ) , { 𝒫 ( 𝑔𝑦 ) } } ) ) → dom 𝑓 = dom ( 𝑦 ∈ dom 𝑔 ↦ ( topGen ‘ { ( 𝑔𝑦 ) , { 𝒫 ( 𝑔𝑦 ) } } ) ) )
30 28 29 feq12d ( 𝑓 = ( 𝑦 ∈ dom 𝑔 ↦ ( topGen ‘ { ( 𝑔𝑦 ) , { 𝒫 ( 𝑔𝑦 ) } } ) ) → ( 𝑓 : dom 𝑓 ⟶ Comp ↔ ( 𝑦 ∈ dom 𝑔 ↦ ( topGen ‘ { ( 𝑔𝑦 ) , { 𝒫 ( 𝑔𝑦 ) } } ) ) : dom ( 𝑦 ∈ dom 𝑔 ↦ ( topGen ‘ { ( 𝑔𝑦 ) , { 𝒫 ( 𝑔𝑦 ) } } ) ) ⟶ Comp ) )
31 fveq2 ( 𝑓 = ( 𝑦 ∈ dom 𝑔 ↦ ( topGen ‘ { ( 𝑔𝑦 ) , { 𝒫 ( 𝑔𝑦 ) } } ) ) → ( ∏t𝑓 ) = ( ∏t ‘ ( 𝑦 ∈ dom 𝑔 ↦ ( topGen ‘ { ( 𝑔𝑦 ) , { 𝒫 ( 𝑔𝑦 ) } } ) ) ) )
32 31 eleq1d ( 𝑓 = ( 𝑦 ∈ dom 𝑔 ↦ ( topGen ‘ { ( 𝑔𝑦 ) , { 𝒫 ( 𝑔𝑦 ) } } ) ) → ( ( ∏t𝑓 ) ∈ Comp ↔ ( ∏t ‘ ( 𝑦 ∈ dom 𝑔 ↦ ( topGen ‘ { ( 𝑔𝑦 ) , { 𝒫 ( 𝑔𝑦 ) } } ) ) ) ∈ Comp ) )
33 30 32 imbi12d ( 𝑓 = ( 𝑦 ∈ dom 𝑔 ↦ ( topGen ‘ { ( 𝑔𝑦 ) , { 𝒫 ( 𝑔𝑦 ) } } ) ) → ( ( 𝑓 : dom 𝑓 ⟶ Comp → ( ∏t𝑓 ) ∈ Comp ) ↔ ( ( 𝑦 ∈ dom 𝑔 ↦ ( topGen ‘ { ( 𝑔𝑦 ) , { 𝒫 ( 𝑔𝑦 ) } } ) ) : dom ( 𝑦 ∈ dom 𝑔 ↦ ( topGen ‘ { ( 𝑔𝑦 ) , { 𝒫 ( 𝑔𝑦 ) } } ) ) ⟶ Comp → ( ∏t ‘ ( 𝑦 ∈ dom 𝑔 ↦ ( topGen ‘ { ( 𝑔𝑦 ) , { 𝒫 ( 𝑔𝑦 ) } } ) ) ) ∈ Comp ) ) )
34 27 33 spcv ( ∀ 𝑓 ( 𝑓 : dom 𝑓 ⟶ Comp → ( ∏t𝑓 ) ∈ Comp ) → ( ( 𝑦 ∈ dom 𝑔 ↦ ( topGen ‘ { ( 𝑔𝑦 ) , { 𝒫 ( 𝑔𝑦 ) } } ) ) : dom ( 𝑦 ∈ dom 𝑔 ↦ ( topGen ‘ { ( 𝑔𝑦 ) , { 𝒫 ( 𝑔𝑦 ) } } ) ) ⟶ Comp → ( ∏t ‘ ( 𝑦 ∈ dom 𝑔 ↦ ( topGen ‘ { ( 𝑔𝑦 ) , { 𝒫 ( 𝑔𝑦 ) } } ) ) ) ∈ Comp ) )
35 24 34 syl5com ( ( Fun 𝑔 ∧ ∅ ∉ ran 𝑔 ) → ( ∀ 𝑓 ( 𝑓 : dom 𝑓 ⟶ Comp → ( ∏t𝑓 ) ∈ Comp ) → ( ∏t ‘ ( 𝑦 ∈ dom 𝑔 ↦ ( topGen ‘ { ( 𝑔𝑦 ) , { 𝒫 ( 𝑔𝑦 ) } } ) ) ) ∈ Comp ) )
36 fvex ( 𝑔𝑥 ) ∈ V
37 36 a1i ( ( ( ( Fun 𝑔 ∧ ∅ ∉ ran 𝑔 ) ∧ ( ∏t ‘ ( 𝑦 ∈ dom 𝑔 ↦ ( topGen ‘ { ( 𝑔𝑦 ) , { 𝒫 ( 𝑔𝑦 ) } } ) ) ) ∈ Comp ) ∧ 𝑥 ∈ dom 𝑔 ) → ( 𝑔𝑥 ) ∈ V )
38 df-nel ( ∅ ∉ ran 𝑔 ↔ ¬ ∅ ∈ ran 𝑔 )
39 38 biimpi ( ∅ ∉ ran 𝑔 → ¬ ∅ ∈ ran 𝑔 )
40 39 ad2antlr ( ( ( Fun 𝑔 ∧ ∅ ∉ ran 𝑔 ) ∧ 𝑥 ∈ dom 𝑔 ) → ¬ ∅ ∈ ran 𝑔 )
41 fvelrn ( ( Fun 𝑔𝑥 ∈ dom 𝑔 ) → ( 𝑔𝑥 ) ∈ ran 𝑔 )
42 41 adantlr ( ( ( Fun 𝑔 ∧ ∅ ∉ ran 𝑔 ) ∧ 𝑥 ∈ dom 𝑔 ) → ( 𝑔𝑥 ) ∈ ran 𝑔 )
43 eleq1 ( ( 𝑔𝑥 ) = ∅ → ( ( 𝑔𝑥 ) ∈ ran 𝑔 ↔ ∅ ∈ ran 𝑔 ) )
44 42 43 syl5ibcom ( ( ( Fun 𝑔 ∧ ∅ ∉ ran 𝑔 ) ∧ 𝑥 ∈ dom 𝑔 ) → ( ( 𝑔𝑥 ) = ∅ → ∅ ∈ ran 𝑔 ) )
45 44 necon3bd ( ( ( Fun 𝑔 ∧ ∅ ∉ ran 𝑔 ) ∧ 𝑥 ∈ dom 𝑔 ) → ( ¬ ∅ ∈ ran 𝑔 → ( 𝑔𝑥 ) ≠ ∅ ) )
46 40 45 mpd ( ( ( Fun 𝑔 ∧ ∅ ∉ ran 𝑔 ) ∧ 𝑥 ∈ dom 𝑔 ) → ( 𝑔𝑥 ) ≠ ∅ )
47 46 adantlr ( ( ( ( Fun 𝑔 ∧ ∅ ∉ ran 𝑔 ) ∧ ( ∏t ‘ ( 𝑦 ∈ dom 𝑔 ↦ ( topGen ‘ { ( 𝑔𝑦 ) , { 𝒫 ( 𝑔𝑦 ) } } ) ) ) ∈ Comp ) ∧ 𝑥 ∈ dom 𝑔 ) → ( 𝑔𝑥 ) ≠ ∅ )
48 fveq2 ( 𝑦 = 𝑥 → ( 𝑔𝑦 ) = ( 𝑔𝑥 ) )
49 48 unieqd ( 𝑦 = 𝑥 ( 𝑔𝑦 ) = ( 𝑔𝑥 ) )
50 49 pweqd ( 𝑦 = 𝑥 → 𝒫 ( 𝑔𝑦 ) = 𝒫 ( 𝑔𝑥 ) )
51 50 sneqd ( 𝑦 = 𝑥 → { 𝒫 ( 𝑔𝑦 ) } = { 𝒫 ( 𝑔𝑥 ) } )
52 48 51 preq12d ( 𝑦 = 𝑥 → { ( 𝑔𝑦 ) , { 𝒫 ( 𝑔𝑦 ) } } = { ( 𝑔𝑥 ) , { 𝒫 ( 𝑔𝑥 ) } } )
53 52 fveq2d ( 𝑦 = 𝑥 → ( topGen ‘ { ( 𝑔𝑦 ) , { 𝒫 ( 𝑔𝑦 ) } } ) = ( topGen ‘ { ( 𝑔𝑥 ) , { 𝒫 ( 𝑔𝑥 ) } } ) )
54 53 cbvmptv ( 𝑦 ∈ dom 𝑔 ↦ ( topGen ‘ { ( 𝑔𝑦 ) , { 𝒫 ( 𝑔𝑦 ) } } ) ) = ( 𝑥 ∈ dom 𝑔 ↦ ( topGen ‘ { ( 𝑔𝑥 ) , { 𝒫 ( 𝑔𝑥 ) } } ) )
55 54 fveq2i ( ∏t ‘ ( 𝑦 ∈ dom 𝑔 ↦ ( topGen ‘ { ( 𝑔𝑦 ) , { 𝒫 ( 𝑔𝑦 ) } } ) ) ) = ( ∏t ‘ ( 𝑥 ∈ dom 𝑔 ↦ ( topGen ‘ { ( 𝑔𝑥 ) , { 𝒫 ( 𝑔𝑥 ) } } ) ) )
56 55 eleq1i ( ( ∏t ‘ ( 𝑦 ∈ dom 𝑔 ↦ ( topGen ‘ { ( 𝑔𝑦 ) , { 𝒫 ( 𝑔𝑦 ) } } ) ) ) ∈ Comp ↔ ( ∏t ‘ ( 𝑥 ∈ dom 𝑔 ↦ ( topGen ‘ { ( 𝑔𝑥 ) , { 𝒫 ( 𝑔𝑥 ) } } ) ) ) ∈ Comp )
57 56 bilani ( ( ( Fun 𝑔 ∧ ∅ ∉ ran 𝑔 ) ∧ ( ∏t ‘ ( 𝑦 ∈ dom 𝑔 ↦ ( topGen ‘ { ( 𝑔𝑦 ) , { 𝒫 ( 𝑔𝑦 ) } } ) ) ) ∈ Comp ) → ( ∏t ‘ ( 𝑥 ∈ dom 𝑔 ↦ ( topGen ‘ { ( 𝑔𝑥 ) , { 𝒫 ( 𝑔𝑥 ) } } ) ) ) ∈ Comp )
58 37 47 57 kelac2 ( ( ( Fun 𝑔 ∧ ∅ ∉ ran 𝑔 ) ∧ ( ∏t ‘ ( 𝑦 ∈ dom 𝑔 ↦ ( topGen ‘ { ( 𝑔𝑦 ) , { 𝒫 ( 𝑔𝑦 ) } } ) ) ) ∈ Comp ) → X 𝑥 ∈ dom 𝑔 ( 𝑔𝑥 ) ≠ ∅ )
59 58 ex ( ( Fun 𝑔 ∧ ∅ ∉ ran 𝑔 ) → ( ( ∏t ‘ ( 𝑦 ∈ dom 𝑔 ↦ ( topGen ‘ { ( 𝑔𝑦 ) , { 𝒫 ( 𝑔𝑦 ) } } ) ) ) ∈ Comp → X 𝑥 ∈ dom 𝑔 ( 𝑔𝑥 ) ≠ ∅ ) )
60 35 59 syldc ( ∀ 𝑓 ( 𝑓 : dom 𝑓 ⟶ Comp → ( ∏t𝑓 ) ∈ Comp ) → ( ( Fun 𝑔 ∧ ∅ ∉ ran 𝑔 ) → X 𝑥 ∈ dom 𝑔 ( 𝑔𝑥 ) ≠ ∅ ) )
61 60 alrimiv ( ∀ 𝑓 ( 𝑓 : dom 𝑓 ⟶ Comp → ( ∏t𝑓 ) ∈ Comp ) → ∀ 𝑔 ( ( Fun 𝑔 ∧ ∅ ∉ ran 𝑔 ) → X 𝑥 ∈ dom 𝑔 ( 𝑔𝑥 ) ≠ ∅ ) )
62 dfac9 ( CHOICE ↔ ∀ 𝑔 ( ( Fun 𝑔 ∧ ∅ ∉ ran 𝑔 ) → X 𝑥 ∈ dom 𝑔 ( 𝑔𝑥 ) ≠ ∅ ) )
63 61 62 sylibr ( ∀ 𝑓 ( 𝑓 : dom 𝑓 ⟶ Comp → ( ∏t𝑓 ) ∈ Comp ) → CHOICE )
64 19 63 impbii ( CHOICE ↔ ∀ 𝑓 ( 𝑓 : dom 𝑓 ⟶ Comp → ( ∏t𝑓 ) ∈ Comp ) )