let S, T be non empty MetrSpace; :: thesis: for f being Function of (TopSpaceMetr S),(TopSpaceMetr T) st TopSpaceMetr S is compact holds
( f is continuous iff for e being Real st 0 < e holds
ex d being Real st
( 0 < d & ( for x1, x2 being Point of S st dist (x1,x2) < d holds
dist ((In ((f /. x1),T)),(In ((f /. x2),T))) < e ) ) )

let f be Function of (TopSpaceMetr S),(TopSpaceMetr T); :: thesis: ( TopSpaceMetr S is compact implies ( f is continuous iff for e being Real st 0 < e holds
ex d being Real st
( 0 < d & ( for x1, x2 being Point of S st dist (x1,x2) < d holds
dist ((In ((f /. x1),T)),(In ((f /. x2),T))) < e ) ) ) )

assume A1: TopSpaceMetr S is compact ; :: thesis: ( f is continuous iff for e being Real st 0 < e holds
ex d being Real st
( 0 < d & ( for x1, x2 being Point of S st dist (x1,x2) < d holds
dist ((In ((f /. x1),T)),(In ((f /. x2),T))) < e ) ) )

set V = TopSpaceMetr S;
hereby :: thesis: ( ( for e being Real st 0 < e holds
ex d being Real st
( 0 < d & ( for x1, x2 being Point of S st dist (x1,x2) < d holds
dist ((In ((f /. x1),T)),(In ((f /. x2),T))) < e ) ) ) implies f is continuous )
assume A2: f is continuous ; :: thesis: for e being Real st 0 < e holds
ex d being Real st
( 0 < d & ( for x1, x2 being Point of S st dist (x1,x2) < d holds
dist ((In ((f /. x1),T)),(In ((f /. x2),T))) < e ) )

let e be Real; :: thesis: ( 0 < e implies ex d being Real st
( 0 < d & ( for x1, x2 being Point of S st dist (x1,x2) < d holds
dist ((In ((f /. x1),T)),(In ((f /. x2),T))) < e ) ) )

assume A3: 0 < e ; :: thesis: ex d being Real st
( 0 < d & ( for x1, x2 being Point of S st dist (x1,x2) < d holds
dist ((In ((f /. x1),T)),(In ((f /. x2),T))) < e ) )

