Metamath Proof Explorer


Theorem ismet

Description: Express the predicate " D is a metric." (Contributed by NM, 25-Aug-2006) (Revised by Mario Carneiro, 14-Aug-2015)

Ref Expression
Assertion ismet
|- ( X e. A -> ( D e. ( Met ` X ) <-> ( D : ( X X. X ) --> RR /\ A. x e. X A. y e. X ( ( ( x D y ) = 0 <-> x = y ) /\ A. z e. X ( x D y ) <_ ( ( z D x ) + ( z D y ) ) ) ) ) )

Proof

Step Hyp Ref Expression
1 elex
 |-  ( X e. A -> X e. _V )
2 xpeq12
 |-  ( ( t = X /\ t = X ) -> ( t X. t ) = ( X X. X ) )
3 2 anidms
 |-  ( t = X -> ( t X. t ) = ( X X. X ) )
4 3 oveq2d
 |-  ( t = X -> ( RR ^m ( t X. t ) ) = ( RR ^m ( X X. X ) ) )
5 raleq
 |-  ( t = X -> ( A. z e. t ( x d y ) <_ ( ( z d x ) + ( z d y ) ) <-> A. z e. X ( x d y ) <_ ( ( z d x ) + ( z d y ) ) ) )
6 5 anbi2d
 |-  ( t = X -> ( ( ( ( x d y ) = 0 <-> x = y ) /\ A. z e. t ( x d y ) <_ ( ( z d x ) + ( z d y ) ) ) <-> ( ( ( x d y ) = 0 <-> x = y ) /\ A. z e. X ( x d y ) <_ ( ( z d x ) + ( z d y ) ) ) ) )
7 6 raleqbi1dv
 |-  ( t = X -> ( A. y e. t ( ( ( x d y ) = 0 <-> x = y ) /\ A. z e. t ( x d y ) <_ ( ( z d x ) + ( z d y ) ) ) <-> A. y e. X ( ( ( x d y ) = 0 <-> x = y ) /\ A. z e. X ( x d y ) <_ ( ( z d x ) + ( z d y ) ) ) ) )
8 7 raleqbi1dv
 |-  ( t = X -> ( A. x e. t A. y e. t ( ( ( x d y ) = 0 <-> x = y ) /\ A. z e. t ( x d y ) <_ ( ( z d x ) + ( z d y ) ) ) <-> A. x e. X A. y e. X ( ( ( x d y ) = 0 <-> x = y ) /\ A. z e. X ( x d y ) <_ ( ( z d x ) + ( z d y ) ) ) ) )
9 4 8 rabeqbidv
 |-  ( t = X -> { d e. ( RR ^m ( t X. t ) ) | A. x e. t A. y e. t ( ( ( x d y ) = 0 <-> x = y ) /\ A. z e. t ( x d y ) <_ ( ( z d x ) + ( z d y ) ) ) } = { d e. ( RR ^m ( X X. X ) ) | A. x e. X A. y e. X ( ( ( x d y ) = 0 <-> x = y ) /\ A. z e. X ( x d y ) <_ ( ( z d x ) + ( z d y ) ) ) } )
10 df-met
 |-  Met = ( t e. _V |-> { d e. ( RR ^m ( t X. t ) ) | A. x e. t A. y e. t ( ( ( x d y ) = 0 <-> x = y ) /\ A. z e. t ( x d y ) <_ ( ( z d x ) + ( z d y ) ) ) } )
11 ovex
 |-  ( RR ^m ( X X. X ) ) e. _V
12 11 rabex
 |-  { d e. ( RR ^m ( X X. X ) ) | A. x e. X A. y e. X ( ( ( x d y ) = 0 <-> x = y ) /\ A. z e. X ( x d y ) <_ ( ( z d x ) + ( z d y ) ) ) } e. _V
13 9 10 12 fvmpt
 |-  ( X e. _V -> ( Met ` X ) = { d e. ( RR ^m ( X X. X ) ) | A. x e. X A. y e. X ( ( ( x d y ) = 0 <-> x = y ) /\ A. z e. X ( x d y ) <_ ( ( z d x ) + ( z d y ) ) ) } )
14 1 13 syl
 |-  ( X e. A -> ( Met ` X ) = { d e. ( RR ^m ( X X. X ) ) | A. x e. X A. y e. X ( ( ( x d y ) = 0 <-> x = y ) /\ A. z e. X ( x d y ) <_ ( ( z d x ) + ( z d y ) ) ) } )
15 14 eleq2d
 |-  ( X e. A -> ( D e. ( Met ` X ) <-> D e. { d e. ( RR ^m ( X X. X ) ) | A. x e. X A. y e. X ( ( ( x d y ) = 0 <-> x = y ) /\ A. z e. X ( x d y ) <_ ( ( z d x ) + ( z d y ) ) ) } ) )
