reserve y for object, X for set;
reserve x,x0,x1,x2,g,g1,g2,r,r1,s,p,p1 for Real;
reserve n,m,k for Element of NAT;
reserve Y for Subset of REAL;
reserve Z for open Subset of REAL;
reserve s1,s3 for Real_Sequence;
reserve f,f1,f2 for PartFunc of REAL,REAL;
reserve h for non-zero 0-convergent Real_Sequence;
reserve c for constant Real_Sequence;
reserve R,R1,R2 for RestFunc;
reserve L,L1,L2 for LinearFunc;

theorem
  Z c= dom f & f|Z is constant implies f is_differentiable_on Z & for x
  st x in Z holds (f`|Z).x = 0
proof
  reconsider cf = REAL --> In(0,REAL) as Function of REAL, REAL;
  set R = cf;
  now
    let h;
A2: now
      let n be Nat;
A3:   rng h c= dom R;
A5:   n in NAT by ORDINAL1:def 12;
      thus ((h")(#)(R/*h)).n = (h".n)*((R/*h).n) by SEQ_1:8
        .=(h".n)*(R.(h.n)) by A5,A3,FUNCT_2:108
        .=(h".n)*0
        .=0;
    end;
    then
A6: (h")(#)(R/*h) is constant by VALUED_0:def 18;
    hence (h")(#)(R/*h) is convergent;
    ((h")(#)(R/*h)).0 = 0 by A2;
    hence lim ((h")(#)(R/*h)) = 0 by A6,SEQ_4:25;
  end;
  then reconsider R as RestFunc by Def2;
  set L = cf;
  for p holds L.p=0*p;
  then reconsider L as LinearFunc by Def3;
  assume that
A7: Z c= dom f and
A8: f|Z is constant;
  consider r being Element of REAL such that
A9: for x being Element of REAL st x in Z/\dom f holds f.x=r by A8,PARTFUN2:57;
A10: now
    let x0;
    assume
A11: x0 in Z;
    then consider N being Neighbourhood of x0 such that
A12: N c= Z by RCOMP_1:18;
A13: N c= dom f by A7,A12;
A14: x0 in Z/\dom f by A7,A11,XBOOLE_0:def 4;
    for x st x in N holds f.x-f.x0=L.(x-x0)+R.(x-x0)
    proof
      let x;
       reconsider xx = x, xx0 = x0 as Element of REAL by XREAL_0:def 1;
      assume x in N;
      then x in Z/\dom f by A12,A13,XBOOLE_0:def 4;
      hence f.x-f.x0=r-f.x0 by A9
        .=r - r by A9,A14
        .=L.(xx-xx0)+0
        .=L.(x-x0)+R.(x-x0);
    end;
    hence f is_differentiable_in x0 by A13;
  end;
  hence
A15: f is_differentiable_on Z by A7,Th9;
  let x0;
  assume
A16: x0 in Z;
  then consider N being Neighbourhood of x0 such that
A17: N c= Z by RCOMP_1:18;
A18: N c= dom f by A7,A17;
A19: x0 in Z/\dom f by A7,A16,XBOOLE_0:def 4;
A20: for x st x in N holds f.x-f.x0=L.(x-x0)+R.(x-x0)
  proof
    let x;
       reconsider xx = x, xx0 = x0 as Element of REAL by XREAL_0:def 1;
    assume x in N;
    then x in Z/\dom f by A17,A18,XBOOLE_0:def 4;
    hence f.x - f.x0 = r - f.x0 by A9
      .=r - r by A9,A19
      .=L.(xx-xx0) + 0
      .=L.(x-x0) + R.(x-x0);
  end;
A21: f is_differentiable_in x0 by A10,A16;
  reconsider j =1 as Element of REAL by XREAL_0:def 1;
  thus (f`|Z).x0 = diff(f,x0) by A15,A16,Def7
    .=L.j by A21,A18,A20,Def5
    .=0;
end;