A4: [#] (TopSpaceMetr S) is compact by A1, COMPTS_1:1;
defpred S1[ Element of S, Real] means ( 0 < $2 & ( for x being Point of S st dist (x,$1) < $2 holds
dist ((In ((f /. x),T)),(In ((f /. $1),T))) < e / 2 ) );
A5: for x0 being Element of the carrier of S ex d being Element of REAL st S1[x0,d]
proof
let x0 be Element of the carrier of S; :: thesis: ex d being Element of REAL st S1[x0,d]
reconsider xx0 = x0 as Point of (TopSpaceMetr S) ;
consider H being Subset of (TopSpaceMetr S) such that
A6: ( H is open & xx0 in H & ( for y being Point of (TopSpaceMetr S) st y in H holds
dist ((In ((f . xx0),T)),(In ((f . y),T))) < e / 2 ) ) by A3, Th2, A2, TMAP_1:50;
consider d being Real such that
A7: ( d > 0 & Ball (x0,d) c= H ) by PCOMPS_1:def 4, A6;
reconsider d = d as Element of REAL by XREAL_0:def 1;
take d ; :: thesis: S1[x0,d]
for x being Point of S st dist (x,x0) < d holds
dist ((In ((f /. x),T)),(In ((f /. x0),T))) < e / 2
proof
let x be Point of S; :: thesis: ( dist (x,x0) < d implies dist ((In ((f /. x),T)),(In ((f /. x0),T))) < e / 2 )
assume dist (x,x0) < d ; :: thesis: dist ((In ((f /. x),T)),(In ((f /. x0),T))) < e / 2
then A8: x in Ball (x0,d) by METRIC_1:11;
reconsider y = x as Point of (TopSpaceMetr S) ;
A9: dist ((In ((f . xx0),T)),(In ((f . y),T))) < e / 2 by A6, A8, A7;
( f . xx0 = f /. xx0 & f . y = f /. y ) ;
hence dist ((In ((f /. x),T)),(In ((f /. x0),T))) < e / 2 by A9; :: thesis: verum
end;
hence S1[x0,d] by A7; :: thesis: verum
end;
consider D being Function of the carrier of S,REAL such that
A10: for x0 being Element of the carrier of S holds S1[x0,D . x0] from FUNCT_2:sch 3(A5);
set CV = { (Ball (x0,((D . x0) / 2))) where x0 is Element of S : verum } ;
{ (Ball (x0,((D . x0) / 2))) where x0 is Element of S : verum } c= bool the carrier of (TopSpaceMetr S)
proof
let z be object ; :: according to TARSKI:def 3 :: thesis: ( not z in { (Ball (x0,((D . x0) / 2))) where x0 is Element of S : verum } or z in bool the carrier of (TopSpaceMetr S) )
assume z in { (Ball (x0,((D . x0) / 2))) where x0 is Element of S : verum } ; :: thesis: z in bool the carrier of (TopSpaceMetr S)
then consider x0 being Point of S such that
A11: z = Ball (x0,((D . x0) / 2)) ;
thus z in bool the carrier of (TopSpaceMetr S) by A11; :: thesis: verum
end;
then reconsider CV = { (Ball (x0,((D . x0) / 2))) where x0 is Element of S : verum } as Subset-Family of (TopSpaceMetr S) ;
for P being Subset of (TopSpaceMetr S) st P in CV holds
P is open
proof
let P be Subset of (TopSpaceMetr S); :: thesis: ( P in CV implies P is open )
assume P in CV ; :: thesis: P is open
then consider x0 being Point of S such that
A12: P = Ball (x0,((D . x0) / 2)) ;
thus P is open by A12, PCOMPS_1:29; :: thesis: verum
end;
then A13: CV is open by TOPS_2:def 1;
the carrier of (TopSpaceMetr S) c= union CV
proof
let z be object ; :: according to TARSKI:def 3 :: thesis: ( not z in the carrier of (TopSpaceMetr S) or z in union CV )
assume z in the carrier of (TopSpaceMetr S) ; :: thesis: z in union CV
then reconsider x0 = z as Point of S ;
A14: Ball (x0,((D . x0) / 2)) in CV ;
0 < (D . x0) / 2 by A10, XREAL_1:215;
then dist (x0,x0) < (D . x0) / 2 by METRIC_1:1;
then x0 in { y where y is Element of S : dist (x0,y) < (D . x0) / 2 } ;
then x0 in Ball (x0,((D . x0) / 2)) by METRIC_1:def 14;
hence z in union CV by TARSKI:def 4, A14; :: thesis: verum
end;
then consider G being Subset-Family of (TopSpaceMetr S) such that
A15: ( G c= CV & G is Cover of [#] (TopSpaceMetr S) & G is finite ) by COMPTS_1:def 4, A4, A13, SETFAM_1:def 11;
defpred S2[ object , object ] means ex x0 being Point of S st
( $2 = x0 & $1 = Ball (x0,((D . x0) / 2)) );
A16: for Z being object st Z in G holds
ex x0 being object st
( x0 in the carrier of S & S2[Z,x0] )
proof
let Z be object ; :: thesis: ( Z in G implies ex x0 being object st
( x0 in the carrier of S & S2[Z,x0] ) )

assume Z in G ; :: thesis: ex x0 being object st
( x0 in the carrier of S & S2[Z,x0] )

then Z in CV by A15;
then consider x0 being Point of S such that
A17: Z = Ball (x0,((D . x0) / 2)) ;
take x0 ; :: thesis: ( x0 in the carrier of S & S2[Z,x0] )
thus ( x0 in the carrier of S & S2[Z,x0] ) by A17; :: thesis: verum
end;
consider H being Function of G, the carrier of S such that
A18: for Z being object st Z in G holds
S2[Z,H . Z] from FUNCT_2:sch 1(A16);
A19: for Z being object st Z in G holds
Z = Ball ((H /. Z),((D . (H . Z)) / 2))
proof
let Z be object ; :: thesis: ( Z in G implies Z = Ball ((H /. Z),((D . (H . Z)) / 2)) )
assume A20: Z in G ; :: thesis: Z = Ball ((H /. Z),((D . (H . Z)) / 2))
then A21: ex x0 being Point of S st
( H . Z = x0 & Z = Ball (x0,((D . x0) / 2)) ) by A18;
dom H = G by FUNCT_2:def 1;
hence Z = Ball ((H /. Z),((D . (H . Z)) / 2)) by A21, A20, PARTFUN1:def 6; :: thesis: verum
end;
A22: dom H = G by FUNCT_2:def 1;
reconsider D0 = D .: (rng H) as finite Subset of REAL by A15;
A23: dom D = the carrier of S by FUNCT_2:def 1;
G <> {}
proof end;
then consider xx being object such that
A24: xx in G by XBOOLE_0:def 1;
rng H <> {} by A22, A24, FUNCT_1:3;
then consider xx being object such that
A25: xx in rng H by XBOOLE_0:def 1;
reconsider xx = xx as Point of S by A25;
set d0 = lower_bound D0;
A26: for r being Real st r in D0 holds
lower_bound D0 <= r by SEQ_4:def 2;
lower_bound D0 in D0 by SEQ_4:133, A25;
then consider xx being object such that
A27: ( xx in dom D & xx in rng H & lower_bound D0 = D . xx ) by FUNCT_1:def 6;
reconsider xx = xx as Point of S by A27;
A28: 0 < lower_bound D0 by A27, A10;
reconsider d = (lower_bound D0) / 2 as Real ;
take d = d; :: thesis: ( 0 < d & ( for x1, x2 being Point of S st dist (x1,x2) < d holds
dist ((In ((f /. x1),T)),(In ((f /. x2),T))) < e ) )

thus 0 < d by A28; :: thesis: for x1, x2 being Point of S st dist (x1,x2) < d holds
dist ((In ((f /. x1),T)),(In ((f /. x2),T))) < e

thus for x1, x2 being Point of S st dist (x1,x2) < d holds
dist ((In ((f /. x1),T)),(In ((f /. x2),T))) < e :: thesis: verum
proof
let x1, x2 be Point of S; :: thesis: ( dist (x1,x2) < d implies dist ((In ((f /. x1),T)),(In ((f /. x2),T))) < e )
assume A29: dist (x1,x2) < d ; :: thesis: dist ((In ((f /. x1),T)),(In ((f /. x2),T))) < e
x1 in union G by A15, SETFAM_1:def 11, TARSKI:def 3;
then consider X1 being set such that
A30: ( x1 in X1 & X1 in G ) by TARSKI:def 4;
A31: X1 = Ball ((H /. X1),((D . (H . X1)) / 2)) by A19, A30;
A32: (D . (H /. X1)) / 2 < D . (H /. X1) by A10, XREAL_1:216;
x1 in { y where y is Point of S : dist ((H /. X1),y) < (D . (H . X1)) / 2 } by A31, A30, METRIC_1:def 14;
then A33: ex y being Point of S st
( y = x1 & dist ((H /. X1),y) < (D . (H . X1)) / 2 ) ;
then dist (x1,(H /. X1)) < (D . (H /. X1)) / 2 by A22, PARTFUN1:def 6, A30;
then dist (x1,(H /. X1)) < D . (H /. X1) by A32, XXREAL_0:2;
then A34: dist ((In ((f /. x1),T)),(In ((f /. (H /. X1)),T))) < e / 2 by A10;
A35: H . X1 in rng H by A22, A30, FUNCT_1:3;
H /. X1 in dom D by A23;
then H . X1 in dom D by A22, A30, PARTFUN1:def 6;
then D . (H . X1) in D0 by FUNCT_1:def 6, A35;
then (lower_bound D0) / 2 <= (D . (H . X1)) / 2 by A26, XREAL_1:72;
then A36: dist (x1,x2) < (D . (H . X1)) / 2 by A29, XXREAL_0:2;
A37: dist (x2,(H /. X1)) <= (dist (x1,x2)) + (dist ((H /. X1),x1)) by METRIC_1:4;
(dist (x1,x2)) + (dist ((H /. X1),x1)) < ((D . (H . X1)) / 2) + ((D . (H . X1)) / 2) by A36, A33, XREAL_1:8;
then dist (x2,(H /. X1)) < D . (H . X1) by A37, XXREAL_0:2;
then dist (x2,(H /. X1)) < D . (H /. X1) by PARTFUN1:def 6, A22, A30;
then A39: dist ((In ((f /. (H /. X1)),T)),(In ((f /. x2),T))) < e / 2 by A10;
A40: dist ((In ((f /. x1),T)),(In ((f /. x2),T))) <= (dist ((In ((f /. x1),T)),(In ((f /. (H /. X1)),T)))) + (dist ((In ((f /. (H /. X1)),T)),(In ((f /. x2),T)))) by METRIC_1:4;
(dist ((In ((f /. x1),T)),(In ((f /. (H /. X1)),T)))) + (dist ((In ((f /. (H /. X1)),T)),(In ((f /. x2),T)))) < (e / 2) + (e / 2) by A39, A34, XREAL_1:8;
hence dist ((In ((f /. x1),T)),(In ((f /. x2),T))) < e by A40, XXREAL_0:2; :: thesis: verum
end;
end;
assume A41: for e being Real st 0 < e holds
ex d being Real st
( 0 < d & ( for x1, x2 being Point of S st dist (x1,x2) < d holds
dist ((In ((f /. x1),T)),(In ((f /. x2),T))) < e ) ) ; :: thesis: f is continuous
for x being Point of (TopSpaceMetr S) holds f is_continuous_at x
proof
let x be Point of (TopSpaceMetr S); :: thesis: f is_continuous_at x
now :: thesis: for e being Real st 0 < e holds
ex H being Subset of (TopSpaceMetr S) st
( H is open & x in H & ( for y being Point of (TopSpaceMetr S) st y in H holds
dist ((In ((f . x),T)),(In ((f . y),T))) < e ) )
let e be Real; :: thesis: ( 0 < e implies ex H being Subset of (TopSpaceMetr S) st
( H is open & x in H & ( for y being Point of (TopSpaceMetr S) st y in H holds
dist ((In ((f . x),T)),(In ((f . y),T))) < e ) ) )

assume A42: 0 < e ; :: thesis: ex H being Subset of (TopSpaceMetr S) st
( H is open & x in H & ( for y being Point of (TopSpaceMetr S) st y in H holds
dist ((In ((f . x),T)),(In ((f . y),T))) < e ) )

reconsider x0 = x as Point of S ;
consider d being Real such that
A43: ( 0 < d & ( for x1, x2 being Point of S st dist (x1,x2) < d holds
dist ((In ((f /. x1),T)),(In ((f /. x2),T))) < e ) ) by A42, A41;
reconsider H = Ball (x0,d) as Subset of (TopSpaceMetr S) ;
take H = H; :: thesis: ( H is open & x in H & ( for y being Point of (TopSpaceMetr S) st y in H holds
dist ((In ((f . x),T)),(In ((f . y),T))) < e ) )

thus H is open by PCOMPS_1:29; :: thesis: ( x in H & ( for y being Point of (TopSpaceMetr S) st y in H holds
dist ((In ((f . x),T)),(In ((f . y),T))) < e ) )

dist (x0,x0) < d by A43, METRIC_1:1;
hence x in H by METRIC_1:11; :: thesis: for y being Point of (TopSpaceMetr S) st y in H holds
dist ((In ((f . x),T)),(In ((f . y),T))) < e

thus for y being Point of (TopSpaceMetr S) st y in H holds
dist ((In ((f . x),T)),(In ((f . y),T))) < e :: thesis: verum
proof
let y be Point of (TopSpaceMetr S); :: thesis: ( y in H implies dist ((In ((f . x),T)),(In ((f . y),T))) < e )
assume y in H ; :: thesis: dist ((In ((f . x),T)),(In ((f . y),T))) < e
then y in { t where t is Point of S : dist (x0,t) < d } by METRIC_1:def 14;
then A44: ex t being Point of S st
( y = t & dist (x0,t) < d ) ;
reconsider y0 = y as Point of S ;
dom f = the carrier of S by FUNCT_2:def 1;
then ( f /. x0 = f . x0 & f /. y0 = f . y0 ) by PARTFUN1:def 6;
hence dist ((In ((f . x),T)),(In ((f . y),T))) < e by A43, A44; :: thesis: verum
end;
end;
hence f is_continuous_at x by Th2; :: thesis: verum
end;
hence f is continuous by TMAP_1:50; :: thesis: verum