let f, g be PartFunc of REAL,REAL; :: thesis: for x0 being Real st ex N being Neighbourhood of x0 st
( N c= dom f & N c= dom g & f is_differentiable_on N & g is_differentiable_on N & N \ {x0} c= dom (f / g) & N c= dom ((f `| N) / (g `| N)) & f . x0 = 0 & g . x0 = 0 & (f `| N) / (g `| N) is_continuous_in x0 ) holds
( f / g is_convergent_in x0 & lim ((f / g),x0) = (diff (f,x0)) / (diff (g,x0)) )

let x0 be Real; :: thesis: ( ex N being Neighbourhood of x0 st
( N c= dom f & N c= dom g & f is_differentiable_on N & g is_differentiable_on N & N \ {x0} c= dom (f / g) & N c= dom ((f `| N) / (g `| N)) & f . x0 = 0 & g . x0 = 0 & (f `| N) / (g `| N) is_continuous_in x0 ) implies ( f / g is_convergent_in x0 & lim ((f / g),x0) = (diff (f,x0)) / (diff (g,x0)) ) )

given N being Neighbourhood of x0 such that A1: N c= dom f and
A2: N c= dom g and
A3: f is_differentiable_on N and
A4: g is_differentiable_on N and
A5: N \ {x0} c= dom (f / g) and
A6: N c= dom ((f `| N) / (g `| N)) and
A7: ( f . x0 = 0 & g . x0 = 0 ) and
A8: (f `| N) / (g `| N) is_continuous_in x0 ; :: thesis: ( f / g is_convergent_in x0 & lim ((f / g),x0) = (diff (f,x0)) / (diff (g,x0)) )
consider r being real number such that
A9: 0 < r and
A10: N = ].(x0 - r),(x0 + r).[ by RCOMP_1:def 6;
A11: r is Real by XREAL_0:def 1;
A12: for x being Real st x0 - r < x & x < x0 holds
ex c being Real st
( c in ].x,x0.[ & (f / g) . x = ((f `| N) / (g `| N)) . c )
proof
A13: x0 + 0 < x0 + r by A9, XREAL_1:8;
x0 - r < x0 by A9, XREAL_1:44;
then x0 in { g1 where g1 is Real : ( x0 - r < g1 & g1 < x0 + r ) } by A13;
then A14: x0 in ].(x0 - r),(x0 + r).[ by RCOMP_1:def 2;
A15: (dom (f `| N)) /\ ((dom (g `| N)) \ ((g `| N) " {0})) c= (dom (g `| N)) \ ((g `| N) " {0}) by XBOOLE_1:17;
A16: (dom f) /\ ((dom g) \ (g " {0})) c= (dom g) \ (g " {0}) by XBOOLE_1:17;
let x be Real; :: thesis: ( x0 - r < x & x < x0 implies ex c being Real st
( c in ].x,x0.[ & (f / g) . x = ((f `| N) / (g `| N)) . c ) )

assume that
A17: x0 - r < x and
A18: x < x0 ; :: thesis: ex c being Real st
( c in ].x,x0.[ & (f / g) . x = ((f `| N) / (g `| N)) . c )

set f1 = ((f . x) (#) g) - ((g . x) (#) f);
A19: ( dom ((f . x) (#) g) = dom g & dom ((g . x) (#) f) = dom f ) by VALUED_1:def 5;
then A20: dom (((f . x) (#) g) - ((g . x) (#) f)) = (dom f) /\ (dom g) by VALUED_1:12;
x < x0 + r by A18, A13, XXREAL_0:2;
then x in { g1 where g1 is Real : ( x0 - r < g1 & g1 < x0 + r ) } by A17;
then x in ].(x0 - r),(x0 + r).[ by RCOMP_1:def 2;
then A21: [.x,x0.] c= N by A10, A14, XXREAL_2:def 12;
then A22: ( [.x,x0.] c= dom f & [.x,x0.] c= dom g ) by A1, A2, XBOOLE_1:1;
then A23: [.x,x0.] c= dom (((f . x) (#) g) - ((g . x) (#) f)) by A20, XBOOLE_1:19;
g | N is continuous by A4, FDIFF_1:25;
then g | [.x,x0.] is continuous by A21, FCONT_1:16;
then A24: ((f . x) (#) g) | [.x,x0.] is continuous by A2, A21, FCONT_1:20, XBOOLE_1:1;
f | N is continuous by A3, FDIFF_1:25;
then f | [.x,x0.] is continuous by A21, FCONT_1:16;
then A25: ((g . x) (#) f) | [.x,x0.] is continuous by A1, A21, FCONT_1:20, XBOOLE_1:1;
[.x,x0.] c= dom (((f . x) (#) g) - ((g . x) (#) f)) by A22, A20, XBOOLE_1:19;
then A26: (((f . x) (#) g) - ((g . x) (#) f)) | [.x,x0.] is continuous by A19, A20, A25, A24, FCONT_1:18;
A27: ].x,x0.[ c= [.x,x0.] by XXREAL_1:25;
then A28: ].x,x0.[ c= N by A21, XBOOLE_1:1;
A29: x in [.x,x0.] by A18, XXREAL_1:1;
then x in dom (((f . x) (#) g) - ((g . x) (#) f)) by A23;
then A30: x in (dom ((f . x) (#) g)) /\ (dom ((g . x) (#) f)) by VALUED_1:12;
then A31: x in dom ((f . x) (#) g) by XBOOLE_0:def 4;
A32: x0 in [.x,x0.] by A18, XXREAL_1:1;
then x0 in dom (((f . x) (#) g) - ((g . x) (#) f)) by A23;
then A33: x0 in (dom ((f . x) (#) g)) /\ (dom ((g . x) (#) f)) by VALUED_1:12;
then A34: x0 in dom ((f . x) (#) g) by XBOOLE_0:def 4;
A35: x in dom ((g . x) (#) f) by A30, XBOOLE_0:def 4;
A36: (((f . x) (#) g) - ((g . x) (#) f)) . x = (((f . x) (#) g) . x) - (((g . x) (#) f) . x) by A23, A29, VALUED_1:13
.= ((f . x) * (g . x)) - (((g . x) (#) f) . x) by A31, VALUED_1:def 5
.= ((g . x) * (f . x)) - ((g . x) * (f . x)) by A35, VALUED_1:def 5
.= 0 ;
A37: x0 in dom ((g . x) (#) f) by A33, XBOOLE_0:def 4;
not x in {x0} by A18, TARSKI:def 1;
then A38: x in [.x,x0.] \ {x0} by A29, XBOOLE_0:def 5;
N c= dom ((f . x) (#) g) by A2, VALUED_1:def 5;
then A39: ].x,x0.[ c= dom ((f . x) (#) g) by A28, XBOOLE_1:1;
N c= dom ((g . x) (#) f) by A1, VALUED_1:def 5;
then A40: ].x,x0.[ c= dom ((g . x) (#) f) by A28, XBOOLE_1:1;
then ].x,x0.[ c= (dom ((f . x) (#) g)) /\ (dom ((g . x) (#) f)) by A39, XBOOLE_1:19;
then A41: ].x,x0.[ c= dom (((f . x) (#) g) - ((g . x) (#) f)) by VALUED_1:12;
f is_differentiable_on ].x,x0.[ by A3, A21, A27, FDIFF_1:26, XBOOLE_1:1;
then A42: (g . x) (#) f is_differentiable_on ].x,x0.[ by A40, FDIFF_1:20;
g is_differentiable_on ].x,x0.[ by A4, A21, A27, FDIFF_1:26, XBOOLE_1:1;
then A43: (f . x) (#) g is_differentiable_on ].x,x0.[ by A39, FDIFF_1:20;
(((f . x) (#) g) - ((g . x) (#) f)) . x0 = (((f . x) (#) g) . x0) - (((g . x) (#) f) . x0) by A23, A32, VALUED_1:13
.= ((f . x) * (g . x0)) - (((g . x) (#) f) . x0) by A34, VALUED_1:def 5
.= 0 - ((g . x) * 0) by A7, A37, VALUED_1:def 5
.= 0 ;
then consider t being Real such that
A44: t in ].x,x0.[ and
A45: diff ((((f . x) (#) g) - ((g . x) (#) f)),t) = 0 by A18, A26, A42, A41, A43, A23, A36, FDIFF_1:19, ROLLE:1;
A46: (g . x) (#) f is_differentiable_in t by A42, A44, FDIFF_1:9;
A47: f is_differentiable_in t by A3, A28, A44, FDIFF_1:9;
(f . x) (#) g is_differentiable_in t by A43, A44, FDIFF_1:9;
then 0 = (diff (((f . x) (#) g),t)) - (diff (((g . x) (#) f),t)) by A45, A46, FDIFF_1:14;
then A48: 0 = (diff (((f . x) (#) g),t)) - ((g . x) * (diff (f,t))) by A47, FDIFF_1:15;
take t ; :: thesis: ( t in ].x,x0.[ & (f / g) . x = ((f `| N) / (g `| N)) . t )
A49: t in [.x,x0.] by A27, A44;
[.x,x0.] \ {x0} c= N \ {x0} by A21, XBOOLE_1:33;
then A50: [.x,x0.] \ {x0} c= dom (f / g) by A5, XBOOLE_1:1;
then [.x,x0.] \ {x0} c= (dom f) /\ ((dom g) \ (g " {0})) by RFUNCT_1:def 1;
then [.x,x0.] \ {x0} c= (dom g) \ (g " {0}) by A16, XBOOLE_1:1;
then A51: ( x in dom g & not x in g " {0} ) by A38, XBOOLE_0:def 5;
A52: now end;
A53: [.x,x0.] c= dom ((f `| N) / (g `| N)) by A6, A21, XBOOLE_1:1;
then [.x,x0.] c= (dom (f `| N)) /\ ((dom (g `| N)) \ ((g `| N) " {0})) by RFUNCT_1:def 1;
then [.x,x0.] c= (dom (g `| N)) \ ((g `| N) " {0}) by A15, XBOOLE_1:1;
then A54: ( t in dom (g `| N) & not t in (g `| N) " {0} ) by A49, XBOOLE_0:def 5;
A55: now end;
g is_differentiable_in t by A4, A28, A44, FDIFF_1:9;
then 0 = ((f . x) * (diff (g,t))) - ((g . x) * (diff (f,t))) by A48, FDIFF_1:15;
then (f . x) / (g . x) = (diff (f,t)) / (diff (g,t)) by A52, A55, XCMPLX_1:94;
then (f . x) * ((g . x) ") = (diff (f,t)) / (diff (g,t)) by XCMPLX_0:def 9;
then (f . x) * ((g . x) ") = (diff (f,t)) * ((diff (g,t)) ") by XCMPLX_0:def 9;
then (f / g) . x = (diff (f,t)) * ((diff (g,t)) ") by A50, A38, RFUNCT_1:def 1;
then (f / g) . x = ((f `| N) . t) * ((diff (g,t)) ") by A3, A21, A49, FDIFF_1:def 7;
then (f / g) . x = ((f `| N) . t) * (((g `| N) . t) ") by A4, A21, A49, FDIFF_1:def 7;
hence ( t in ].x,x0.[ & (f / g) . x = ((f `| N) / (g `| N)) . t ) by A44, A53, A49, RFUNCT_1:def 1; :: thesis: verum
end;
A56: for a being Real_Sequence st a is convergent & lim a = x0 & rng a c= (dom (f / g)) /\ (left_open_halfline x0) holds
( (f / g) /* a is convergent & lim ((f / g) /* a) = (diff (f,x0)) / (diff (g,x0)) )
proof
reconsider d = NAT --> x0 as Real_Sequence ;
let a be Real_Sequence; :: thesis: ( a is convergent & lim a = x0 & rng a c= (dom (f / g)) /\ (left_open_halfline x0) implies ( (f / g) /* a is convergent & lim ((f / g) /* a) = (diff (f,x0)) / (diff (g,x0)) ) )
assume that
A57: a is convergent and
A58: lim a = x0 and
A59: rng a c= (dom (f / g)) /\ (left_open_halfline x0) ; :: thesis: ( (f / g) /* a is convergent & lim ((f / g) /* a) = (diff (f,x0)) / (diff (g,x0)) )
consider k being Element of NAT such that
A60: for n being Element of NAT st k <= n holds
( x0 - r < a . n & a . n < x0 + r ) by A9, A11, A57, A58, LIMFUNC3:7;
set a1 = a ^\ k;
defpred S1[ Element of NAT , real number ] means ( $2 in ].((a ^\ k) . $1),x0.[ & (((f / g) /* a) ^\ k) . $1 = ((f `| N) / (g `| N)) . $2 );
A61: now
let n be Element of NAT ; :: thesis: ( (a ^\ k) . n < x0 & x0 - r < (a ^\ k) . n )
a . (n + k) in rng a by VALUED_0:28;
then a . (n + k) in left_open_halfline x0 by A59, XBOOLE_0:def 4;
then a . (n + k) in { g1 where g1 is Real : g1 < x0 } by XXREAL_1:229;
then ex g1 being Real st
( a . (n + k) = g1 & g1 < x0 ) ;
hence (a ^\ k) . n < x0 by NAT_1:def 3; :: thesis: x0 - r < (a ^\ k) . n
( (a ^\ k) . n = a . (n + k) & k <= n + k ) by NAT_1:12, NAT_1:def 3;
hence x0 - r < (a ^\ k) . n by A60; :: thesis: verum
end;
A62: for n being Element of NAT ex c being Real st S1[n,c]
proof
let n be Element of NAT ; :: thesis: ex c being Real st S1[n,c]
A63: rng (a ^\ k) c= rng a by VALUED_0:21;
( x0 - r < (a ^\ k) . n & (a ^\ k) . n < x0 ) by A61;
then consider c being Real such that
A64: c in ].((a ^\ k) . n),x0.[ and
A65: (f / g) . ((a ^\ k) . n) = ((f `| N) / (g `| N)) . c by A12;
take c ; :: thesis: S1[n,c]
A66: (dom (f / g)) /\ (left_open_halfline x0) c= dom (f / g) by XBOOLE_1:17;
then rng a c= dom (f / g) by A59, XBOOLE_1:1;
then ((f / g) /* (a ^\ k)) . n = ((f `| N) / (g `| N)) . c by A65, A63, FUNCT_2:108, XBOOLE_1:1;
hence S1[n,c] by A59, A64, A66, VALUED_0:27, XBOOLE_1:1; :: thesis: verum
end;
consider b being Real_Sequence such that
A67: for n being Element of NAT holds S1[n,b . n] from FUNCT_2:sch 3(A62);
A68: x0 < x0 + r by A9, XREAL_1:29;
x0 - r < x0 by A9, XREAL_1:44;
then x0 in { g2 where g2 is Real : ( x0 - r < g2 & g2 < x0 + r ) } by A68;
then A69: x0 in ].(x0 - r),(x0 + r).[ by RCOMP_1:def 2;
A70: rng b c= (dom ((f `| N) / (g `| N))) /\ (left_open_halfline x0)
proof
let x be set ; :: according to TARSKI:def 3 :: thesis: ( not x in rng b or x in (dom ((f `| N) / (g `| N))) /\ (left_open_halfline x0) )
assume x in rng b ; :: thesis: x in (dom ((f `| N) / (g `| N))) /\ (left_open_halfline x0)
then consider n being Element of NAT such that
A71: x = b . n by FUNCT_2:113;
(a ^\ k) . n < x0 by A61;
then A72: (a ^\ k) . n < x0 + r by A68, XXREAL_0:2;
x0 - r < (a ^\ k) . n by A61;
then (a ^\ k) . n in { g3 where g3 is Real : ( x0 - r < g3 & g3 < x0 + r ) } by A72;
then (a ^\ k) . n in ].(x0 - r),(x0 + r).[ by RCOMP_1:def 2;
then ( ].((a ^\ k) . n),x0.[ c= [.((a ^\ k) . n),x0.] & [.((a ^\ k) . n),x0.] c= ].(x0 - r),(x0 + r).[ ) by A69, XXREAL_1:25, XXREAL_2:def 12;
then ].((a ^\ k) . n),x0.[ c= ].(x0 - r),(x0 + r).[ by XBOOLE_1:1;
then A73: ].((a ^\ k) . n),x0.[ c= dom ((f `| N) / (g `| N)) by A6, A10, XBOOLE_1:1;
A74: x in ].((a ^\ k) . n),x0.[ by A67, A71;
then x in { g1 where g1 is Real : ( (a ^\ k) . n < g1 & g1 < x0 ) } by RCOMP_1:def 2;
then ex g1 being Real st
( g1 = x & (a ^\ k) . n < g1 & g1 < x0 ) ;
then x in { g2 where g2 is Real : g2 < x0 } ;
then x in left_open_halfline x0 by XXREAL_1:229;
hence x in (dom ((f `| N) / (g `| N))) /\ (left_open_halfline x0) by A74, A73, XBOOLE_0:def 4; :: thesis: verum
end;
A75: now
let n be Element of NAT ; :: thesis: ( (a ^\ k) . n <= b . n & b . n <= d . n )
b . n in ].((a ^\ k) . n),x0.[ by A67;
then b . n in { g1 where g1 is Real : ( (a ^\ k) . n < g1 & g1 < x0 ) } by RCOMP_1:def 2;
then ex g1 being Real st
( g1 = b . n & (a ^\ k) . n < g1 & g1 < x0 ) ;
hence ( (a ^\ k) . n <= b . n & b . n <= d . n ) by FUNCOP_1:7; :: thesis: verum
end;
A76: lim d = d . 0 by SEQ_4:26
.= x0 by FUNCOP_1:7 ;
lim (a ^\ k) = x0 by A57, A58, SEQ_4:20;
then A77: ( b is convergent & lim b = x0 ) by A57, A76, A75, SEQ_2:19, SEQ_2:20;
A78: (dom ((f `| N) / (g `| N))) /\ (left_open_halfline x0) c= dom ((f `| N) / (g `| N)) by XBOOLE_1:17;
then A79: rng b c= dom ((f `| N) / (g `| N)) by A70, XBOOLE_1:1;
then A80: ((f `| N) / (g `| N)) /* b is convergent by A8, A77, FCONT_1:def 1;
A81: now
take m = 0 ; :: thesis: for n being Element of NAT st m <= n holds
(((f / g) /* a) ^\ k) . n = (((f `| N) / (g `| N)) /* b) . n

let n be Element of NAT ; :: thesis: ( m <= n implies (((f / g) /* a) ^\ k) . n = (((f `| N) / (g `| N)) /* b) . n )
assume m <= n ; :: thesis: (((f / g) /* a) ^\ k) . n = (((f `| N) / (g `| N)) /* b) . n
(((f / g) /* a) ^\ k) . n = ((f `| N) / (g `| N)) . (b . n) by A67;
hence (((f / g) /* a) ^\ k) . n = (((f `| N) / (g `| N)) /* b) . n by A70, A78, FUNCT_2:108, XBOOLE_1:1; :: thesis: verum
end;
lim (((f `| N) / (g `| N)) /* b) = ((f `| N) / (g `| N)) . x0 by A8, A77, A79, FCONT_1:def 1;
then lim (((f `| N) / (g `| N)) /* b) = ((f `| N) . x0) * (((g `| N) . x0) ") by A6, A10, A69, RFUNCT_1:def 1
.= (diff (f,x0)) * (((g `| N) . x0) ") by A3, A10, A69, FDIFF_1:def 7
.= (diff (f,x0)) * ((diff (g,x0)) ") by A4, A10, A69, FDIFF_1:def 7 ;
then lim (((f / g) /* a) ^\ k) = (diff (f,x0)) * ((diff (g,x0)) ") by A80, A81, SEQ_4:19;
then A82: lim (((f / g) /* a) ^\ k) = (diff (f,x0)) / (diff (g,x0)) by XCMPLX_0:def 9;
((f / g) /* a) ^\ k is convergent by A80, A81, SEQ_4:18;
hence ( (f / g) /* a is convergent & lim ((f / g) /* a) = (diff (f,x0)) / (diff (g,x0)) ) by A82, SEQ_4:21, SEQ_4:22; :: thesis: verum
end;
A83: for r1, r2 being Real st r1 < x0 & x0 < r2 holds
ex g1, g2 being Real st
( r1 < g1 & g1 < x0 & g1 in dom (f / g) & g2 < r2 & x0 < g2 & g2 in dom (f / g) ) by A5, Th4;
then for r1 being Real st r1 < x0 holds
ex t being Real st
( r1 < t & t < x0 & t in dom (f / g) ) by LIMFUNC3:8;
then A84: ( f / g is_left_convergent_in x0 & lim_left ((f / g),x0) = (diff (f,x0)) / (diff (g,x0)) ) by A56, Th3;
A85: for x being Real st x0 < x & x < x0 + r holds
ex c being Real st
( c in ].x0,x.[ & (f / g) . x = ((f `| N) / (g `| N)) . c )
proof
A86: x0 - r < x0 by A9, XREAL_1:44;
x0 + 0 < x0 + r by A9, XREAL_1:8;
then x0 in { g1 where g1 is Real : ( x0 - r < g1 & g1 < x0 + r ) } by A86;
then A87: x0 in ].(x0 - r),(x0 + r).[ by RCOMP_1:def 2;
A88: (dom (f `| N)) /\ ((dom (g `| N)) \ ((g `| N) " {0})) c= (dom (g `| N)) \ ((g `| N) " {0}) by XBOOLE_1:17;
A89: (dom f) /\ ((dom g) \ (g " {0})) c= (dom g) \ (g " {0}) by XBOOLE_1:17;
let x be Real; :: thesis: ( x0 < x & x < x0 + r implies ex c being Real st
( c in ].x0,x.[ & (f / g) . x = ((f `| N) / (g `| N)) . c ) )

assume that
A90: x0 < x and
A91: x < x0 + r ; :: thesis: ex c being Real st
( c in ].x0,x.[ & (f / g) . x = ((f `| N) / (g `| N)) . c )

set f1 = ((f . x) (#) g) - ((g . x) (#) f);
A92: ( dom ((f . x) (#) g) = dom g & dom ((g . x) (#) f) = dom f ) by VALUED_1:def 5;
then A93: dom (((f . x) (#) g) - ((g . x) (#) f)) = (dom f) /\ (dom g) by VALUED_1:12;
x0 - r < x by A90, A86, XXREAL_0:2;
then x in { g1 where g1 is Real : ( x0 - r < g1 & g1 < x0 + r ) } by A91;
then x in ].(x0 - r),(x0 + r).[ by RCOMP_1:def 2;
then A94: [.x0,x.] c= N by A10, A87, XXREAL_2:def 12;
then A95: ( [.x0,x.] c= dom f & [.x0,x.] c= dom g ) by A1, A2, XBOOLE_1:1;
then A96: [.x0,x.] c= dom (((f . x) (#) g) - ((g . x) (#) f)) by A93, XBOOLE_1:19;
g | N is continuous by A4, FDIFF_1:25;
then g | [.x0,x.] is continuous by A94, FCONT_1:16;
then A97: ((f . x) (#) g) | [.x0,x.] is continuous by A2, A94, FCONT_1:20, XBOOLE_1:1;
f | N is continuous by A3, FDIFF_1:25;
then f | [.x0,x.] is continuous by A94, FCONT_1:16;
then A98: ((g . x) (#) f) | [.x0,x.] is continuous by A1, A94, FCONT_1:20, XBOOLE_1:1;
[.x0,x.] c= dom (((f . x) (#) g) - ((g . x) (#) f)) by A95, A93, XBOOLE_1:19;
then A99: (((f . x) (#) g) - ((g . x) (#) f)) | [.x0,x.] is continuous by A92, A93, A98, A97, FCONT_1:18;
A100: ].x0,x.[ c= [.x0,x.] by XXREAL_1:25;
then A101: ].x0,x.[ c= N by A94, XBOOLE_1:1;
A102: x in [.x0,x.] by A90, XXREAL_1:1;
then x in dom (((f . x) (#) g) - ((g . x) (#) f)) by A96;
then A103: x in (dom ((f . x) (#) g)) /\ (dom ((g . x) (#) f)) by VALUED_1:12;
then A104: x in dom ((f . x) (#) g) by XBOOLE_0:def 4;
A105: x0 in [.x0,x.] by A90, XXREAL_1:1;
then x0 in dom (((f . x) (#) g) - ((g . x) (#) f)) by A96;
then A106: x0 in (dom ((f . x) (#) g)) /\ (dom ((g . x) (#) f)) by VALUED_1:12;
then A107: x0 in dom ((f . x) (#) g) by XBOOLE_0:def 4;
A108: x in dom ((g . x) (#) f) by A103, XBOOLE_0:def 4;
A109: (((f . x) (#) g) - ((g . x) (#) f)) . x = (((f . x) (#) g) . x) - (((g . x) (#) f) . x) by A96, A102, VALUED_1:13
.= ((f . x) * (g . x)) - (((g . x) (#) f) . x) by A104, VALUED_1:def 5
.= ((g . x) * (f . x)) - ((g . x) * (f . x)) by A108, VALUED_1:def 5
.= 0 ;
A110: x0 in dom ((g . x) (#) f) by A106, XBOOLE_0:def 4;
not x in {x0} by A90, TARSKI:def 1;
then A111: x in [.x0,x.] \ {x0} by A102, XBOOLE_0:def 5;
N c= dom ((f . x) (#) g) by A2, VALUED_1:def 5;
then A112: ].x0,x.[ c= dom ((f . x) (#) g) by A101, XBOOLE_1:1;
N c= dom ((g . x) (#) f) by A1, VALUED_1:def 5;
then A113: ].x0,x.[ c= dom ((g . x) (#) f) by A101, XBOOLE_1:1;
then ].x0,x.[ c= (dom ((f . x) (#) g)) /\ (dom ((g . x) (#) f)) by A112, XBOOLE_1:19;
then A114: ].x0,x.[ c= dom (((f . x) (#) g) - ((g . x) (#) f)) by VALUED_1:12;
f is_differentiable_on ].x0,x.[ by A3, A94, A100, FDIFF_1:26, XBOOLE_1:1;
then A115: (g . x) (#) f is_differentiable_on ].x0,x.[ by A113, FDIFF_1:20;
g is_differentiable_on ].x0,x.[ by A4, A94, A100, FDIFF_1:26, XBOOLE_1:1;
then A116: (f . x) (#) g is_differentiable_on ].x0,x.[ by A112, FDIFF_1:20;
(((f . x) (#) g) - ((g . x) (#) f)) . x0 = (((f . x) (#) g) . x0) - (((g . x) (#) f) . x0) by A96, A105, VALUED_1:13
.= ((f . x) * (g . x0)) - (((g . x) (#) f) . x0) by A107, VALUED_1:def 5
.= 0 - ((g . x) * 0) by A7, A110, VALUED_1:def 5
.= 0 ;
then consider t being Real such that
A117: t in ].x0,x.[ and
A118: diff ((((f . x) (#) g) - ((g . x) (#) f)),t) = 0 by A90, A99, A115, A114, A116, A96, A109, FDIFF_1:19, ROLLE:1;
A119: (g . x) (#) f is_differentiable_in t by A115, A117, FDIFF_1:9;
A120: f is_differentiable_in t by A3, A101, A117, FDIFF_1:9;
(f . x) (#) g is_differentiable_in t by A116, A117, FDIFF_1:9;
then 0 = (diff (((f . x) (#) g),t)) - (diff (((g . x) (#) f),t)) by A118, A119, FDIFF_1:14;
then A121: 0 = (diff (((f . x) (#) g),t)) - ((g . x) * (diff (f,t))) by A120, FDIFF_1:15;
take t ; :: thesis: ( t in ].x0,x.[ & (f / g) . x = ((f `| N) / (g `| N)) . t )
A122: t in [.x0,x.] by A100, A117;
[.x0,x.] \ {x0} c= N \ {x0} by A94, XBOOLE_1:33;
then A123: [.x0,x.] \ {x0} c= dom (f / g) by A5, XBOOLE_1:1;
then [.x0,x.] \ {x0} c= (dom f) /\ ((dom g) \ (g " {0})) by RFUNCT_1:def 1;
then [.x0,x.] \ {x0} c= (dom g) \ (g " {0}) by A89, XBOOLE_1:1;
then A124: ( x in dom g & not x in g " {0} ) by A111, XBOOLE_0:def 5;
A125: now end;
A126: [.x0,x.] c= dom ((f `| N) / (g `| N)) by A6, A94, XBOOLE_1:1;
then [.x0,x.] c= (dom (f `| N)) /\ ((dom (g `| N)) \ ((g `| N) " {0})) by RFUNCT_1:def 1;
then [.x0,x.] c= (dom (g `| N)) \ ((g `| N) " {0}) by A88, XBOOLE_1:1;
then A127: ( t in dom (g `| N) & not t in (g `| N) " {0} ) by A122, XBOOLE_0:def 5;
A128: now end;
g is_differentiable_in t by A4, A101, A117, FDIFF_1:9;
then 0 = ((f . x) * (diff (g,t))) - ((g . x) * (diff (f,t))) by A121, FDIFF_1:15;
then (f . x) / (g . x) = (diff (f,t)) / (diff (g,t)) by A125, A128, XCMPLX_1:94;
then (f . x) * ((g . x) ") = (diff (f,t)) / (diff (g,t)) by XCMPLX_0:def 9;
then (f . x) * ((g . x) ") = (diff (f,t)) * ((diff (g,t)) ") by XCMPLX_0:def 9;
then (f / g) . x = (diff (f,t)) * ((diff (g,t)) ") by A123, A111, RFUNCT_1:def 1;
then (f / g) . x = ((f `| N) . t) * ((diff (g,t)) ") by A3, A94, A122, FDIFF_1:def 7;
then (f / g) . x = ((f `| N) . t) * (((g `| N) . t) ") by A4, A94, A122, FDIFF_1:def 7;
hence ( t in ].x0,x.[ & (f / g) . x = ((f `| N) / (g `| N)) . t ) by A117, A126, A122, RFUNCT_1:def 1; :: thesis: verum
end;
A129: for a being Real_Sequence st a is convergent & lim a = x0 & rng a c= (dom (f / g)) /\ (right_open_halfline x0) holds
( (f / g) /* a is convergent & lim ((f / g) /* a) = (diff (f,x0)) / (diff (g,x0)) )
proof
reconsider d = NAT --> x0 as Real_Sequence ;
let a be Real_Sequence; :: thesis: ( a is convergent & lim a = x0 & rng a c= (dom (f / g)) /\ (right_open_halfline x0) implies ( (f / g) /* a is convergent & lim ((f / g) /* a) = (diff (f,x0)) / (diff (g,x0)) ) )
assume that
A130: a is convergent and
A131: lim a = x0 and
A132: rng a c= (dom (f / g)) /\ (right_open_halfline x0) ; :: thesis: ( (f / g) /* a is convergent & lim ((f / g) /* a) = (diff (f,x0)) / (diff (g,x0)) )
consider k being Element of NAT such that
A133: for n being Element of NAT st k <= n holds
( x0 - r < a . n & a . n < x0 + r ) by A9, A11, A130, A131, LIMFUNC3:7;
set a1 = a ^\ k;
defpred S1[ Element of NAT , real number ] means ( $2 in ].x0,((a ^\ k) . $1).[ & (((f / g) /* a) ^\ k) . $1 = ((f `| N) / (g `| N)) . $2 );
A134: now
let n be Element of NAT ; :: thesis: ( x0 < (a ^\ k) . n & (a ^\ k) . n < x0 + r )
a . (n + k) in rng a by VALUED_0:28;
then a . (n + k) in right_open_halfline x0 by A132, XBOOLE_0:def 4;
then a . (n + k) in { g1 where g1 is Real : x0 < g1 } by XXREAL_1:230;
then ex g1 being Real st
( a . (n + k) = g1 & x0 < g1 ) ;
hence x0 < (a ^\ k) . n by NAT_1:def 3; :: thesis: (a ^\ k) . n < x0 + r
( (a ^\ k) . n = a . (n + k) & k <= n + k ) by NAT_1:12, NAT_1:def 3;
hence (a ^\ k) . n < x0 + r by A133; :: thesis: verum
end;
A135: for n being Element of NAT ex c being Real st S1[n,c]
proof
let n be Element of NAT ; :: thesis: ex c being Real st S1[n,c]
A136: rng (a ^\ k) c= rng a by VALUED_0:21;
( x0 < (a ^\ k) . n & (a ^\ k) . n < x0 + r ) by A134;
then consider c being Real such that
A137: c in ].x0,((a ^\ k) . n).[ and
A138: (f / g) . ((a ^\ k) . n) = ((f `| N) / (g `| N)) . c by A85;
take c ; :: thesis: S1[n,c]
A139: (dom (f / g)) /\ (right_open_halfline x0) c= dom (f / g) by XBOOLE_1:17;
then rng a c= dom (f / g) by A132, XBOOLE_1:1;
then ((f / g) /* (a ^\ k)) . n = ((f `| N) / (g `| N)) . c by A138, A136, FUNCT_2:108, XBOOLE_1:1;
hence S1[n,c] by A132, A137, A139, VALUED_0:27, XBOOLE_1:1; :: thesis: verum
end;
consider b being Real_Sequence such that
A140: for n being Element of NAT holds S1[n,b . n] from FUNCT_2:sch 3(A135);
A141: x0 - r < x0 by A9, XREAL_1:44;
x0 < x0 + r by A9, XREAL_1:29;
then x0 in { g2 where g2 is Real : ( x0 - r < g2 & g2 < x0 + r ) } by A141;
then A142: x0 in ].(x0 - r),(x0 + r).[ by RCOMP_1:def 2;
A143: rng b c= (dom ((f `| N) / (g `| N))) /\ (right_open_halfline x0)
proof
let x be set ; :: according to TARSKI:def 3 :: thesis: ( not x in rng b or x in (dom ((f `| N) / (g `| N))) /\ (right_open_halfline x0) )
assume x in rng b ; :: thesis: x in (dom ((f `| N) / (g `| N))) /\ (right_open_halfline x0)
then consider n being Element of NAT such that
A144: x = b . n by FUNCT_2:113;
x0 < (a ^\ k) . n by A134;
then A145: x0 - r < (a ^\ k) . n by A141, XXREAL_0:2;
(a ^\ k) . n < x0 + r by A134;
then (a ^\ k) . n in { g3 where g3 is Real : ( x0 - r < g3 & g3 < x0 + r ) } by A145;
then (a ^\ k) . n in ].(x0 - r),(x0 + r).[ by RCOMP_1:def 2;
then ( ].x0,((a ^\ k) . n).[ c= [.x0,((a ^\ k) . n).] & [.x0,((a ^\ k) . n).] c= ].(x0 - r),(x0 + r).[ ) by A142, XXREAL_1:25, XXREAL_2:def 12;
then ].x0,((a ^\ k) . n).[ c= ].(x0 - r),(x0 + r).[ by XBOOLE_1:1;
then A146: ].x0,((a ^\ k) . n).[ c= dom ((f `| N) / (g `| N)) by A6, A10, XBOOLE_1:1;
A147: x in ].x0,((a ^\ k) . n).[ by A140, A144;
then x in { g1 where g1 is Real : ( x0 < g1 & g1 < (a ^\ k) . n ) } by RCOMP_1:def 2;
then ex g1 being Real st
( g1 = x & x0 < g1 & g1 < (a ^\ k) . n ) ;
then x in { g2 where g2 is Real : x0 < g2 } ;
then x in right_open_halfline x0 by XXREAL_1:230;
hence x in (dom ((f `| N) / (g `| N))) /\ (right_open_halfline x0) by A147, A146, XBOOLE_0:def 4; :: thesis: verum
end;
A148: now
let n be Element of NAT ; :: thesis: ( d . n <= b . n & b . n <= (a ^\ k) . n )
b . n in ].x0,((a ^\ k) . n).[ by A140;
then b . n in { g1 where g1 is Real : ( x0 < g1 & g1 < (a ^\ k) . n ) } by RCOMP_1:def 2;
then ex g1 being Real st
( g1 = b . n & x0 < g1 & g1 < (a ^\ k) . n ) ;
hence ( d . n <= b . n & b . n <= (a ^\ k) . n ) by FUNCOP_1:7; :: thesis: verum
end;
A149: lim d = d . 0 by SEQ_4:26
.= x0 by FUNCOP_1:7 ;
lim (a ^\ k) = x0 by A130, A131, SEQ_4:20;
then A150: ( b is convergent & lim b = x0 ) by A130, A149, A148, SEQ_2:19, SEQ_2:20;
A151: (dom ((f `| N) / (g `| N))) /\ (right_open_halfline x0) c= dom ((f `| N) / (g `| N)) by XBOOLE_1:17;
then A152: rng b c= dom ((f `| N) / (g `| N)) by A143, XBOOLE_1:1;
then A153: ((f `| N) / (g `| N)) /* b is convergent by A8, A150, FCONT_1:def 1;
A154: now
take m = 0 ; :: thesis: for n being Element of NAT st m <= n holds
(((f / g) /* a) ^\ k) . n = (((f `| N) / (g `| N)) /* b) . n

let n be Element of NAT ; :: thesis: ( m <= n implies (((f / g) /* a) ^\ k) . n = (((f `| N) / (g `| N)) /* b) . n )
assume m <= n ; :: thesis: (((f / g) /* a) ^\ k) . n = (((f `| N) / (g `| N)) /* b) . n
(((f / g) /* a) ^\ k) . n = ((f `| N) / (g `| N)) . (b . n) by A140;
hence (((f / g) /* a) ^\ k) . n = (((f `| N) / (g `| N)) /* b) . n by A143, A151, FUNCT_2:108, XBOOLE_1:1; :: thesis: verum
end;
lim (((f `| N) / (g `| N)) /* b) = ((f `| N) / (g `| N)) . x0 by A8, A150, A152, FCONT_1:def 1;
then lim (((f `| N) / (g `| N)) /* b) = ((f `| N) . x0) * (((g `| N) . x0) ") by A6, A10, A142, RFUNCT_1:def 1
.= (diff (f,x0)) * (((g `| N) . x0) ") by A3, A10, A142, FDIFF_1:def 7
.= (diff (f,x0)) * ((diff (g,x0)) ") by A4, A10, A142, FDIFF_1:def 7 ;
then lim (((f / g) /* a) ^\ k) = (diff (f,x0)) * ((diff (g,x0)) ") by A153, A154, SEQ_4:19;
then A155: lim (((f / g) /* a) ^\ k) = (diff (f,x0)) / (diff (g,x0)) by XCMPLX_0:def 9;
((f / g) /* a) ^\ k is convergent by A153, A154, SEQ_4:18;
hence ( (f / g) /* a is convergent & lim ((f / g) /* a) = (diff (f,x0)) / (diff (g,x0)) ) by A155, SEQ_4:21, SEQ_4:22; :: thesis: verum
end;
for r1 being Real st x0 < r1 holds
ex t being Real st
( t < r1 & x0 < t & t in dom (f / g) ) by A83, LIMFUNC3:8;
then ( f / g is_right_convergent_in x0 & lim_right ((f / g),x0) = (diff (f,x0)) / (diff (g,x0)) ) by A129, Th2;
hence ( f / g is_convergent_in x0 & lim ((f / g),x0) = (diff (f,x0)) / (diff (g,x0)) ) by A84, LIMFUNC3:30; :: thesis: verum