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

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

let n be 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
A157: n in NAT by ORDINAL1:def 12;
(((f / g) /* a) ^\ k) . n = ((f `| N) / (g `| N)) . (b . n) by A141, A157;
hence (((f / g) /* a) ^\ k) . n = (((f `| N) / (g `| N)) /* b) . n by A144, A153, FUNCT_2:108, XBOOLE_1:1, A157; :: thesis: verum
end;
lim (((f `| N) / (g `| N)) /* b) = ((f `| N) / (g `| N)) . x0 by A8, A152, A154, FCONT_1:def 1;
then lim (((f `| N) / (g `| N)) /* b) = ((f `| N) . x0) * (((g `| N) . x0) ") by A6, A10, A143, RFUNCT_1:def 1
.= (diff (f,x0)) * (((g `| N) . x0) ") by A3, A10, A143, FDIFF_1:def 7
.= (diff (f,x0)) * ((diff (g,x0)) ") by A4, A10, A143, FDIFF_1:def 7 ;
then lim (((f / g) /* a) ^\ k) = (diff (f,x0)) * ((diff (g,x0)) ") by A155, A156, SEQ_4:19;
then A158: lim (((f / g) /* a) ^\ k) = (diff (f,x0)) / (diff (g,x0)) by XCMPLX_0:def 9;
((f / g) /* a) ^\ k is convergent by A155, A156, SEQ_4:18;
hence ( (f / g) /* a is convergent & lim ((f / g) /* a) = (diff (f,x0)) / (diff (g,x0)) ) by A158, 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 A84, LIMFUNC3:8;
then ( f / g is_right_convergent_in x0 & lim_right ((f / g),x0) = (diff (f,x0)) / (diff (g,x0)) ) by A130, Th2;
hence ( f / g is_convergent_in x0 & lim ((f / g),x0) = (diff (f,x0)) / (diff (g,x0)) ) by A85, LIMFUNC3:30; :: thesis: verum