16 oveq
 |-  ( d = D -> ( x d y ) = ( x D y ) )
17 16 eqeq1d
 |-  ( d = D -> ( ( x d y ) = 0 <-> ( x D y ) = 0 ) )
18 17 bibi1d
 |-  ( d = D -> ( ( ( x d y ) = 0 <-> x = y ) <-> ( ( x D y ) = 0 <-> x = y ) ) )
19 oveq
 |-  ( d = D -> ( z d x ) = ( z D x ) )
20 oveq
 |-  ( d = D -> ( z d y ) = ( z D y ) )
21 19 20 oveq12d
 |-  ( d = D -> ( ( z d x ) + ( z d y ) ) = ( ( z D x ) + ( z D y ) ) )
22 16 21 breq12d
 |-  ( d = D -> ( ( x d y ) <_ ( ( z d x ) + ( z d y ) ) <-> ( x D y ) <_ ( ( z D x ) + ( z D y ) ) ) )
23 22 ralbidv
 |-  ( d = D -> ( A. z e. X ( x d y ) <_ ( ( z d x ) + ( z d y ) ) <-> A. z e. X ( x D y ) <_ ( ( z D x ) + ( z D y ) ) ) )
24 18 23 anbi12d
 |-  ( d = D -> ( ( ( ( x d y ) = 0 <-> x = y ) /\ A. z e. X ( x d y ) <_ ( ( z d x ) + ( z d y ) ) ) <-> ( ( ( x D y ) = 0 <-> x = y ) /\ A. z e. X ( x D y ) <_ ( ( z D x ) + ( z D y ) ) ) ) )
25 24 2ralbidv
 |-  ( d = D -> ( A. x e. X A. y e. X ( ( ( x d y ) = 0 <-> x = y ) /\ A. z e. X ( x d y ) <_ ( ( z d x ) + ( z d y ) ) ) <-> A. x e. X A. y e. X ( ( ( x D y ) = 0 <-> x = y ) /\ A. z e. X ( x D y ) <_ ( ( z D x ) + ( z D y ) ) ) ) )
26 25 elrab
 |-  ( D e. { d e. ( RR ^m ( X X. X ) ) | A. x e. X A. y e. X ( ( ( x d y ) = 0 <-> x = y ) /\ A. z e. X ( x d y ) <_ ( ( z d x ) + ( z d y ) ) ) } <-> ( D e. ( RR ^m ( X X. X ) ) /\ A. x e. X A. y e. X ( ( ( x D y ) = 0 <-> x = y ) /\ A. z e. X ( x D y ) <_ ( ( z D x ) + ( z D y ) ) ) ) )
27 15 26 bitrdi
 |-  ( X e. A -> ( D e. ( Met ` X ) <-> ( D e. ( RR ^m ( X X. X ) ) /\ A. x e. X A. y e. X ( ( ( x D y ) = 0 <-> x = y ) /\ A. z e. X ( x D y ) <_ ( ( z D x ) + ( z D y ) ) ) ) ) )
28 reex
 |-  RR e. _V
29 sqxpexg
 |-  ( X e. A -> ( X X. X ) e. _V )
30 elmapg
 |-  ( ( RR e. _V /\ ( X X. X ) e. _V ) -> ( D e. ( RR ^m ( X X. X ) ) <-> D : ( X X. X ) --> RR ) )
31 28 29 30 sylancr
 |-  ( X e. A -> ( D e. ( RR ^m ( X X. X ) ) <-> D : ( X X. X ) --> RR ) )
32 31 anbi1d
 |-  ( X e. A -> ( ( D e. ( RR ^m ( X X. X ) ) /\ A. x e. X A. y e. X ( ( ( x D y ) = 0 <-> x = y ) /\ A. z e. X ( x D y ) <_ ( ( z D x ) + ( z D y ) ) ) ) <-> ( D : ( X X. X ) --> RR /\ A. x e. X A. y e. X ( ( ( x D y ) = 0 <-> x = y ) /\ A. z e. X ( x D y ) <_ ( ( z D x ) + ( z D y ) ) ) ) ) )
33 27 32 bitrd
 |-  ( X e. A -> ( D e. ( Met ` X ) <-> ( D : ( X X. X ) --> RR /\ A. x e. X A. y e. X ( ( ( x D y ) = 0 <-> x = y ) /\ A. z e. X ( x D y ) <_ ( ( z D x ) + ( z D y ) ) ) ) ) )