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 Th12:
  for x0 being Real for N being Neighbourhood of x0 st f
is_differentiable_in x0 & N c= dom f holds for h,c st rng c = {x0} & rng (h+c)
c= N holds h"(#)(f/*(h+c) - f/*c) is convergent & diff(f,x0) = lim (h"(#)(f/*(h
  +c) - f/*c))
proof
  let x0 be Real;
  let N be Neighbourhood of x0;
  assume that
A1: f is_differentiable_in x0 and
A2: N c= dom f;
  consider N1 be Neighbourhood of x0 such that
  N1 c= dom f and
A3: ex L,R st for x st x in N1 holds f.x - f.x0 = L.(x-x0) + R.(x-x0) by A1;
  consider N2 be Neighbourhood of x0 such that
A4: N2 c= N and
A5: N2 c= N1 by RCOMP_1:17;
A6: N2 c= dom f by A2,A4;
  let h,c such that
A7: rng c = {x0} and
A8: rng (h+c) c= N;
  consider g be Real such that
A9: 0<g and
A10: N2 = ].x0-g,x0+g.[ by RCOMP_1:def 6;
  x0 + 0 < x0 + g & x0 - g < x0 - 0 by A9,XREAL_1:8,15;
  then
A11: x0 in N2 by A10;
A12: rng c c= dom f
  proof
    let y be object;
    assume y in rng c;
    then y = x0 by A7,TARSKI:def 1;
    then y in N by A4,A11;
    hence thesis by A2;
  end;
  ex n st rng (c^\n) c= N2 & rng ((h+c)^\n) c= N2
  proof
    x0 in rng c by A7,TARSKI:def 1;
    then
A13: lim c = x0 by SEQ_4:25;
    lim h = 0;
    then lim (h + c) = 0 + x0 by A13,SEQ_2:6
      .= x0;
    then consider n being Nat such that
A14: for m being Nat st n<=m holds |.(h+c).m-x0.|<g by A9,
SEQ_2:def 7;
     reconsider n as Element of NAT by ORDINAL1:def 12;
    take n;
A15: rng (c^\n) = {x0} by A7,VALUED_0:26;
    thus rng (c^\n) c= N2
    by A11,A15,TARSKI:def 1;
    let y be object;
    assume y in rng ((h+c)^\n);
    then consider m such that
A16: y = ((h+c)^\n).m by FUNCT_2:113;
    n + 0 <= n+m by XREAL_1:7;
    then
A17: |.(h+c).(n+m)-x0.|<g by A14;
    then (h+c).(m+n) - x0 < g by SEQ_2:1;
    then ((h+c)^\n).m - x0 < g by NAT_1:def 3;
    then
A18: ((h+c)^\n).m < x0 + g by XREAL_1:19;
    -g < (h+c).(m+n) - x0 by A17,SEQ_2:1;
    then -g < ((h+c)^\n).m - x0 by NAT_1:def 3;
    then x0 +-g < ((h+c)^\n).m by XREAL_1:20;
    hence thesis by A10,A16,A18;
  end;
  then consider n such that
  rng (c^\n) c= N2 and
A19: rng ((h+c)^\n) c= N2;
  consider L,R such that
A20: for x st x in N1 holds f.x - f.x0 = L.(x-x0) + R.(x-x0) by A3;
A21: rng (c^\n) c= dom f
  proof
    let y be object;
    assume
A22: y in rng (c^\n);
    rng (c^\n) = rng c by VALUED_0:26;
    then y = x0 by A7,A22,TARSKI:def 1;
    then y in N by A4,A11;
    hence thesis by A2;
  end;
A23: L is total by Def3;
A24: (L/*(h^\n) + R/*(h^\n))(#)(h^\n)" is convergent & lim ((L/*(h^\n) + R/*
  (h^\n))(#)(h^\n)") = L.1
  proof
    deffunc F(Nat) = L.1 + ((R/*(h^\n))(#)(h^\n)").$1;
    consider s1 such that
A25: for k being Nat holds s1.k = F(k) from SEQ_1:sch 1;
A26: now
A27:  ((h^\n)")(#)(R/*(h^\n)) is convergent & lim (((h^\n)")(#) (R/*(h^\n
      )))=0 by Def2;
      let r be Real;
      assume 0<r;
      then consider m being Nat such that
A28:  for k being Nat st m<=k holds |.(((h^\n)")(#) (R/*(h^\n))).k - 0 .|<r
by A27,
SEQ_2:def 7;
      take n1=m;
      let k being Nat such that
A29:  n1<=k;
      |.s1.k-L.1.| = |.L.1 + ((R/*(h^\n))(#)(h^\n)").k - L.1 .| by A25
        .= |.(((h^\n)")(#)(R/*(h^\n))).k - 0 .|;
      hence |.s1.k-L.1.|<r by A28,A29;
    end;
    consider s such that
A30: for p1 holds L.p1=s*p1 by Def3;
A31: L.1 = s*1 by A30
      .= s;
    now
      let m;
A32:  (h^\n).m <> 0 by SEQ_1:5;
      thus ((L/*(h^\n) + R/*(h^\n))(#)(h^\n)").m = ((L/*(h^\n) + R/*(h^\n)).m)
      *((h^\n)").m by SEQ_1:8
        .= ((L/*(h^\n)).m + (R/*(h^\n)).m) *((h^\n)").m by SEQ_1:7
        .= ((L/*(h^\n)).m)*((h^\n)").m+((R/*(h^\n)).m)*((h^\n)").m
        .= ((L/*(h^\n)).m)*((h^\n)").m + ((R/*(h^\n))(#)(h^\n)").m by SEQ_1:8
        .= ((L/*(h^\n)).m)*((h^\n).m)" + ((R/*(h^\n))(#)(h^\n)").m by
VALUED_1:10
        .= (L.((h^\n).m))*((h^\n).m)" + ((R/*(h^\n))(#) (h^\n)").m by A23,
FUNCT_2:115
        .= (s*((h^\n).m))*((h^\n).m)" + ((R/*(h^\n))(#)(h^\n)").m by A30
        .= s*(((h^\n).m)*((h^\n).m)") + ((R/*(h^\n))(#)(h^\n)").m
        .= s*1 + ((R/*(h^\n))(#)(h^\n)").m by A32,XCMPLX_0:def 7
        .= s1.m by A25,A31;
    end;
    then
A33: (L/*(h^\n) + R/*(h^\n))(#)(h^\n)" = s1 by FUNCT_2:63;
    hence (L/*(h^\n) + R/*(h^\n))(#)(h^\n)" is convergent by A26,SEQ_2:def 6;
    hence thesis by A33,A26,SEQ_2:def 7;
  end;
A34: rng ((h+c)^\n) c= dom f
  by A19,A4,A2;
A35: rng (h+c) c= dom f
  by A8,A2;
A36: for k holds f.(((h+c)^\n).k) - f.((c^\n).k) = L.((h^\n).k) + R.((h^\n). k)
  proof
    let k;
    ((h+c)^\n).k in rng ((h+c)^\n) by VALUED_0:28;
    then
A37: ((h+c)^\n).k in N2 by A19;
    (c^\n).k in rng (c^\n) & rng (c^\n) = rng c by VALUED_0:26,28;
    then
A38: (c^\n).k = x0 by A7,TARSKI:def 1;
    ((h+c)^\n).k - (c^\n).k = (h^\n + c^\n).k - (c^\n).k by SEQM_3:15
      .= (h^\n).k + (c^\n).k - (c^\n).k by SEQ_1:7
      .= (h^\n).k;
    hence thesis by A20,A5,A37,A38;
  end;
A39: R is total by Def2;
  now
    let k;
    thus (f/*((h+c)^\n)-f/*(c^\n)).k = (f/*((h+c)^\n)).k-(f/*(c^\n)).k by
RFUNCT_2:1
      .= f.(((h+c)^\n).k) - (f/*(c^\n)).k by A34,FUNCT_2:108
      .= f.(((h+c)^\n).k) - f.((c^\n).k) by A21,FUNCT_2:108
      .= L.((h^\n).k) + R.((h^\n).k) by A36
      .= (L/*(h^\n)).k + R.((h^\n).k) by A23,FUNCT_2:115
      .= (L/*(h^\n)).k + (R/*(h^\n)).k by A39,FUNCT_2:115
      .= (L/*(h^\n) + R/*(h^\n)).k by SEQ_1:7;
  end;
  then f/*((h+c)^\n) - f/*(c^\n) = L/*(h^\n) + R/*(h^\n) by FUNCT_2:63;
  then
A40: ((L/*(h^\n) + R/*(h^\n))(#)(h^\n)") = ((((f/*(h+c))^\n)-f/*(c^\n))(#) (
  h^\n)") by A35,VALUED_0:27
    .=((((f/*(h+c))^\n)-((f/*c)^\n))(#)(h^\n)") by A12,VALUED_0:27
    .=((((f/*(h+c))-(f/*c))^\n)(#)(h^\n)") by SEQM_3:17
    .=((((f/*(h+c))-(f/*c))^\n)(#)((h")^\n)) by SEQM_3:18
    .=((((f/*(h+c))-(f/*c))(#) h")^\n) by SEQM_3:19;
  then
A41: L.1 = lim ((h")(#)((f/*(h+c)) - (f/*c))) by A24,SEQ_4:22;
  thus h" (#) (f/*(h+c) - f/*c) is convergent by A24,A40,SEQ_4:21;
  for x st x in N2 holds f.x - f.x0 = L.(x-x0) + R.(x-x0) by A20,A5;
  hence thesis by A1,A6,A41,Def5;
end;
