let x0 be Real; :: thesis: for f1, f2 being PartFunc of REAL,REAL st f1 is_differentiable_in x0 & f2 is_left_differentiable_in f1 . x0 & ( for r1 being Real st r1 > 0 holds
ex r0 being Real st
( r0 > 0 & [.(x0 - r0),(x0 + r0).] c= dom ([.((f1 . x0) - r1),(f1 . x0).] |` f1) ) ) holds
( f2 * f1 is_differentiable_in x0 & diff ((f2 * f1),x0) = (Ldiff (f2,(f1 . x0))) * (diff (f1,x0)) )

let f1, f2 be PartFunc of REAL,REAL; :: thesis: ( f1 is_differentiable_in x0 & f2 is_left_differentiable_in f1 . x0 & ( for r1 being Real st r1 > 0 holds
ex r0 being Real st
( r0 > 0 & [.(x0 - r0),(x0 + r0).] c= dom ([.((f1 . x0) - r1),(f1 . x0).] |` f1) ) ) implies ( f2 * f1 is_differentiable_in x0 & diff ((f2 * f1),x0) = (Ldiff (f2,(f1 . x0))) * (diff (f1,x0)) ) )

assume that
A1: f1 is_differentiable_in x0 and
A2: f2 is_left_differentiable_in f1 . x0 and
A3: for r1 being Real st r1 > 0 holds
ex r0 being Real st
( r0 > 0 & [.(x0 - r0),(x0 + r0).] c= dom ([.((f1 . x0) - r1),(f1 . x0).] |` f1) ) ; :: thesis: ( f2 * f1 is_differentiable_in x0 & diff ((f2 * f1),x0) = (Ldiff (f2,(f1 . x0))) * (diff (f1,x0)) )
A4: ( f1 is_right_differentiable_in x0 & f1 is_left_differentiable_in x0 & diff (f1,x0) = Rdiff (f1,x0) & diff (f1,x0) = Ldiff (f1,x0) ) by A1, FDIFF_3:22;
for r1 being Real st r1 > 0 holds
ex r0 being Real st
( r0 > 0 & [.x0,(x0 + r0).] c= dom ([.((f1 . x0) - r1),(f1 . x0).] |` f1) )
proof
let r1 be Real; :: thesis: ( r1 > 0 implies ex r0 being Real st
( r0 > 0 & [.x0,(x0 + r0).] c= dom ([.((f1 . x0) - r1),(f1 . x0).] |` f1) ) )

assume r1 > 0 ; :: thesis: ex r0 being Real st
( r0 > 0 & [.x0,(x0 + r0).] c= dom ([.((f1 . x0) - r1),(f1 . x0).] |` f1) )

then consider r0 being Real such that
A5: ( r0 > 0 & [.(x0 - r0),(x0 + r0).] c= dom ([.((f1 . x0) - r1),(f1 . x0).] |` f1) ) by A3;
take r0 ; :: thesis: ( r0 > 0 & [.x0,(x0 + r0).] c= dom ([.((f1 . x0) - r1),(f1 . x0).] |` f1) )
x0 - r0 < x0 by A5, XREAL_1:44;
then [.x0,(x0 + r0).] c= [.(x0 - r0),(x0 + r0).] by XXREAL_1:34;
hence ( r0 > 0 & [.x0,(x0 + r0).] c= dom ([.((f1 . x0) - r1),(f1 . x0).] |` f1) ) by A5; :: thesis: verum
end;
then A6: ( f2 * f1 is_right_differentiable_in x0 & Rdiff ((f2 * f1),x0) = (Ldiff (f2,(f1 . x0))) * (Rdiff (f1,x0)) ) by A4, A2, Th45;
for r1 being Real st r1 > 0 holds
ex r0 being Real st
( r0 > 0 & [.(x0 - r0),x0.] c= dom ([.((f1 . x0) - r1),(f1 . x0).] |` f1) )
proof
let r1 be Real; :: thesis: ( r1 > 0 implies ex r0 being Real st
( r0 > 0 & [.(x0 - r0),x0.] c= dom ([.((f1 . x0) - r1),(f1 . x0).] |` f1) ) )

assume r1 > 0 ; :: thesis: ex r0 being Real st
( r0 > 0 & [.(x0 - r0),x0.] c= dom ([.((f1 . x0) - r1),(f1 . x0).] |` f1) )

then consider r0 being Real such that
A7: ( r0 > 0 & [.(x0 - r0),(x0 + r0).] c= dom ([.((f1 . x0) - r1),(f1 . x0).] |` f1) ) by A3;
take r0 ; :: thesis: ( r0 > 0 & [.(x0 - r0),x0.] c= dom ([.((f1 . x0) - r1),(f1 . x0).] |` f1) )
x0 < x0 + r0 by A7, XREAL_1:29;
then [.(x0 - r0),x0.] c= [.(x0 - r0),(x0 + r0).] by XXREAL_1:34;
hence ( r0 > 0 & [.(x0 - r0),x0.] c= dom ([.((f1 . x0) - r1),(f1 . x0).] |` f1) ) by A7; :: thesis: verum
end;
then ( f2 * f1 is_left_differentiable_in x0 & Ldiff ((f2 * f1),x0) = (Ldiff (f2,(f1 . x0))) * (Ldiff (f1,x0)) ) by A4, A2, Th46;
hence ( f2 * f1 is_differentiable_in x0 & diff ((f2 * f1),x0) = (Ldiff (f2,(f1 . x0))) * (diff (f1,x0)) ) by A4, A6, FDIFF_3:21; :: thesis: verum