Metamath Proof Explorer


Theorem psmetutop

Description: The topology induced by a uniform structure generated by a metric D is generated by that metric's open balls. (Contributed by Thierry Arnoux, 6-Dec-2017) (Revised by Thierry Arnoux, 11-Mar-2018)

Ref Expression
Assertion psmetutop ( ( 𝑋 ≠ ∅ ∧ 𝐷 ∈ ( PsMet ‘ 𝑋 ) ) → ( unifTop ‘ ( metUnif ‘ 𝐷 ) ) = ( topGen ‘ ran ( ball ‘ 𝐷 ) ) )

Proof

Step Hyp Ref Expression
1 metuust ( ( 𝑋 ≠ ∅ ∧ 𝐷 ∈ ( PsMet ‘ 𝑋 ) ) → ( metUnif ‘ 𝐷 ) ∈ ( UnifOn ‘ 𝑋 ) )
2 utopval ( ( metUnif ‘ 𝐷 ) ∈ ( UnifOn ‘ 𝑋 ) → ( unifTop ‘ ( metUnif ‘ 𝐷 ) ) = { 𝑎 ∈ 𝒫 𝑋 ∣ ∀ 𝑥𝑎𝑣 ∈ ( metUnif ‘ 𝐷 ) ( 𝑣 “ { 𝑥 } ) ⊆ 𝑎 } )
3 1 2 syl ( ( 𝑋 ≠ ∅ ∧ 𝐷 ∈ ( PsMet ‘ 𝑋 ) ) → ( unifTop ‘ ( metUnif ‘ 𝐷 ) ) = { 𝑎 ∈ 𝒫 𝑋 ∣ ∀ 𝑥𝑎𝑣 ∈ ( metUnif ‘ 𝐷 ) ( 𝑣 “ { 𝑥 } ) ⊆ 𝑎 } )
4 3 eleq2d ( ( 𝑋 ≠ ∅ ∧ 𝐷 ∈ ( PsMet ‘ 𝑋 ) ) → ( 𝑎 ∈ ( unifTop ‘ ( metUnif ‘ 𝐷 ) ) ↔ 𝑎 ∈ { 𝑎 ∈ 𝒫 𝑋 ∣ ∀ 𝑥𝑎𝑣 ∈ ( metUnif ‘ 𝐷 ) ( 𝑣 “ { 𝑥 } ) ⊆ 𝑎 } ) )
5 rabid ( 𝑎 ∈ { 𝑎 ∈ 𝒫 𝑋 ∣ ∀ 𝑥𝑎𝑣 ∈ ( metUnif ‘ 𝐷 ) ( 𝑣 “ { 𝑥 } ) ⊆ 𝑎 } ↔ ( 𝑎 ∈ 𝒫 𝑋 ∧ ∀ 𝑥𝑎𝑣 ∈ ( metUnif ‘ 𝐷 ) ( 𝑣 “ { 𝑥 } ) ⊆ 𝑎 ) )
6 4 5 bitrdi ( ( 𝑋 ≠ ∅ ∧ 𝐷 ∈ ( PsMet ‘ 𝑋 ) ) → ( 𝑎 ∈ ( unifTop ‘ ( metUnif ‘ 𝐷 ) ) ↔ ( 𝑎 ∈ 𝒫 𝑋 ∧ ∀ 𝑥𝑎𝑣 ∈ ( metUnif ‘ 𝐷 ) ( 𝑣 “ { 𝑥 } ) ⊆ 𝑎 ) ) )
7 6 biimpa ( ( ( 𝑋 ≠ ∅ ∧ 𝐷 ∈ ( PsMet ‘ 𝑋 ) ) ∧ 𝑎 ∈ ( unifTop ‘ ( metUnif ‘ 𝐷 ) ) ) → ( 𝑎 ∈ 𝒫 𝑋 ∧ ∀ 𝑥𝑎𝑣 ∈ ( metUnif ‘ 𝐷 ) ( 𝑣 “ { 𝑥 } ) ⊆ 𝑎 ) )
8 7 simpld ( ( ( 𝑋 ≠ ∅ ∧ 𝐷 ∈ ( PsMet ‘ 𝑋 ) ) ∧ 𝑎 ∈ ( unifTop ‘ ( metUnif ‘ 𝐷 ) ) ) → 𝑎 ∈ 𝒫 𝑋 )
9 8 elpwid ( ( ( 𝑋 ≠ ∅ ∧ 𝐷 ∈ ( PsMet ‘ 𝑋 ) ) ∧ 𝑎 ∈ ( unifTop ‘ ( metUnif ‘ 𝐷 ) ) ) → 𝑎𝑋 )
10 unirnblps ( 𝐷 ∈ ( PsMet ‘ 𝑋 ) → ran ( ball ‘ 𝐷 ) = 𝑋 )
11 10 ad2antlr ( ( ( 𝑋 ≠ ∅ ∧ 𝐷 ∈ ( PsMet ‘ 𝑋 ) ) ∧ 𝑎 ∈ ( unifTop ‘ ( metUnif ‘ 𝐷 ) ) ) → ran ( ball ‘ 𝐷 ) = 𝑋 )
12 9 11 sseqtrrd ( ( ( 𝑋 ≠ ∅ ∧ 𝐷 ∈ ( PsMet ‘ 𝑋 ) ) ∧ 𝑎 ∈ ( unifTop ‘ ( metUnif ‘ 𝐷 ) ) ) → 𝑎 ran ( ball ‘ 𝐷 ) )
13 simpr ( ( ( ( ( ( 𝑋 ≠ ∅ ∧ 𝐷 ∈ ( PsMet ‘ 𝑋 ) ) ∧ 𝑎 ∈ ( unifTop ‘ ( metUnif ‘ 𝐷 ) ) ) ∧ 𝑥𝑎 ) ∧ 𝑣 ∈ ( metUnif ‘ 𝐷 ) ) ∧ ( 𝑣 “ { 𝑥 } ) ⊆ 𝑎 ) → ( 𝑣 “ { 𝑥 } ) ⊆ 𝑎 )
14 simp-5r ( ( ( ( ( ( 𝑋 ≠ ∅ ∧ 𝐷 ∈ ( PsMet ‘ 𝑋 ) ) ∧ 𝑎 ∈ ( unifTop ‘ ( metUnif ‘ 𝐷 ) ) ) ∧ 𝑥𝑎 ) ∧ 𝑣 ∈ ( metUnif ‘ 𝐷 ) ) ∧ ( 𝑣 “ { 𝑥 } ) ⊆ 𝑎 ) → 𝐷 ∈ ( PsMet ‘ 𝑋 ) )
15 simplr ( ( ( ( ( ( 𝑋 ≠ ∅ ∧ 𝐷 ∈ ( PsMet ‘ 𝑋 ) ) ∧ 𝑎 ∈ ( unifTop ‘ ( metUnif ‘ 𝐷 ) ) ) ∧ 𝑥𝑎 ) ∧ 𝑣 ∈ ( metUnif ‘ 𝐷 ) ) ∧ ( 𝑣 “ { 𝑥 } ) ⊆ 𝑎 ) → 𝑣 ∈ ( metUnif ‘ 𝐷 ) )
16 9 ad3antrrr ( ( ( ( ( ( 𝑋 ≠ ∅ ∧ 𝐷 ∈ ( PsMet ‘ 𝑋 ) ) ∧ 𝑎 ∈ ( unifTop ‘ ( metUnif ‘ 𝐷 ) ) ) ∧ 𝑥𝑎 ) ∧ 𝑣 ∈ ( metUnif ‘ 𝐷 ) ) ∧ ( 𝑣 “ { 𝑥 } ) ⊆ 𝑎 ) → 𝑎𝑋 )
17 simpllr ( ( ( ( ( ( 𝑋 ≠ ∅ ∧ 𝐷 ∈ ( PsMet ‘ 𝑋 ) ) ∧ 𝑎 ∈ ( unifTop ‘ ( metUnif ‘ 𝐷 ) ) ) ∧ 𝑥𝑎 ) ∧ 𝑣 ∈ ( metUnif ‘ 𝐷 ) ) ∧ ( 𝑣 “ { 𝑥 } ) ⊆ 𝑎 ) → 𝑥𝑎 )
18 16 17 sseldd ( ( ( ( ( ( 𝑋 ≠ ∅ ∧ 𝐷 ∈ ( PsMet ‘ 𝑋 ) ) ∧ 𝑎 ∈ ( unifTop ‘ ( metUnif ‘ 𝐷 ) ) ) ∧ 𝑥𝑎 ) ∧ 𝑣 ∈ ( metUnif ‘ 𝐷 ) ) ∧ ( 𝑣 “ { 𝑥 } ) ⊆ 𝑎 ) → 𝑥𝑋 )
19 metustbl ( ( 𝐷 ∈ ( PsMet ‘ 𝑋 ) ∧ 𝑣 ∈ ( metUnif ‘ 𝐷 ) ∧ 𝑥𝑋 ) → ∃ 𝑏 ∈ ran ( ball ‘ 𝐷 ) ( 𝑥𝑏𝑏 ⊆ ( 𝑣 “ { 𝑥 } ) ) )
20 14 15 18 19 syl3anc ( ( ( ( ( ( 𝑋 ≠ ∅ ∧ 𝐷 ∈ ( PsMet ‘ 𝑋 ) ) ∧ 𝑎 ∈ ( unifTop ‘ ( metUnif ‘ 𝐷 ) ) ) ∧ 𝑥𝑎 ) ∧ 𝑣 ∈ ( metUnif ‘ 𝐷 ) ) ∧ ( 𝑣 “ { 𝑥 } ) ⊆ 𝑎 ) → ∃ 𝑏 ∈ ran ( ball ‘ 𝐷 ) ( 𝑥𝑏𝑏 ⊆ ( 𝑣 “ { 𝑥 } ) ) )
21 sstr ( ( 𝑏 ⊆ ( 𝑣 “ { 𝑥 } ) ∧ ( 𝑣 “ { 𝑥 } ) ⊆ 𝑎 ) → 𝑏𝑎 )
22 21 expcom ( ( 𝑣 “ { 𝑥 } ) ⊆ 𝑎 → ( 𝑏 ⊆ ( 𝑣 “ { 𝑥 } ) → 𝑏𝑎 ) )
23 22 anim2d ( ( 𝑣 “ { 𝑥 } ) ⊆ 𝑎 → ( ( 𝑥𝑏𝑏 ⊆ ( 𝑣 “ { 𝑥 } ) ) → ( 𝑥𝑏𝑏𝑎 ) ) )
24 23 reximdv ( ( 𝑣 “ { 𝑥 } ) ⊆ 𝑎 → ( ∃ 𝑏 ∈ ran ( ball ‘ 𝐷 ) ( 𝑥𝑏𝑏 ⊆ ( 𝑣 “ { 𝑥 } ) ) → ∃ 𝑏 ∈ ran ( ball ‘ 𝐷 ) ( 𝑥𝑏𝑏𝑎 ) ) )
25 13 20 24 sylc ( ( ( ( ( ( 𝑋 ≠ ∅ ∧ 𝐷 ∈ ( PsMet ‘ 𝑋 ) ) ∧ 𝑎 ∈ ( unifTop ‘ ( metUnif ‘ 𝐷 ) ) ) ∧ 𝑥𝑎 ) ∧ 𝑣 ∈ ( metUnif ‘ 𝐷 ) ) ∧ ( 𝑣 “ { 𝑥 } ) ⊆ 𝑎 ) → ∃ 𝑏 ∈ ran ( ball ‘ 𝐷 ) ( 𝑥𝑏𝑏𝑎 ) )
26 7 simprd ( ( ( 𝑋 ≠ ∅ ∧ 𝐷 ∈ ( PsMet ‘ 𝑋 ) ) ∧ 𝑎 ∈ ( unifTop ‘ ( metUnif ‘ 𝐷 ) ) ) → ∀ 𝑥𝑎𝑣 ∈ ( metUnif ‘ 𝐷 ) ( 𝑣 “ { 𝑥 } ) ⊆ 𝑎 )
27 26 r19.21bi ( ( ( ( 𝑋 ≠ ∅ ∧ 𝐷 ∈ ( PsMet ‘ 𝑋 ) ) ∧ 𝑎 ∈ ( unifTop ‘ ( metUnif ‘ 𝐷 ) ) ) ∧ 𝑥𝑎 ) → ∃ 𝑣 ∈ ( metUnif ‘ 𝐷 ) ( 𝑣 “ { 𝑥 } ) ⊆ 𝑎 )
28 25 27 r19.29a ( ( ( ( 𝑋 ≠ ∅ ∧ 𝐷 ∈ ( PsMet ‘ 𝑋 ) ) ∧ 𝑎 ∈ ( unifTop ‘ ( metUnif ‘ 𝐷 ) ) ) ∧ 𝑥𝑎 ) → ∃ 𝑏 ∈ ran ( ball ‘ 𝐷 ) ( 𝑥𝑏𝑏𝑎 ) )
29 28 ralrimiva ( ( ( 𝑋 ≠ ∅ ∧ 𝐷 ∈ ( PsMet ‘ 𝑋 ) ) ∧ 𝑎 ∈ ( unifTop ‘ ( metUnif ‘ 𝐷 ) ) ) → ∀ 𝑥𝑎𝑏 ∈ ran ( ball ‘ 𝐷 ) ( 𝑥𝑏𝑏𝑎 ) )
30 12 29 jca ( ( ( 𝑋 ≠ ∅ ∧ 𝐷 ∈ ( PsMet ‘ 𝑋 ) ) ∧ 𝑎 ∈ ( unifTop ‘ ( metUnif ‘ 𝐷 ) ) ) → ( 𝑎 ran ( ball ‘ 𝐷 ) ∧ ∀ 𝑥𝑎𝑏 ∈ ran ( ball ‘ 𝐷 ) ( 𝑥𝑏𝑏𝑎 ) ) )
31 fvex ( ball ‘ 𝐷 ) ∈ V
32 31 rnex ran ( ball ‘ 𝐷 ) ∈ V
33 eltg2 ( ran ( ball ‘ 𝐷 ) ∈ V → ( 𝑎 ∈ ( topGen ‘ ran ( ball ‘ 𝐷 ) ) ↔ ( 𝑎 ran ( ball ‘ 𝐷 ) ∧ ∀ 𝑥𝑎𝑏 ∈ ran ( ball ‘ 𝐷 ) ( 𝑥𝑏𝑏𝑎 ) ) ) )
34 32 33 mp1i ( ( ( 𝑋 ≠ ∅ ∧ 𝐷 ∈ ( PsMet ‘ 𝑋 ) ) ∧ 𝑎 ∈ ( unifTop ‘ ( metUnif ‘ 𝐷 ) ) ) → ( 𝑎 ∈ ( topGen ‘ ran ( ball ‘ 𝐷 ) ) ↔ ( 𝑎 ran ( ball ‘ 𝐷 ) ∧ ∀ 𝑥𝑎𝑏 ∈ ran ( ball ‘ 𝐷 ) ( 𝑥𝑏𝑏𝑎 ) ) ) )
35 30 34 mpbird ( ( ( 𝑋 ≠ ∅ ∧ 𝐷 ∈ ( PsMet ‘ 𝑋 ) ) ∧ 𝑎 ∈ ( unifTop ‘ ( metUnif ‘ 𝐷 ) ) ) → 𝑎 ∈ ( topGen ‘ ran ( ball ‘ 𝐷 ) ) )
36 32 33 mp1i ( ( 𝑋 ≠ ∅ ∧ 𝐷 ∈ ( PsMet ‘ 𝑋 ) ) → ( 𝑎 ∈ ( topGen ‘ ran ( ball ‘ 𝐷 ) ) ↔ ( 𝑎 ran ( ball ‘ 𝐷 ) ∧ ∀ 𝑥𝑎𝑏 ∈ ran ( ball ‘ 𝐷 ) ( 𝑥𝑏𝑏𝑎 ) ) ) )
37 36 biimpa ( ( ( 𝑋 ≠ ∅ ∧ 𝐷 ∈ ( PsMet ‘ 𝑋 ) ) ∧ 𝑎 ∈ ( topGen ‘ ran ( ball ‘ 𝐷 ) ) ) → ( 𝑎 ran ( ball ‘ 𝐷 ) ∧ ∀ 𝑥𝑎𝑏 ∈ ran ( ball ‘ 𝐷 ) ( 𝑥𝑏𝑏𝑎 ) ) )
38 37 simpld ( ( ( 𝑋 ≠ ∅ ∧ 𝐷 ∈ ( PsMet ‘ 𝑋 ) ) ∧ 𝑎 ∈ ( topGen ‘ ran ( ball ‘ 𝐷 ) ) ) → 𝑎 ran ( ball ‘ 𝐷 ) )
39 10 ad2antlr ( ( ( 𝑋 ≠ ∅ ∧ 𝐷 ∈ ( PsMet ‘ 𝑋 ) ) ∧ 𝑎 ∈ ( topGen ‘ ran ( ball ‘ 𝐷 ) ) ) → ran ( ball ‘ 𝐷 ) = 𝑋 )
40 38 39 sseqtrd ( ( ( 𝑋 ≠ ∅ ∧ 𝐷 ∈ ( PsMet ‘ 𝑋 ) ) ∧ 𝑎 ∈ ( topGen ‘ ran ( ball ‘ 𝐷 ) ) ) → 𝑎𝑋 )
41 elpwg ( 𝑎 ∈ ( topGen ‘ ran ( ball ‘ 𝐷 ) ) → ( 𝑎 ∈ 𝒫 𝑋𝑎𝑋 ) )
42 41 adantl ( ( ( 𝑋 ≠ ∅ ∧ 𝐷 ∈ ( PsMet ‘ 𝑋 ) ) ∧ 𝑎 ∈ ( topGen ‘ ran ( ball ‘ 𝐷 ) ) ) → ( 𝑎 ∈ 𝒫 𝑋𝑎𝑋 ) )
43 40 42 mpbird ( ( ( 𝑋 ≠ ∅ ∧ 𝐷 ∈ ( PsMet ‘ 𝑋 ) ) ∧ 𝑎 ∈ ( topGen ‘ ran ( ball ‘ 𝐷 ) ) ) → 𝑎 ∈ 𝒫 𝑋 )
44 simpllr ( ( ( ( 𝑋 ≠ ∅ ∧ 𝐷 ∈ ( PsMet ‘ 𝑋 ) ) ∧ 𝑎 ∈ ( topGen ‘ ran ( ball ‘ 𝐷 ) ) ) ∧ 𝑥𝑎 ) → 𝐷 ∈ ( PsMet ‘ 𝑋 ) )
45 40 sselda ( ( ( ( 𝑋 ≠ ∅ ∧ 𝐷 ∈ ( PsMet ‘ 𝑋 ) ) ∧ 𝑎 ∈ ( topGen ‘ ran ( ball ‘ 𝐷 ) ) ) ∧ 𝑥𝑎 ) → 𝑥𝑋 )
46 37 simprd ( ( ( 𝑋 ≠ ∅ ∧ 𝐷 ∈ ( PsMet ‘ 𝑋 ) ) ∧ 𝑎 ∈ ( topGen ‘ ran ( ball ‘ 𝐷 ) ) ) → ∀ 𝑥𝑎𝑏 ∈ ran ( ball ‘ 𝐷 ) ( 𝑥𝑏𝑏𝑎 ) )
47 46 r19.21bi ( ( ( ( 𝑋 ≠ ∅ ∧ 𝐷 ∈ ( PsMet ‘ 𝑋 ) ) ∧ 𝑎 ∈ ( topGen ‘ ran ( ball ‘ 𝐷 ) ) ) ∧ 𝑥𝑎 ) → ∃ 𝑏 ∈ ran ( ball ‘ 𝐷 ) ( 𝑥𝑏𝑏𝑎 ) )
48 blssexps ( ( 𝐷 ∈ ( PsMet ‘ 𝑋 ) ∧ 𝑥𝑋 ) → ( ∃ 𝑏 ∈ ran ( ball ‘ 𝐷 ) ( 𝑥𝑏𝑏𝑎 ) ↔ ∃ 𝑑 ∈ ℝ+ ( 𝑥 ( ball ‘ 𝐷 ) 𝑑 ) ⊆ 𝑎 ) )
49 44 45 48 syl2anc ( ( ( ( 𝑋 ≠ ∅ ∧ 𝐷 ∈ ( PsMet ‘ 𝑋 ) ) ∧ 𝑎 ∈ ( topGen ‘ ran ( ball ‘ 𝐷 ) ) ) ∧ 𝑥𝑎 ) → ( ∃ 𝑏 ∈ ran ( ball ‘ 𝐷 ) ( 𝑥𝑏𝑏𝑎 ) ↔ ∃ 𝑑 ∈ ℝ+ ( 𝑥 ( ball ‘ 𝐷 ) 𝑑 ) ⊆ 𝑎 ) )
50 47 49 mpbid ( ( ( ( 𝑋 ≠ ∅ ∧ 𝐷 ∈ ( PsMet ‘ 𝑋 ) ) ∧ 𝑎 ∈ ( topGen ‘ ran ( ball ‘ 𝐷 ) ) ) ∧ 𝑥𝑎 ) → ∃ 𝑑 ∈ ℝ+ ( 𝑥 ( ball ‘ 𝐷 ) 𝑑 ) ⊆ 𝑎 )
51 blval2 ( ( 𝐷 ∈ ( PsMet ‘ 𝑋 ) ∧ 𝑥𝑋𝑑 ∈ ℝ+ ) → ( 𝑥 ( ball ‘ 𝐷 ) 𝑑 ) = ( ( 𝐷 “ ( 0 [,) 𝑑 ) ) “ { 𝑥 } ) )
52 51 3expa ( ( ( 𝐷 ∈ ( PsMet ‘ 𝑋 ) ∧ 𝑥𝑋 ) ∧ 𝑑 ∈ ℝ+ ) → ( 𝑥 ( ball ‘ 𝐷 ) 𝑑 ) = ( ( 𝐷 “ ( 0 [,) 𝑑 ) ) “ { 𝑥 } ) )
53 52 sseq1d ( ( ( 𝐷 ∈ ( PsMet ‘ 𝑋 ) ∧ 𝑥𝑋 ) ∧ 𝑑 ∈ ℝ+ ) → ( ( 𝑥 ( ball ‘ 𝐷 ) 𝑑 ) ⊆ 𝑎 ↔ ( ( 𝐷 “ ( 0 [,) 𝑑 ) ) “ { 𝑥 } ) ⊆ 𝑎 ) )
54 53 rexbidva ( ( 𝐷 ∈ ( PsMet ‘ 𝑋 ) ∧ 𝑥𝑋 ) → ( ∃ 𝑑 ∈ ℝ+ ( 𝑥 ( ball ‘ 𝐷 ) 𝑑 ) ⊆ 𝑎 ↔ ∃ 𝑑 ∈ ℝ+ ( ( 𝐷 “ ( 0 [,) 𝑑 ) ) “ { 𝑥 } ) ⊆ 𝑎 ) )
55 54 biimpa ( ( ( 𝐷 ∈ ( PsMet ‘ 𝑋 ) ∧ 𝑥𝑋 ) ∧ ∃ 𝑑 ∈ ℝ+ ( 𝑥 ( ball ‘ 𝐷 ) 𝑑 ) ⊆ 𝑎 ) → ∃ 𝑑 ∈ ℝ+ ( ( 𝐷 “ ( 0 [,) 𝑑 ) ) “ { 𝑥 } ) ⊆ 𝑎 )
56 44 45 50 55 syl21anc ( ( ( ( 𝑋 ≠ ∅ ∧ 𝐷 ∈ ( PsMet ‘ 𝑋 ) ) ∧ 𝑎 ∈ ( topGen ‘ ran ( ball ‘ 𝐷 ) ) ) ∧ 𝑥𝑎 ) → ∃ 𝑑 ∈ ℝ+ ( ( 𝐷 “ ( 0 [,) 𝑑 ) ) “ { 𝑥 } ) ⊆ 𝑎 )
57 cnvexg ( 𝐷 ∈ ( PsMet ‘ 𝑋 ) → 𝐷 ∈ V )
58 imaexg ( 𝐷 ∈ V → ( 𝐷 “ ( 0 [,) 𝑑 ) ) ∈ V )
59 57 58 syl ( 𝐷 ∈ ( PsMet ‘ 𝑋 ) → ( 𝐷 “ ( 0 [,) 𝑑 ) ) ∈ V )
60 59 ralrimivw ( 𝐷 ∈ ( PsMet ‘ 𝑋 ) → ∀ 𝑑 ∈ ℝ+ ( 𝐷 “ ( 0 [,) 𝑑 ) ) ∈ V )
61 eqid ( 𝑑 ∈ ℝ+ ↦ ( 𝐷 “ ( 0 [,) 𝑑 ) ) ) = ( 𝑑 ∈ ℝ+ ↦ ( 𝐷 “ ( 0 [,) 𝑑 ) ) )
62 imaeq1 ( 𝑣 = ( 𝐷 “ ( 0 [,) 𝑑 ) ) → ( 𝑣 “ { 𝑥 } ) = ( ( 𝐷 “ ( 0 [,) 𝑑 ) ) “ { 𝑥 } ) )
63 62 sseq1d ( 𝑣 = ( 𝐷 “ ( 0 [,) 𝑑 ) ) → ( ( 𝑣 “ { 𝑥 } ) ⊆ 𝑎 ↔ ( ( 𝐷 “ ( 0 [,) 𝑑 ) ) “ { 𝑥 } ) ⊆ 𝑎 ) )
64 61 63 rexrnmptw ( ∀ 𝑑 ∈ ℝ+ ( 𝐷 “ ( 0 [,) 𝑑 ) ) ∈ V → ( ∃ 𝑣 ∈ ran ( 𝑑 ∈ ℝ+ ↦ ( 𝐷 “ ( 0 [,) 𝑑 ) ) ) ( 𝑣 “ { 𝑥 } ) ⊆ 𝑎 ↔ ∃ 𝑑 ∈ ℝ+ ( ( 𝐷 “ ( 0 [,) 𝑑 ) ) “ { 𝑥 } ) ⊆ 𝑎 ) )
65 44 60 64 3syl ( ( ( ( 𝑋 ≠ ∅ ∧ 𝐷 ∈ ( PsMet ‘ 𝑋 ) ) ∧ 𝑎 ∈ ( topGen ‘ ran ( ball ‘ 𝐷 ) ) ) ∧ 𝑥𝑎 ) → ( ∃ 𝑣 ∈ ran ( 𝑑 ∈ ℝ+ ↦ ( 𝐷 “ ( 0 [,) 𝑑 ) ) ) ( 𝑣 “ { 𝑥 } ) ⊆ 𝑎 ↔ ∃ 𝑑 ∈ ℝ+ ( ( 𝐷 “ ( 0 [,) 𝑑 ) ) “ { 𝑥 } ) ⊆ 𝑎 ) )
66 56 65 mpbird ( ( ( ( 𝑋 ≠ ∅ ∧ 𝐷 ∈ ( PsMet ‘ 𝑋 ) ) ∧ 𝑎 ∈ ( topGen ‘ ran ( ball ‘ 𝐷 ) ) ) ∧ 𝑥𝑎 ) → ∃ 𝑣 ∈ ran ( 𝑑 ∈ ℝ+ ↦ ( 𝐷 “ ( 0 [,) 𝑑 ) ) ) ( 𝑣 “ { 𝑥 } ) ⊆ 𝑎 )
67 oveq2 ( 𝑑 = 𝑒 → ( 0 [,) 𝑑 ) = ( 0 [,) 𝑒 ) )
68 67 imaeq2d ( 𝑑 = 𝑒 → ( 𝐷 “ ( 0 [,) 𝑑 ) ) = ( 𝐷 “ ( 0 [,) 𝑒 ) ) )
69 68 cbvmptv ( 𝑑 ∈ ℝ+ ↦ ( 𝐷 “ ( 0 [,) 𝑑 ) ) ) = ( 𝑒 ∈ ℝ+ ↦ ( 𝐷 “ ( 0 [,) 𝑒 ) ) )
70 69 rneqi ran ( 𝑑 ∈ ℝ+ ↦ ( 𝐷 “ ( 0 [,) 𝑑 ) ) ) = ran ( 𝑒 ∈ ℝ+ ↦ ( 𝐷 “ ( 0 [,) 𝑒 ) ) )
71 70 metustfbas ( ( 𝑋 ≠ ∅ ∧ 𝐷 ∈ ( PsMet ‘ 𝑋 ) ) → ran ( 𝑑 ∈ ℝ+ ↦ ( 𝐷 “ ( 0 [,) 𝑑 ) ) ) ∈ ( fBas ‘ ( 𝑋 × 𝑋 ) ) )
72 ssfg ( ran ( 𝑑 ∈ ℝ+ ↦ ( 𝐷 “ ( 0 [,) 𝑑 ) ) ) ∈ ( fBas ‘ ( 𝑋 × 𝑋 ) ) → ran ( 𝑑 ∈ ℝ+ ↦ ( 𝐷 “ ( 0 [,) 𝑑 ) ) ) ⊆ ( ( 𝑋 × 𝑋 ) filGen ran ( 𝑑 ∈ ℝ+ ↦ ( 𝐷 “ ( 0 [,) 𝑑 ) ) ) ) )
73 71 72 syl ( ( 𝑋 ≠ ∅ ∧ 𝐷 ∈ ( PsMet ‘ 𝑋 ) ) → ran ( 𝑑 ∈ ℝ+ ↦ ( 𝐷 “ ( 0 [,) 𝑑 ) ) ) ⊆ ( ( 𝑋 × 𝑋 ) filGen ran ( 𝑑 ∈ ℝ+ ↦ ( 𝐷 “ ( 0 [,) 𝑑 ) ) ) ) )
74 metuval ( 𝐷 ∈ ( PsMet ‘ 𝑋 ) → ( metUnif ‘ 𝐷 ) = ( ( 𝑋 × 𝑋 ) filGen ran ( 𝑑 ∈ ℝ+ ↦ ( 𝐷 “ ( 0 [,) 𝑑 ) ) ) ) )
75 74 adantl ( ( 𝑋 ≠ ∅ ∧ 𝐷 ∈ ( PsMet ‘ 𝑋 ) ) → ( metUnif ‘ 𝐷 ) = ( ( 𝑋 × 𝑋 ) filGen ran ( 𝑑 ∈ ℝ+ ↦ ( 𝐷 “ ( 0 [,) 𝑑 ) ) ) ) )
76 73 75 sseqtrrd ( ( 𝑋 ≠ ∅ ∧ 𝐷 ∈ ( PsMet ‘ 𝑋 ) ) → ran ( 𝑑 ∈ ℝ+ ↦ ( 𝐷 “ ( 0 [,) 𝑑 ) ) ) ⊆ ( metUnif ‘ 𝐷 ) )
77 ssrexv ( ran ( 𝑑 ∈ ℝ+ ↦ ( 𝐷 “ ( 0 [,) 𝑑 ) ) ) ⊆ ( metUnif ‘ 𝐷 ) → ( ∃ 𝑣 ∈ ran ( 𝑑 ∈ ℝ+ ↦ ( 𝐷 “ ( 0 [,) 𝑑 ) ) ) ( 𝑣 “ { 𝑥 } ) ⊆ 𝑎 → ∃ 𝑣 ∈ ( metUnif ‘ 𝐷 ) ( 𝑣 “ { 𝑥 } ) ⊆ 𝑎 ) )
78 76 77 syl ( ( 𝑋 ≠ ∅ ∧ 𝐷 ∈ ( PsMet ‘ 𝑋 ) ) → ( ∃ 𝑣 ∈ ran ( 𝑑 ∈ ℝ+ ↦ ( 𝐷 “ ( 0 [,) 𝑑 ) ) ) ( 𝑣 “ { 𝑥 } ) ⊆ 𝑎 → ∃ 𝑣 ∈ ( metUnif ‘ 𝐷 ) ( 𝑣 “ { 𝑥 } ) ⊆ 𝑎 ) )
79 78 ad2antrr ( ( ( ( 𝑋 ≠ ∅ ∧ 𝐷 ∈ ( PsMet ‘ 𝑋 ) ) ∧ 𝑎 ∈ ( topGen ‘ ran ( ball ‘ 𝐷 ) ) ) ∧ 𝑥𝑎 ) → ( ∃ 𝑣 ∈ ran ( 𝑑 ∈ ℝ+ ↦ ( 𝐷 “ ( 0 [,) 𝑑 ) ) ) ( 𝑣 “ { 𝑥 } ) ⊆ 𝑎 → ∃ 𝑣 ∈ ( metUnif ‘ 𝐷 ) ( 𝑣 “ { 𝑥 } ) ⊆ 𝑎 ) )
80 66 79 mpd ( ( ( ( 𝑋 ≠ ∅ ∧ 𝐷 ∈ ( PsMet ‘ 𝑋 ) ) ∧ 𝑎 ∈ ( topGen ‘ ran ( ball ‘ 𝐷 ) ) ) ∧ 𝑥𝑎 ) → ∃ 𝑣 ∈ ( metUnif ‘ 𝐷 ) ( 𝑣 “ { 𝑥 } ) ⊆ 𝑎 )
81 80 ralrimiva ( ( ( 𝑋 ≠ ∅ ∧ 𝐷 ∈ ( PsMet ‘ 𝑋 ) ) ∧ 𝑎 ∈ ( topGen ‘ ran ( ball ‘ 𝐷 ) ) ) → ∀ 𝑥𝑎𝑣 ∈ ( metUnif ‘ 𝐷 ) ( 𝑣 “ { 𝑥 } ) ⊆ 𝑎 )
82 43 81 jca ( ( ( 𝑋 ≠ ∅ ∧ 𝐷 ∈ ( PsMet ‘ 𝑋 ) ) ∧ 𝑎 ∈ ( topGen ‘ ran ( ball ‘ 𝐷 ) ) ) → ( 𝑎 ∈ 𝒫 𝑋 ∧ ∀ 𝑥𝑎𝑣 ∈ ( metUnif ‘ 𝐷 ) ( 𝑣 “ { 𝑥 } ) ⊆ 𝑎 ) )
83 6 biimpar ( ( ( 𝑋 ≠ ∅ ∧ 𝐷 ∈ ( PsMet ‘ 𝑋 ) ) ∧ ( 𝑎 ∈ 𝒫 𝑋 ∧ ∀ 𝑥𝑎𝑣 ∈ ( metUnif ‘ 𝐷 ) ( 𝑣 “ { 𝑥 } ) ⊆ 𝑎 ) ) → 𝑎 ∈ ( unifTop ‘ ( metUnif ‘ 𝐷 ) ) )
84 82 83 syldan ( ( ( 𝑋 ≠ ∅ ∧ 𝐷 ∈ ( PsMet ‘ 𝑋 ) ) ∧ 𝑎 ∈ ( topGen ‘ ran ( ball ‘ 𝐷 ) ) ) → 𝑎 ∈ ( unifTop ‘ ( metUnif ‘ 𝐷 ) ) )
85 35 84 impbida ( ( 𝑋 ≠ ∅ ∧ 𝐷 ∈ ( PsMet ‘ 𝑋 ) ) → ( 𝑎 ∈ ( unifTop ‘ ( metUnif ‘ 𝐷 ) ) ↔ 𝑎 ∈ ( topGen ‘ ran ( ball ‘ 𝐷 ) ) ) )
86 85 eqrdv ( ( 𝑋 ≠ ∅ ∧ 𝐷 ∈ ( PsMet ‘ 𝑋 ) ) → ( unifTop ‘ ( metUnif ‘ 𝐷 ) ) = ( topGen ‘ ran ( ball ‘ 𝐷 ) ) )