Metamath Proof Explorer


Theorem dscopn

Description: The discrete metric generates the discrete topology. In particular, the discrete topology is metrizable. (Contributed by Mario Carneiro, 29-Jan-2014)

Ref Expression
Hypothesis dscmet.1 𝐷 = ( 𝑥𝑋 , 𝑦𝑋 ↦ if ( 𝑥 = 𝑦 , 0 , 1 ) )
Assertion dscopn ( 𝑋𝑉 → ( MetOpen ‘ 𝐷 ) = 𝒫 𝑋 )

Proof

Step Hyp Ref Expression
1 dscmet.1 𝐷 = ( 𝑥𝑋 , 𝑦𝑋 ↦ if ( 𝑥 = 𝑦 , 0 , 1 ) )
2 1 dscmet ( 𝑋𝑉𝐷 ∈ ( Met ‘ 𝑋 ) )
3 metxmet ( 𝐷 ∈ ( Met ‘ 𝑋 ) → 𝐷 ∈ ( ∞Met ‘ 𝑋 ) )
4 2 3 syl ( 𝑋𝑉𝐷 ∈ ( ∞Met ‘ 𝑋 ) )
5 eqid ( MetOpen ‘ 𝐷 ) = ( MetOpen ‘ 𝐷 )
6 5 elmopn ( 𝐷 ∈ ( ∞Met ‘ 𝑋 ) → ( 𝑢 ∈ ( MetOpen ‘ 𝐷 ) ↔ ( 𝑢𝑋 ∧ ∀ 𝑣𝑢𝑤 ∈ ran ( ball ‘ 𝐷 ) ( 𝑣𝑤𝑤𝑢 ) ) ) )
7 4 6 syl ( 𝑋𝑉 → ( 𝑢 ∈ ( MetOpen ‘ 𝐷 ) ↔ ( 𝑢𝑋 ∧ ∀ 𝑣𝑢𝑤 ∈ ran ( ball ‘ 𝐷 ) ( 𝑣𝑤𝑤𝑢 ) ) ) )
8 simpll ( ( ( 𝑋𝑉𝑢𝑋 ) ∧ 𝑣𝑢 ) → 𝑋𝑉 )
9 ssel2 ( ( 𝑢𝑋𝑣𝑢 ) → 𝑣𝑋 )
10 9 adantll ( ( ( 𝑋𝑉𝑢𝑋 ) ∧ 𝑣𝑢 ) → 𝑣𝑋 )
11 8 10 jca ( ( ( 𝑋𝑉𝑢𝑋 ) ∧ 𝑣𝑢 ) → ( 𝑋𝑉𝑣𝑋 ) )
12 velsn ( 𝑤 ∈ { 𝑣 } ↔ 𝑤 = 𝑣 )
13 eleq1a ( 𝑣𝑋 → ( 𝑤 = 𝑣𝑤𝑋 ) )
14 simpl ( ( 𝑤𝑋 ∧ ( 𝑣 𝐷 𝑤 ) < 1 ) → 𝑤𝑋 )
15 14 a1i ( 𝑣𝑋 → ( ( 𝑤𝑋 ∧ ( 𝑣 𝐷 𝑤 ) < 1 ) → 𝑤𝑋 ) )
16 eqeq12 ( ( 𝑥 = 𝑣𝑦 = 𝑤 ) → ( 𝑥 = 𝑦𝑣 = 𝑤 ) )
17 16 ifbid ( ( 𝑥 = 𝑣𝑦 = 𝑤 ) → if ( 𝑥 = 𝑦 , 0 , 1 ) = if ( 𝑣 = 𝑤 , 0 , 1 ) )
18 0re 0 ∈ ℝ
19 1re 1 ∈ ℝ
20 18 19 ifcli if ( 𝑣 = 𝑤 , 0 , 1 ) ∈ ℝ
21 20 elexi if ( 𝑣 = 𝑤 , 0 , 1 ) ∈ V
22 17 1 21 ovmpoa ( ( 𝑣𝑋𝑤𝑋 ) → ( 𝑣 𝐷 𝑤 ) = if ( 𝑣 = 𝑤 , 0 , 1 ) )
23 22 breq1d ( ( 𝑣𝑋𝑤𝑋 ) → ( ( 𝑣 𝐷 𝑤 ) < 1 ↔ if ( 𝑣 = 𝑤 , 0 , 1 ) < 1 ) )
24 19 ltnri ¬ 1 < 1
25 iffalse ( ¬ 𝑣 = 𝑤 → if ( 𝑣 = 𝑤 , 0 , 1 ) = 1 )
26 25 breq1d ( ¬ 𝑣 = 𝑤 → ( if ( 𝑣 = 𝑤 , 0 , 1 ) < 1 ↔ 1 < 1 ) )
27 24 26 mtbiri ( ¬ 𝑣 = 𝑤 → ¬ if ( 𝑣 = 𝑤 , 0 , 1 ) < 1 )
28 27 con4i ( if ( 𝑣 = 𝑤 , 0 , 1 ) < 1 → 𝑣 = 𝑤 )
29 iftrue ( 𝑣 = 𝑤 → if ( 𝑣 = 𝑤 , 0 , 1 ) = 0 )
30 0lt1 0 < 1
31 29 30 eqbrtrdi ( 𝑣 = 𝑤 → if ( 𝑣 = 𝑤 , 0 , 1 ) < 1 )
32 28 31 impbii ( if ( 𝑣 = 𝑤 , 0 , 1 ) < 1 ↔ 𝑣 = 𝑤 )
33 equcom ( 𝑣 = 𝑤𝑤 = 𝑣 )
34 32 33 bitri ( if ( 𝑣 = 𝑤 , 0 , 1 ) < 1 ↔ 𝑤 = 𝑣 )
35 23 34 bitr2di ( ( 𝑣𝑋𝑤𝑋 ) → ( 𝑤 = 𝑣 ↔ ( 𝑣 𝐷 𝑤 ) < 1 ) )
36 simpr ( ( 𝑣𝑋𝑤𝑋 ) → 𝑤𝑋 )
37 36 biantrurd ( ( 𝑣𝑋𝑤𝑋 ) → ( ( 𝑣 𝐷 𝑤 ) < 1 ↔ ( 𝑤𝑋 ∧ ( 𝑣 𝐷 𝑤 ) < 1 ) ) )
38 35 37 bitrd ( ( 𝑣𝑋𝑤𝑋 ) → ( 𝑤 = 𝑣 ↔ ( 𝑤𝑋 ∧ ( 𝑣 𝐷 𝑤 ) < 1 ) ) )
39 38 ex ( 𝑣𝑋 → ( 𝑤𝑋 → ( 𝑤 = 𝑣 ↔ ( 𝑤𝑋 ∧ ( 𝑣 𝐷 𝑤 ) < 1 ) ) ) )
40 13 15 39 pm5.21ndd ( 𝑣𝑋 → ( 𝑤 = 𝑣 ↔ ( 𝑤𝑋 ∧ ( 𝑣 𝐷 𝑤 ) < 1 ) ) )
41 40 adantl ( ( 𝑋𝑉𝑣𝑋 ) → ( 𝑤 = 𝑣 ↔ ( 𝑤𝑋 ∧ ( 𝑣 𝐷 𝑤 ) < 1 ) ) )
42 1xr 1 ∈ ℝ*
43 elbl ( ( 𝐷 ∈ ( ∞Met ‘ 𝑋 ) ∧ 𝑣𝑋 ∧ 1 ∈ ℝ* ) → ( 𝑤 ∈ ( 𝑣 ( ball ‘ 𝐷 ) 1 ) ↔ ( 𝑤𝑋 ∧ ( 𝑣 𝐷 𝑤 ) < 1 ) ) )
44 42 43 mp3an3 ( ( 𝐷 ∈ ( ∞Met ‘ 𝑋 ) ∧ 𝑣𝑋 ) → ( 𝑤 ∈ ( 𝑣 ( ball ‘ 𝐷 ) 1 ) ↔ ( 𝑤𝑋 ∧ ( 𝑣 𝐷 𝑤 ) < 1 ) ) )
45 4 44 sylan ( ( 𝑋𝑉𝑣𝑋 ) → ( 𝑤 ∈ ( 𝑣 ( ball ‘ 𝐷 ) 1 ) ↔ ( 𝑤𝑋 ∧ ( 𝑣 𝐷 𝑤 ) < 1 ) ) )
46 41 45 bitr4d ( ( 𝑋𝑉𝑣𝑋 ) → ( 𝑤 = 𝑣𝑤 ∈ ( 𝑣 ( ball ‘ 𝐷 ) 1 ) ) )
47 12 46 syl5bb ( ( 𝑋𝑉𝑣𝑋 ) → ( 𝑤 ∈ { 𝑣 } ↔ 𝑤 ∈ ( 𝑣 ( ball ‘ 𝐷 ) 1 ) ) )
48 47 eqrdv ( ( 𝑋𝑉𝑣𝑋 ) → { 𝑣 } = ( 𝑣 ( ball ‘ 𝐷 ) 1 ) )
49 blelrn ( ( 𝐷 ∈ ( ∞Met ‘ 𝑋 ) ∧ 𝑣𝑋 ∧ 1 ∈ ℝ* ) → ( 𝑣 ( ball ‘ 𝐷 ) 1 ) ∈ ran ( ball ‘ 𝐷 ) )
50 42 49 mp3an3 ( ( 𝐷 ∈ ( ∞Met ‘ 𝑋 ) ∧ 𝑣𝑋 ) → ( 𝑣 ( ball ‘ 𝐷 ) 1 ) ∈ ran ( ball ‘ 𝐷 ) )
51 4 50 sylan ( ( 𝑋𝑉𝑣𝑋 ) → ( 𝑣 ( ball ‘ 𝐷 ) 1 ) ∈ ran ( ball ‘ 𝐷 ) )
52 48 51 eqeltrd ( ( 𝑋𝑉𝑣𝑋 ) → { 𝑣 } ∈ ran ( ball ‘ 𝐷 ) )
53 snssi ( 𝑣𝑢 → { 𝑣 } ⊆ 𝑢 )
54 vsnid 𝑣 ∈ { 𝑣 }
55 53 54 jctil ( 𝑣𝑢 → ( 𝑣 ∈ { 𝑣 } ∧ { 𝑣 } ⊆ 𝑢 ) )
56 eleq2 ( 𝑤 = { 𝑣 } → ( 𝑣𝑤𝑣 ∈ { 𝑣 } ) )
57 sseq1 ( 𝑤 = { 𝑣 } → ( 𝑤𝑢 ↔ { 𝑣 } ⊆ 𝑢 ) )
58 56 57 anbi12d ( 𝑤 = { 𝑣 } → ( ( 𝑣𝑤𝑤𝑢 ) ↔ ( 𝑣 ∈ { 𝑣 } ∧ { 𝑣 } ⊆ 𝑢 ) ) )
59 58 rspcev ( ( { 𝑣 } ∈ ran ( ball ‘ 𝐷 ) ∧ ( 𝑣 ∈ { 𝑣 } ∧ { 𝑣 } ⊆ 𝑢 ) ) → ∃ 𝑤 ∈ ran ( ball ‘ 𝐷 ) ( 𝑣𝑤𝑤𝑢 ) )
60 52 55 59 syl2an ( ( ( 𝑋𝑉𝑣𝑋 ) ∧ 𝑣𝑢 ) → ∃ 𝑤 ∈ ran ( ball ‘ 𝐷 ) ( 𝑣𝑤𝑤𝑢 ) )
61 11 60 sylancom ( ( ( 𝑋𝑉𝑢𝑋 ) ∧ 𝑣𝑢 ) → ∃ 𝑤 ∈ ran ( ball ‘ 𝐷 ) ( 𝑣𝑤𝑤𝑢 ) )
62 61 ralrimiva ( ( 𝑋𝑉𝑢𝑋 ) → ∀ 𝑣𝑢𝑤 ∈ ran ( ball ‘ 𝐷 ) ( 𝑣𝑤𝑤𝑢 ) )
63 62 ex ( 𝑋𝑉 → ( 𝑢𝑋 → ∀ 𝑣𝑢𝑤 ∈ ran ( ball ‘ 𝐷 ) ( 𝑣𝑤𝑤𝑢 ) ) )
64 63 pm4.71d ( 𝑋𝑉 → ( 𝑢𝑋 ↔ ( 𝑢𝑋 ∧ ∀ 𝑣𝑢𝑤 ∈ ran ( ball ‘ 𝐷 ) ( 𝑣𝑤𝑤𝑢 ) ) ) )
65 7 64 bitr4d ( 𝑋𝑉 → ( 𝑢 ∈ ( MetOpen ‘ 𝐷 ) ↔ 𝑢𝑋 ) )
66 velpw ( 𝑢 ∈ 𝒫 𝑋𝑢𝑋 )
67 65 66 bitr4di ( 𝑋𝑉 → ( 𝑢 ∈ ( MetOpen ‘ 𝐷 ) ↔ 𝑢 ∈ 𝒫 𝑋 ) )
68 67 eqrdv ( 𝑋𝑉 → ( MetOpen ‘ 𝐷 ) = 𝒫 𝑋 )