Metamath Proof Explorer


Theorem ismet2

Description: An extended metric is a metric exactly when it takes real values for all values of the arguments. (Contributed by Mario Carneiro, 20-Aug-2015)

Ref Expression
Assertion ismet2
|- ( D e. ( Met ` X ) <-> ( D e. ( *Met ` X ) /\ D : ( X X. X ) --> RR ) )

Proof

Step Hyp Ref Expression
1 elfvex
 |-  ( D e. ( Met ` X ) -> X e. _V )
2 elfvex
 |-  ( D e. ( *Met ` X ) -> X e. _V )
3 2 adantr
 |-  ( ( D e. ( *Met ` X ) /\ D : ( X X. X ) --> RR ) -> X e. _V )
4 simpllr
 |-  ( ( ( ( X e. _V /\ D : ( X X. X ) --> RR ) /\ ( x e. X /\ y e. X ) ) /\ z e. X ) -> D : ( X X. X ) --> RR )
5 simpr
 |-  ( ( ( ( X e. _V /\ D : ( X X. X ) --> RR ) /\ ( x e. X /\ y e. X ) ) /\ z e. X ) -> z e. X )
6 simplrl
 |-  ( ( ( ( X e. _V /\ D : ( X X. X ) --> RR ) /\ ( x e. X /\ y e. X ) ) /\ z e. X ) -> x e. X )
7 4 5 6 fovrnd
 |-  ( ( ( ( X e. _V /\ D : ( X X. X ) --> RR ) /\ ( x e. X /\ y e. X ) ) /\ z e. X ) -> ( z D x ) e. RR )
8 simplrr
 |-  ( ( ( ( X e. _V /\ D : ( X X. X ) --> RR ) /\ ( x e. X /\ y e. X ) ) /\ z e. X ) -> y e. X )
9 4 5 8 fovrnd
 |-  ( ( ( ( X e. _V /\ D : ( X X. X ) --> RR ) /\ ( x e. X /\ y e. X ) ) /\ z e. X ) -> ( z D y ) e. RR )
10 7 9 rexaddd
 |-  ( ( ( ( X e. _V /\ D : ( X X. X ) --> RR ) /\ ( x e. X /\ y e. X ) ) /\ z e. X ) -> ( ( z D x ) +e ( z D y ) ) = ( ( z D x ) + ( z D y ) ) )
11 10 breq2d
 |-  ( ( ( ( X e. _V /\ D : ( X X. X ) --> RR ) /\ ( x e. X /\ y e. X ) ) /\ z e. X ) -> ( ( x D y ) <_ ( ( z D x ) +e ( z D y ) ) <-> ( x D y ) <_ ( ( z D x ) + ( z D y ) ) ) )
12 11 ralbidva
 |-  ( ( ( X e. _V /\ D : ( X X. X ) --> RR ) /\ ( x e. X /\ y e. X ) ) -> ( A. z e. X ( x D y ) <_ ( ( z D x ) +e ( z D y ) ) <-> A. z e. X ( x D y ) <_ ( ( z D x ) + ( z D y ) ) ) )
13 12 anbi2d
 |-  ( ( ( X e. _V /\ D : ( X X. X ) --> RR ) /\ ( x e. X /\ y e. X ) ) -> ( ( ( ( x D y ) = 0 <-> x = y ) /\ A. z e. X ( x D y ) <_ ( ( z D x ) +e ( z D y ) ) ) <-> ( ( ( x D y ) = 0 <-> x = y ) /\ A. z e. X ( x D y ) <_ ( ( z D x ) + ( z D y ) ) ) ) )
14 13 2ralbidva
 |-  ( ( X e. _V /\ 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 ) +e ( 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 ) ) ) ) )
15 simpr
 |-  ( ( X e. _V /\ D : ( X X. X ) --> RR ) -> D : ( X X. X ) --> RR )
16 ressxr
 |-  RR C_ RR*
17 fss
 |-  ( ( D : ( X X. X ) --> RR /\ RR C_ RR* ) -> D : ( X X. X ) --> RR* )
18 15 16 17 sylancl
 |-  ( ( X e. _V /\ D : ( X X. X ) --> RR ) -> D : ( X X. X ) --> RR* )
19 18 biantrurd
 |-  ( ( X e. _V /\ 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 ) +e ( 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 ) +e ( z D y ) ) ) ) ) )
20 14 19 bitr3d
 |-  ( ( X e. _V /\ 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 ) ) ) <-> ( 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 ) +e ( z D y ) ) ) ) ) )
21 20 pm5.32da
 |-  ( X e. _V -> ( ( 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 ) ) ) ) <-> ( D : ( X X. X ) --> RR /\ ( 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 ) +e ( z D y ) ) ) ) ) ) )
22 21 biancomd
 |-  ( X e. _V -> ( ( 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 ) ) ) ) <-> ( ( 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 ) +e ( z D y ) ) ) ) /\ D : ( X X. X ) --> RR ) ) )
23 ismet
 |-  ( X e. _V -> ( 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 ) ) ) ) ) )
24 isxmet
 |-  ( X e. _V -> ( 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 ) +e ( z D y ) ) ) ) ) )
25 24 anbi1d
 |-  ( X e. _V -> ( ( D e. ( *Met ` X ) /\ D : ( X X. X ) --> RR ) <-> ( ( 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 ) +e ( z D y ) ) ) ) /\ D : ( X X. X ) --> RR ) ) )
26 22 23 25 3bitr4d
 |-  ( X e. _V -> ( D e. ( Met ` X ) <-> ( D e. ( *Met ` X ) /\ D : ( X X. X ) --> RR ) ) )
27 1 3 26 pm5.21nii
 |-  ( D e. ( Met ` X ) <-> ( D e. ( *Met ` X ) /\ D : ( X X. X ) --> RR ) )