let Z be open Subset of REAL; :: thesis: for f being PartFunc of REAL,REAL st Z c= dom f & ex r being Real st rng f = {r} holds
( f is_differentiable_on Z & ( for x being Real st x in Z holds
(f `| Z) . x = 0 ) )

let f be PartFunc of REAL,REAL; :: thesis: ( Z c= dom f & ex r being Real st rng f = {r} implies ( f is_differentiable_on Z & ( for x being Real st x in Z holds
(f `| Z) . x = 0 ) ) )

set R = cf;
A1: dom cf = REAL by FUNCOP_1:13;
now
let h be convergent_to_0 Real_Sequence; :: thesis: ( (h ") (#) (cf /* h) is convergent & lim ((h ") (#) (cf /* h)) = 0 )
A2: now
let n be Nat; :: thesis: ((h ") (#) (cf /* h)) . n = 0
A3: rng h c= dom cf by A1;
A4: n in NAT by ORDINAL1:def 12;
hence ((h ") (#) (cf /* h)) . n = ((h ") . n) * ((cf /* h) . n) by SEQ_1:8
.= ((h ") . n) * (cf . (h . n)) by A4, A3, FUNCT_2:108
.= ((h ") . n) * 0 by FUNCOP_1:7
.= 0 ;
:: thesis: verum
end;
then A5: (h ") (#) (cf /* h) is constant by VALUED_0:def 18;
hence (h ") (#) (cf /* h) is convergent ; :: thesis: lim ((h ") (#) (cf /* h)) = 0
((h ") (#) (cf /* h)) . 0 = 0 by A2;
hence lim ((h ") (#) (cf /* h)) = 0 by A5, SEQ_4:25; :: thesis: verum
end;
then reconsider R = cf as REST by Def3;
set L = cf;
for p being Real holds cf . p = 0 * p by FUNCOP_1:7;
then reconsider L = cf as LINEAR by Def4;
assume A6: Z c= dom f ; :: thesis: ( for r being Real holds not rng f = {r} or ( f is_differentiable_on Z & ( for x being Real st x in Z holds
(f `| Z) . x = 0 ) ) )

given r being Real such that A7: rng f = {r} ; :: thesis: ( f is_differentiable_on Z & ( for x being Real st x in Z holds
(f `| Z) . x = 0 ) )

A8: now
let x0 be Real; :: thesis: ( x0 in dom f implies f . x0 = r )
assume x0 in dom f ; :: thesis: f . x0 = r
then f . x0 in {r} by A7, FUNCT_1:def 3;
hence f . x0 = r by TARSKI:def 1; :: thesis: verum
end;
A9: now
let x0 be Real; :: thesis: ( x0 in Z implies f is_differentiable_in x0 )
assume A10: x0 in Z ; :: thesis: f is_differentiable_in x0
then consider N being Neighbourhood of x0 such that
A11: N c= Z by RCOMP_1:18;
A12: N c= dom f by A6, A11, XBOOLE_1:1;
for x being Real st x in N holds
(f . x) - (f . x0) = (L . (x - x0)) + (R . (x - x0))
proof
let x be Real; :: thesis: ( x in N implies (f . x) - (f . x0) = (L . (x - x0)) + (R . (x - x0)) )
assume x in N ; :: thesis: (f . x) - (f . x0) = (L . (x - x0)) + (R . (x - x0))
hence (f . x) - (f . x0) = r - (f . x0) by A8, A12
.= r - r by A6, A8, A10
.= (L . (x - x0)) + 0 by FUNCOP_1:7
.= (L . (x - x0)) + (R . (x - x0)) by FUNCOP_1:7 ;
:: thesis: verum
end;
hence f is_differentiable_in x0 by A12, Def5; :: thesis: verum
end;
hence A13: f is_differentiable_on Z by A6, Th16; :: thesis: for x being Real st x in Z holds
(f `| Z) . x = 0

let x0 be Real; :: thesis: ( x0 in Z implies (f `| Z) . x0 = 0 )
assume A14: x0 in Z ; :: thesis: (f `| Z) . x0 = 0
then A15: f is_differentiable_in x0 by A9;
then ex N being Neighbourhood of x0 st
( N c= dom f & ex L being LINEAR ex R being REST st
for x being Real st x in N holds
(f . x) - (f . x0) = (L . (x - x0)) + (R . (x - x0)) ) by Def5;
then consider N being Neighbourhood of x0 such that
A16: N c= dom f ;
A17: for x being Real st x in N holds
(f . x) - (f . x0) = (L . (x - x0)) + (R . (x - x0))
proof
let x be Real; :: thesis: ( x in N implies (f . x) - (f . x0) = (L . (x - x0)) + (R . (x - x0)) )
assume x in N ; :: thesis: (f . x) - (f . x0) = (L . (x - x0)) + (R . (x - x0))
hence (f . x) - (f . x0) = r - (f . x0) by A8, A16
.= r - r by A6, A8, A14
.= (L . (x - x0)) + 0 by FUNCOP_1:7
.= (L . (x - x0)) + (R . (x - x0)) by FUNCOP_1:7 ;
:: thesis: verum
end;
thus (f `| Z) . x0 = diff (f,x0) by A13, A14, Def8
.= L . 1 by A15, A16, A17, Def6
.= 0 by FUNCOP_1:7 ; :: thesis: verum