let x0 be Real; for f2, f1 being PartFunc of REAL,REAL st ex N being Neighbourhood of x0 st N c= dom (f2 * f1) & f1 is_differentiable_in x0 & f2 is_differentiable_in f1 . x0 holds
( f2 * f1 is_differentiable_in x0 & diff ((f2 * f1),x0) = (diff (f2,(f1 . x0))) * (diff (f1,x0)) )
let f2, f1 be PartFunc of REAL,REAL; ( ex N being Neighbourhood of x0 st N c= dom (f2 * f1) & f1 is_differentiable_in x0 & f2 is_differentiable_in f1 . x0 implies ( f2 * f1 is_differentiable_in x0 & diff ((f2 * f1),x0) = (diff (f2,(f1 . x0))) * (diff (f1,x0)) ) )
given N being Neighbourhood of x0 such that A1:
N c= dom (f2 * f1)
; ( not f1 is_differentiable_in x0 or not f2 is_differentiable_in f1 . x0 or ( f2 * f1 is_differentiable_in x0 & diff ((f2 * f1),x0) = (diff (f2,(f1 . x0))) * (diff (f1,x0)) ) )
assume that
A2:
f1 is_differentiable_in x0
and
A3:
f2 is_differentiable_in f1 . x0
; ( f2 * f1 is_differentiable_in x0 & diff ((f2 * f1),x0) = (diff (f2,(f1 . x0))) * (diff (f1,x0)) )
for h being convergent_to_0 Real_Sequence
for c being V8() Real_Sequence st rng c = {x0} & rng (h + c) c= dom (f2 * f1) holds
( (h ") (#) (((f2 * f1) /* (h + c)) - ((f2 * f1) /* c)) is convergent & lim ((h ") (#) (((f2 * f1) /* (h + c)) - ((f2 * f1) /* c))) = (diff (f2,(f1 . x0))) * (diff (f1,x0)) )
proof
let h be
convergent_to_0 Real_Sequence;
for c being V8() Real_Sequence st rng c = {x0} & rng (h + c) c= dom (f2 * f1) holds
( (h ") (#) (((f2 * f1) /* (h + c)) - ((f2 * f1) /* c)) is convergent & lim ((h ") (#) (((f2 * f1) /* (h + c)) - ((f2 * f1) /* c))) = (diff (f2,(f1 . x0))) * (diff (f1,x0)) )let c be
V8()
Real_Sequence;
( rng c = {x0} & rng (h + c) c= dom (f2 * f1) implies ( (h ") (#) (((f2 * f1) /* (h + c)) - ((f2 * f1) /* c)) is convergent & lim ((h ") (#) (((f2 * f1) /* (h + c)) - ((f2 * f1) /* c))) = (diff (f2,(f1 . x0))) * (diff (f1,x0)) ) )
assume that A4:
rng c = {x0}
and A5:
rng (h + c) c= dom (f2 * f1)
;
( (h ") (#) (((f2 * f1) /* (h + c)) - ((f2 * f1) /* c)) is convergent & lim ((h ") (#) (((f2 * f1) /* (h + c)) - ((f2 * f1) /* c))) = (diff (f2,(f1 . x0))) * (diff (f1,x0)) )
A6:
rng (h + c) c= dom f1
by A5, Th9;
set a =
f1 /* c;
A8:
rng c c= dom (f2 * f1)
set d =
(f1 /* (h + c)) - (f1 /* c);
A10:
lim h = 0
by FDIFF_1:def 1;
A11:
h is
convergent
by FDIFF_1:def 1;
then A12:
h + c is
convergent
by SEQ_2:5;
lim c = c . 0
by SEQ_4:25;
then
lim c = x0
by A7;
then A13:
lim (h + c) =
0 + x0
by A11, A10, SEQ_2:6
.=
x0
;
A14:
f1 is_continuous_in x0
by A2, FDIFF_1:24;
then A15:
f1 /* (h + c) is
convergent
by A6, A12, A13, FCONT_1:def 1;
A16:
f1 . x0 = lim (f1 /* (h + c))
by A6, A12, A13, A14, FCONT_1:def 1;
A17:
rng (f1 /* (h + c)) c= dom f2
by A5, Th9;
A18:
rng c c= dom f1
A20:
rng (f1 /* c) = {(f1 . x0)}
A24:
rng (f1 /* c) c= dom f2
then
f1 /* c is
constant
by VALUED_0:25;
then A28:
(f1 /* (h + c)) - (f1 /* c) is
convergent
by A15, SEQ_2:11;
reconsider a =
f1 /* c as
V8()
Real_Sequence by A26, VALUED_0:25;
a . 0 in rng a
by VALUED_0:28;
then
a . 0 = f1 . x0
by A20, TARSKI:def 1;
then
lim a = f1 . x0
by SEQ_4:25;
then A29:
lim ((f1 /* (h + c)) - (f1 /* c)) =
(f1 . x0) - (f1 . x0)
by A15, A16, SEQ_2:12
.=
0
;
(
(h ") (#) (((f2 * f1) /* (h + c)) - ((f2 * f1) /* c)) is
convergent &
lim ((h ") (#) (((f2 * f1) /* (h + c)) - ((f2 * f1) /* c))) = (diff (f2,(f1 . x0))) * (diff (f1,x0)) )
proof
per cases
( ex k being Element of NAT st
for n being Element of NAT st k <= n holds
(f1 /* (h + c)) . n <> f1 . x0 or for k being Element of NAT ex n being Element of NAT st
( k <= n & (f1 /* (h + c)) . n = f1 . x0 ) )
;
suppose
ex
k being
Element of
NAT st
for
n being
Element of
NAT st
k <= n holds
(f1 /* (h + c)) . n <> f1 . x0
;
( (h ") (#) (((f2 * f1) /* (h + c)) - ((f2 * f1) /* c)) is convergent & lim ((h ") (#) (((f2 * f1) /* (h + c)) - ((f2 * f1) /* c))) = (diff (f2,(f1 . x0))) * (diff (f1,x0)) )then consider k being
Element of
NAT such that A30:
for
n being
Element of
NAT st
k <= n holds
(f1 /* (h + c)) . n <> f1 . x0
;
then A32:
((f1 /* (h + c)) - (f1 /* c)) ^\ k is
non-empty
by SEQ_1:5;
set c1 =
c ^\ k;
set h1 =
h ^\ k;
set a1 =
a ^\ k;
set s =
((h ^\ k) ") (#) ((f1 /* ((h ^\ k) + (c ^\ k))) - (f1 /* (c ^\ k)));
lim (((f1 /* (h + c)) - (f1 /* c)) ^\ k) = 0
by A28, A29, SEQ_4:20;
then reconsider d1 =
((f1 /* (h + c)) - (f1 /* c)) ^\ k as
convergent_to_0 Real_Sequence by A28, A32, FDIFF_1:def 1;
set t =
(d1 ") (#) ((f2 /* (d1 + (a ^\ k))) - (f2 /* (a ^\ k)));
d1 + (a ^\ k) = (((f1 /* (h + c)) - (f1 /* c)) + a) ^\ k
by SEQM_3:15;
then A34:
d1 + (a ^\ k) = (f1 /* (h + c)) ^\ k
by A33, FUNCT_2:63;
rng ((f1 /* (h + c)) ^\ k) c= rng (f1 /* (h + c))
by VALUED_0:21;
then A35:
rng (d1 + (a ^\ k)) c= dom f2
by A17, A34, XBOOLE_1:1;
A36:
rng (a ^\ k) = {(f1 . x0)}
by A20, VALUED_0:26;
then A37:
lim ((d1 ") (#) ((f2 /* (d1 + (a ^\ k))) - (f2 /* (a ^\ k)))) = diff (
f2,
(f1 . x0))
by A3, A35, Th12;
diff (
f2,
(f1 . x0))
= diff (
f2,
(f1 . x0))
;
then A38:
(d1 ") (#) ((f2 /* (d1 + (a ^\ k))) - (f2 /* (a ^\ k))) is
convergent
by A3, A36, A35, Th12;
rng ((h + c) ^\ k) c= rng (h + c)
by VALUED_0:21;
then
rng ((h + c) ^\ k) c= dom f1
by A6, XBOOLE_1:1;
then A39:
rng ((h ^\ k) + (c ^\ k)) c= dom f1
by SEQM_3:15;
A40:
rng (c ^\ k) = {x0}
by A4, VALUED_0:26;
diff (
f1,
x0)
= diff (
f1,
x0)
;
then A41:
((h ^\ k) ") (#) ((f1 /* ((h ^\ k) + (c ^\ k))) - (f1 /* (c ^\ k))) is
convergent
by A2, A40, A39, Th12;
A42:
((d1 ") (#) ((f2 /* (d1 + (a ^\ k))) - (f2 /* (a ^\ k)))) (#) (((h ^\ k) ") (#) ((f1 /* ((h ^\ k) + (c ^\ k))) - (f1 /* (c ^\ k)))) =
((d1 ") (#) ((f2 /* (d1 + (a ^\ k))) - (f2 /* (a ^\ k)))) (#) (((f1 /* ((h + c) ^\ k)) - (f1 /* (c ^\ k))) (#) ((h ^\ k) "))
by SEQM_3:15
.=
((d1 ") (#) ((f2 /* (d1 + (a ^\ k))) - (f2 /* (a ^\ k)))) (#) ((((f1 /* (h + c)) ^\ k) - (f1 /* (c ^\ k))) (#) ((h ^\ k) "))
by A6, VALUED_0:27
.=
((d1 ") (#) ((f2 /* (d1 + (a ^\ k))) - (f2 /* (a ^\ k)))) (#) ((((f1 /* (h + c)) ^\ k) - ((f1 /* c) ^\ k)) (#) ((h ^\ k) "))
by A18, VALUED_0:27
.=
(((f2 /* (d1 + (a ^\ k))) - (f2 /* (a ^\ k))) /" d1) (#) (d1 (#) ((h ^\ k) "))
by SEQM_3:17
.=
((((f2 /* (d1 + (a ^\ k))) - (f2 /* (a ^\ k))) /" d1) (#) d1) (#) ((h ^\ k) ")
by SEQ_1:14
.=
((f2 /* (d1 + (a ^\ k))) - (f2 /* (a ^\ k))) (#) ((h ^\ k) ")
by A32, SEQ_1:37
.=
(((f2 /* (f1 /* (h + c))) ^\ k) - (f2 /* (a ^\ k))) (#) ((h ^\ k) ")
by A17, A34, VALUED_0:27
.=
((((f2 * f1) /* (h + c)) ^\ k) - (f2 /* (a ^\ k))) (#) ((h ^\ k) ")
by A5, VALUED_0:31
.=
((((f2 * f1) /* (h + c)) ^\ k) - ((f2 /* a) ^\ k)) (#) ((h ^\ k) ")
by A24, VALUED_0:27
.=
((((f2 * f1) /* (h + c)) ^\ k) - (((f2 * f1) /* c) ^\ k)) (#) ((h ^\ k) ")
by A8, VALUED_0:31
.=
((((f2 * f1) /* (h + c)) - ((f2 * f1) /* c)) ^\ k) (#) ((h ^\ k) ")
by SEQM_3:17
.=
((((f2 * f1) /* (h + c)) - ((f2 * f1) /* c)) ^\ k) (#) ((h ") ^\ k)
by SEQM_3:18
.=
((h ") (#) (((f2 * f1) /* (h + c)) - ((f2 * f1) /* c))) ^\ k
by SEQM_3:19
;
then A43:
((h ") (#) (((f2 * f1) /* (h + c)) - ((f2 * f1) /* c))) ^\ k is
convergent
by A41, A38, SEQ_2:14;
hence
(h ") (#) (((f2 * f1) /* (h + c)) - ((f2 * f1) /* c)) is
convergent
by SEQ_4:21;
lim ((h ") (#) (((f2 * f1) /* (h + c)) - ((f2 * f1) /* c))) = (diff (f2,(f1 . x0))) * (diff (f1,x0))
lim (((h ^\ k) ") (#) ((f1 /* ((h ^\ k) + (c ^\ k))) - (f1 /* (c ^\ k)))) = diff (
f1,
x0)
by A2, A40, A39, Th12;
then
lim (((h ") (#) (((f2 * f1) /* (h + c)) - ((f2 * f1) /* c))) ^\ k) = (diff (f2,(f1 . x0))) * (diff (f1,x0))
by A42, A41, A38, A37, SEQ_2:15;
hence
lim ((h ") (#) (((f2 * f1) /* (h + c)) - ((f2 * f1) /* c))) = (diff (f2,(f1 . x0))) * (diff (f1,x0))
by A43, SEQ_4:22;
verum end; suppose A44:
for
k being
Element of
NAT ex
n being
Element of
NAT st
(
k <= n &
(f1 /* (h + c)) . n = f1 . x0 )
;
( (h ") (#) (((f2 * f1) /* (h + c)) - ((f2 * f1) /* c)) is convergent & lim ((h ") (#) (((f2 * f1) /* (h + c)) - ((f2 * f1) /* c))) = (diff (f2,(f1 . x0))) * (diff (f1,x0)) )defpred S1[
set ]
means $1
= f1 . x0;
A45:
for
k being
Element of
NAT ex
n being
Element of
NAT st
(
k <= n &
S1[
(f1 /* (h + c)) . n] )
by A44;
consider I1 being
V36()
sequence of
NAT such that A46:
for
n being
Element of
NAT holds
S1[
((f1 /* (h + c)) * I1) . n]
and
for
n being
Element of
NAT st ( for
r being
Real st
r = (f1 /* (h + c)) . n holds
S1[
r] ) holds
ex
m being
Element of
NAT st
n = I1 . m
from FDIFF_2:sch 1(A45);
h * I1 is
subsequence of
h
by VALUED_0:def 17;
then reconsider h1 =
h * I1 as
convergent_to_0 Real_Sequence by Th6;
set c1 =
c * I1;
A47:
c * I1 is
subsequence of
c
by VALUED_0:def 17;
then A48:
c * I1 = c
by VALUED_0:26;
A49:
rng (c * I1) = {x0}
by A4, A47, VALUED_0:26;
reconsider c1 =
c * I1 as
V8()
Real_Sequence ;
(h + c) * I1 is
subsequence of
h + c
by VALUED_0:def 17;
then
rng ((h + c) * I1) c= rng (h + c)
by VALUED_0:21;
then
rng ((h + c) * I1) c= dom f1
by A6, XBOOLE_1:1;
then A52:
rng (h1 + c1) c= dom f1
by RFUNCT_2:2;
then A53:
lim ((h1 ") (#) ((f1 /* (h1 + c1)) - (f1 /* c1))) = diff (
f1,
x0)
by A2, A49, Th12;
diff (
f1,
x0)
= diff (
f1,
x0)
;
then
(h1 ") (#) ((f1 /* (h1 + c1)) - (f1 /* c1)) is
convergent
by A2, A49, A52, Th12;
then A54:
diff (
f1,
x0)
= 0
by A53, A50, SEQ_2:def 7;
now per cases
( ex k being Element of NAT st
for n being Element of NAT st k <= n holds
(f1 /* (h + c)) . n = f1 . x0 or for k being Element of NAT ex n being Element of NAT st
( k <= n & (f1 /* (h + c)) . n <> f1 . x0 ) )
;
suppose
ex
k being
Element of
NAT st
for
n being
Element of
NAT st
k <= n holds
(f1 /* (h + c)) . n = f1 . x0
;
( (h ") (#) (((f2 * f1) /* (h + c)) - ((f2 * f1) /* c)) is convergent & lim ((h ") (#) (((f2 * f1) /* (h + c)) - ((f2 * f1) /* c))) = (diff (f2,(f1 . x0))) * (diff (f1,x0)) )then consider k being
Element of
NAT such that A55:
for
n being
Element of
NAT st
k <= n holds
(f1 /* (h + c)) . n = f1 . x0
;
A56:
now let g be
real number ;
( 0 < g implies ex n being Element of NAT st
for m being Element of NAT st n <= m holds
abs ((((h ") (#) (((f2 * f1) /* (h + c)) - ((f2 * f1) /* c))) . m) - ((diff (f2,(f1 . x0))) * (diff (f1,x0)))) < g )assume A57:
0 < g
;
ex n being Element of NAT st
for m being Element of NAT st n <= m holds
abs ((((h ") (#) (((f2 * f1) /* (h + c)) - ((f2 * f1) /* c))) . m) - ((diff (f2,(f1 . x0))) * (diff (f1,x0)))) < gtake n =
k;
for m being Element of NAT st n <= m holds
abs ((((h ") (#) (((f2 * f1) /* (h + c)) - ((f2 * f1) /* c))) . m) - ((diff (f2,(f1 . x0))) * (diff (f1,x0)))) < glet m be
Element of
NAT ;
( n <= m implies abs ((((h ") (#) (((f2 * f1) /* (h + c)) - ((f2 * f1) /* c))) . m) - ((diff (f2,(f1 . x0))) * (diff (f1,x0)))) < g )assume
n <= m
;
abs ((((h ") (#) (((f2 * f1) /* (h + c)) - ((f2 * f1) /* c))) . m) - ((diff (f2,(f1 . x0))) * (diff (f1,x0)))) < gthen A58:
(f1 /* (h + c)) . m = f1 . x0
by A55;
abs ((((h ") (#) (((f2 * f1) /* (h + c)) - ((f2 * f1) /* c))) . m) - ((diff (f2,(f1 . x0))) * (diff (f1,x0)))) =
abs (((h ") . m) * ((((f2 * f1) /* (h + c)) - ((f2 * f1) /* c)) . m))
by A54, SEQ_1:8
.=
abs (((h ") . m) * ((((f2 * f1) /* (h + c)) . m) - (((f2 * f1) /* c) . m)))
by RFUNCT_2:1
.=
abs (((h ") . m) * (((f2 /* (f1 /* (h + c))) . m) - (((f2 * f1) /* c) . m)))
by A5, VALUED_0:31
.=
abs (((h ") . m) * ((f2 . ((f1 /* (h + c)) . m)) - (((f2 * f1) /* c) . m)))
by A17, FUNCT_2:108
.=
abs (((h ") . m) * ((f2 . (f1 . x0)) - ((f2 /* (f1 /* c)) . m)))
by A8, A58, VALUED_0:31
.=
abs (((h ") . m) * ((f2 . (f1 . x0)) - (f2 . ((f1 /* c) . m))))
by A24, FUNCT_2:108
.=
abs (((h ") . m) * ((f2 . (f1 . x0)) - (f2 . (f1 . (c . m)))))
by A18, FUNCT_2:108
.=
abs (((h ") . m) * ((f2 . (f1 . x0)) - (f2 . (f1 . x0))))
by A7
.=
0
by ABSVALUE:2
;
hence
abs ((((h ") (#) (((f2 * f1) /* (h + c)) - ((f2 * f1) /* c))) . m) - ((diff (f2,(f1 . x0))) * (diff (f1,x0)))) < g
by A57;
verum end; hence
(h ") (#) (((f2 * f1) /* (h + c)) - ((f2 * f1) /* c)) is
convergent
by SEQ_2:def 6;
lim ((h ") (#) (((f2 * f1) /* (h + c)) - ((f2 * f1) /* c))) = (diff (f2,(f1 . x0))) * (diff (f1,x0))hence
lim ((h ") (#) (((f2 * f1) /* (h + c)) - ((f2 * f1) /* c))) = (diff (f2,(f1 . x0))) * (diff (f1,x0))
by A56, SEQ_2:def 7;
verum end; suppose A59:
for
k being
Element of
NAT ex
n being
Element of
NAT st
(
k <= n &
(f1 /* (h + c)) . n <> f1 . x0 )
;
( (h ") (#) (((f2 * f1) /* (h + c)) - ((f2 * f1) /* c)) is convergent & lim ((h ") (#) (((f2 * f1) /* (h + c)) - ((f2 * f1) /* c))) = (diff (f2,(f1 . x0))) * (diff (f1,x0)) )defpred S2[
set ]
means $1
<> f1 . x0;
A60:
for
k being
Element of
NAT ex
n being
Element of
NAT st
(
k <= n &
S2[
(f1 /* (h + c)) . n] )
by A59;
consider I2 being
V36()
sequence of
NAT such that A61:
for
n being
Element of
NAT holds
S2[
((f1 /* (h + c)) * I2) . n]
and A62:
for
n being
Element of
NAT st ( for
r being
Real st
r = (f1 /* (h + c)) . n holds
S2[
r] ) holds
ex
m being
Element of
NAT st
n = I2 . m
from FDIFF_2:sch 1(A60);
then A64:
((f1 /* (h + c)) - (f1 /* c)) * I2 is
non-empty
by SEQ_1:5;
h * I2 is
subsequence of
h
by VALUED_0:def 17;
then reconsider h2 =
h * I2 as
convergent_to_0 Real_Sequence by Th6;
set a1 =
a * I2;
set c2 =
c * I2;
reconsider c2 =
c * I2 as
V8()
Real_Sequence ;
set s =
(h2 ") (#) ((f1 /* (h2 + c2)) - (f1 /* c2));
A65:
((f1 /* (h + c)) - (f1 /* c)) * I2 is
subsequence of
(f1 /* (h + c)) - (f1 /* c)
by VALUED_0:def 17;
then A66:
((f1 /* (h + c)) - (f1 /* c)) * I2 is
convergent
by A28, SEQ_4:16;
lim (((f1 /* (h + c)) - (f1 /* c)) * I2) = 0
by A28, A29, A65, SEQ_4:17;
then reconsider d1 =
((f1 /* (h + c)) - (f1 /* c)) * I2 as
convergent_to_0 Real_Sequence by A66, A64, FDIFF_1:def 1;
set t =
(d1 ") (#) ((f2 /* (d1 + (a * I2))) - (f2 /* (a * I2)));
a * I2 is
subsequence of
a
by VALUED_0:def 17;
then A67:
rng (a * I2) = {(f1 . x0)}
by A20, VALUED_0:26;
d1 + (a * I2) = (((f1 /* (h + c)) - (f1 /* c)) + a) * I2
by RFUNCT_2:2;
then A69:
d1 + (a * I2) = (f1 /* (h + c)) * I2
by A68, FUNCT_2:63;
A70:
((d1 ") (#) ((f2 /* (d1 + (a * I2))) - (f2 /* (a * I2)))) (#) ((h2 ") (#) ((f1 /* (h2 + c2)) - (f1 /* c2))) =
((d1 ") (#) ((f2 /* (d1 + (a * I2))) - (f2 /* (a * I2)))) (#) (((f1 /* ((h + c) * I2)) - (f1 /* c2)) (#) (h2 "))
by RFUNCT_2:2
.=
((d1 ") (#) ((f2 /* (d1 + (a * I2))) - (f2 /* (a * I2)))) (#) ((((f1 /* (h + c)) * I2) - (f1 /* c2)) (#) (h2 "))
by A6, FUNCT_2:110
.=
((d1 ") (#) ((f2 /* (d1 + (a * I2))) - (f2 /* (a * I2)))) (#) ((((f1 /* (h + c)) * I2) - ((f1 /* c) * I2)) (#) (h2 "))
by A18, FUNCT_2:110
.=
(((f2 /* (d1 + (a * I2))) - (f2 /* (a * I2))) /" d1) (#) (d1 (#) (h2 "))
by RFUNCT_2:2
.=
((((f2 /* (d1 + (a * I2))) - (f2 /* (a * I2))) /" d1) (#) d1) (#) (h2 ")
by SEQ_1:14
.=
((f2 /* (d1 + (a * I2))) - (f2 /* (a * I2))) (#) (h2 ")
by A64, SEQ_1:37
.=
(((f2 /* (f1 /* (h + c))) * I2) - (f2 /* (a * I2))) (#) (h2 ")
by A17, A69, FUNCT_2:110
.=
((((f2 * f1) /* (h + c)) * I2) - (f2 /* (a * I2))) (#) (h2 ")
by A5, VALUED_0:31
.=
((((f2 * f1) /* (h + c)) * I2) - ((f2 /* a) * I2)) (#) (h2 ")
by A24, FUNCT_2:110
.=
((((f2 * f1) /* (h + c)) * I2) - (((f2 * f1) /* c) * I2)) (#) (h2 ")
by A8, VALUED_0:31
.=
((((f2 * f1) /* (h + c)) - ((f2 * f1) /* c)) * I2) (#) (h2 ")
by RFUNCT_2:2
.=
((((f2 * f1) /* (h + c)) - ((f2 * f1) /* c)) * I2) (#) ((h ") * I2)
by RFUNCT_2:5
.=
((h ") (#) (((f2 * f1) /* (h + c)) - ((f2 * f1) /* c))) * I2
by RFUNCT_2:2
;
reconsider a1 =
a * I2 as
V8()
Real_Sequence ;
(f1 /* (h + c)) * I2 is
subsequence of
f1 /* (h + c)
by VALUED_0:def 17;
then
rng ((f1 /* (h + c)) * I2) c= rng (f1 /* (h + c))
by VALUED_0:21;
then A71:
rng (d1 + a1) c= dom f2
by A17, A69, XBOOLE_1:1;
(h + c) * I2 is
subsequence of
h + c
by VALUED_0:def 17;
then
rng ((h + c) * I2) c= rng (h + c)
by VALUED_0:21;
then
rng ((h + c) * I2) c= dom f1
by A6, XBOOLE_1:1;
then A72:
rng (h2 + c2) c= dom f1
by RFUNCT_2:2;
c2 is
subsequence of
c
by VALUED_0:def 17;
then A73:
rng c2 = {x0}
by A4, VALUED_0:26;
then A74:
lim ((h2 ") (#) ((f1 /* (h2 + c2)) - (f1 /* c2))) = diff (
f1,
x0)
by A2, A72, Th12;
diff (
f1,
x0)
= diff (
f1,
x0)
;
then A75:
(h2 ") (#) ((f1 /* (h2 + c2)) - (f1 /* c2)) is
convergent
by A2, A73, A72, Th12;
diff (
f2,
(f1 . x0))
= diff (
f2,
(f1 . x0))
;
then A76:
(d1 ") (#) ((f2 /* (d1 + (a * I2))) - (f2 /* (a * I2))) is
convergent
by A3, A67, A71, Th12;
then A77:
((h ") (#) (((f2 * f1) /* (h + c)) - ((f2 * f1) /* c))) * I2 is
convergent
by A70, A75, SEQ_2:14;
lim ((d1 ") (#) ((f2 /* (d1 + (a * I2))) - (f2 /* (a * I2)))) = diff (
f2,
(f1 . x0))
by A3, A67, A71, Th12;
then A78:
lim (((h ") (#) (((f2 * f1) /* (h + c)) - ((f2 * f1) /* c))) * I2) = (diff (f2,(f1 . x0))) * (diff (f1,x0))
by A70, A75, A74, A76, SEQ_2:15;
A79:
now set DF =
(diff (f2,(f1 . x0))) * (diff (f1,x0));
let g be
real number ;
( 0 < g implies ex n being Element of NAT st
for m being Element of NAT st n <= m holds
abs ((((h ") (#) (((f2 * f1) /* (h + c)) - ((f2 * f1) /* c))) . m) - ((diff (f2,(f1 . x0))) * (diff (f1,x0)))) < g )assume A80:
0 < g
;
ex n being Element of NAT st
for m being Element of NAT st n <= m holds
abs ((((h ") (#) (((f2 * f1) /* (h + c)) - ((f2 * f1) /* c))) . m) - ((diff (f2,(f1 . x0))) * (diff (f1,x0)))) < gconsider k being
Element of
NAT such that A81:
for
m being
Element of
NAT st
k <= m holds
abs (((((h ") (#) (((f2 * f1) /* (h + c)) - ((f2 * f1) /* c))) * I2) . m) - ((diff (f2,(f1 . x0))) * (diff (f1,x0)))) < g
by A77, A78, A80, SEQ_2:def 7;
take n =
I2 . k;
for m being Element of NAT st n <= m holds
abs ((((h ") (#) (((f2 * f1) /* (h + c)) - ((f2 * f1) /* c))) . m) - ((diff (f2,(f1 . x0))) * (diff (f1,x0)))) < glet m be
Element of
NAT ;
( n <= m implies abs ((((h ") (#) (((f2 * f1) /* (h + c)) - ((f2 * f1) /* c))) . m) - ((diff (f2,(f1 . x0))) * (diff (f1,x0)))) < g )assume A82:
n <= m
;
abs ((((h ") (#) (((f2 * f1) /* (h + c)) - ((f2 * f1) /* c))) . m) - ((diff (f2,(f1 . x0))) * (diff (f1,x0)))) < gnow per cases
( (f1 /* (h + c)) . m = f1 . x0 or (f1 /* (h + c)) . m <> f1 . x0 )
;
suppose A83:
(f1 /* (h + c)) . m = f1 . x0
;
abs ((((h ") (#) (((f2 * f1) /* (h + c)) - ((f2 * f1) /* c))) . m) - ((diff (f2,(f1 . x0))) * (diff (f1,x0)))) < g abs ((((h ") (#) (((f2 * f1) /* (h + c)) - ((f2 * f1) /* c))) . m) - ((diff (f2,(f1 . x0))) * (diff (f1,x0)))) =
abs (((h ") . m) * ((((f2 * f1) /* (h + c)) - ((f2 * f1) /* c)) . m))
by A54, SEQ_1:8
.=
abs (((h ") . m) * ((((f2 * f1) /* (h + c)) . m) - (((f2 * f1) /* c) . m)))
by RFUNCT_2:1
.=
abs (((h ") . m) * ((((f2 * f1) /* (h + c)) . m) - ((f2 /* (f1 /* c)) . m)))
by A8, VALUED_0:31
.=
abs (((h ") . m) * ((((f2 * f1) /* (h + c)) . m) - (f2 . ((f1 /* c) . m))))
by A24, FUNCT_2:108
.=
abs (((h ") . m) * ((((f2 * f1) /* (h + c)) . m) - (f2 . (f1 . (c . m)))))
by A18, FUNCT_2:108
.=
abs (((h ") . m) * ((((f2 * f1) /* (h + c)) . m) - (f2 . (f1 . x0))))
by A7
.=
abs (((h ") . m) * (((f2 /* (f1 /* (h + c))) . m) - (f2 . (f1 . x0))))
by A5, VALUED_0:31
.=
abs (((h ") . m) * ((f2 . (f1 . x0)) - (f2 . (f1 . x0))))
by A17, A83, FUNCT_2:108
.=
0
by ABSVALUE:2
;
hence
abs ((((h ") (#) (((f2 * f1) /* (h + c)) - ((f2 * f1) /* c))) . m) - ((diff (f2,(f1 . x0))) * (diff (f1,x0)))) < g
by A80;
verum end; end; end; hence
abs ((((h ") (#) (((f2 * f1) /* (h + c)) - ((f2 * f1) /* c))) . m) - ((diff (f2,(f1 . x0))) * (diff (f1,x0)))) < g
;
verum end; hence
(h ") (#) (((f2 * f1) /* (h + c)) - ((f2 * f1) /* c)) is
convergent
by SEQ_2:def 6;
lim ((h ") (#) (((f2 * f1) /* (h + c)) - ((f2 * f1) /* c))) = (diff (f2,(f1 . x0))) * (diff (f1,x0))hence
lim ((h ") (#) (((f2 * f1) /* (h + c)) - ((f2 * f1) /* c))) = (diff (f2,(f1 . x0))) * (diff (f1,x0))
by A79, SEQ_2:def 7;
verum end; end; end; hence
(
(h ") (#) (((f2 * f1) /* (h + c)) - ((f2 * f1) /* c)) is
convergent &
lim ((h ") (#) (((f2 * f1) /* (h + c)) - ((f2 * f1) /* c))) = (diff (f2,(f1 . x0))) * (diff (f1,x0)) )
;
verum end; end;
end;
hence
(
(h ") (#) (((f2 * f1) /* (h + c)) - ((f2 * f1) /* c)) is
convergent &
lim ((h ") (#) (((f2 * f1) /* (h + c)) - ((f2 * f1) /* c))) = (diff (f2,(f1 . x0))) * (diff (f1,x0)) )
;
verum
end;
hence
( f2 * f1 is_differentiable_in x0 & diff ((f2 * f1),x0) = (diff (f2,(f1 . x0))) * (diff (f1,x0)) )
by A1, Th12; verum