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 Th43:
for x0 be Real, f1,f2 be PartFunc of REAL,REAL st
 f1 is_left_differentiable_in x0 & f2 is_right_differentiable_in f1.x0 &
  (for r1 be Real st r1 > 0 ex r0 be Real st r0 > 0 &
    [.x0-r0,x0.] c= dom([.f1.x0,f1.x0+r1.]|`f1)) holds
  f2*f1 is_left_differentiable_in x0 &
  Ldiff(f2*f1,x0) = Rdiff(f2,f1.x0)*Ldiff(f1,x0)
proof
    let x0 be Real, f1,f2 be PartFunc of REAL,REAL;
    assume that
A1:  f1 is_left_differentiable_in x0 and
A2:  f2 is_right_differentiable_in f1.x0 and
A3: for r1 be Real st r1 > 0 ex r0 be Real st r0>0 &
      [.x0-r0,x0.] c= dom([.f1.x0,f1.x0+r1.]|`f1);

    consider r1 be Real such that
A4: r1 > 0 & [. f1.x0,f1.x0+r1 .] c= dom f2 by A2,FDIFF_3:def 3;

    consider r0 be Real such that
A5: r0>0 &
     [.x0-r0,x0.] c= dom([.f1.x0,f1.x0+r1.]|`f1) by A3,A4;

    set r = min(r0,r1);
A6: r > 0 by A4,A5,XXREAL_0:21;
    x0-r0 <= x0-r & f1.x0 + r <= f1.x0 + r1 by XREAL_1:6,10,XXREAL_0:17; then
    [.x0-r,x0.] c= [.x0-r0,x0.] & [.f1.x0,f1.x0+r.] c= [.f1.x0,f1.x0+r1.]
      by XXREAL_1:34; then
A7:[.x0-r,x0.] c= dom([.f1.x0,f1.x0+r1.]|`f1) by A5;

A8:now let x be Real;
     assume x in [.x0-r,x0.]; then
     x in dom f1 & f1.x in [.f1.x0,f1.x0+r1.] by A7,FUNCT_1:54;
     hence x in dom(f2*f1) by A4,FUNCT_1:11;
    end; then
A9:[.x0-r,x0.] c= dom(f2*f1);

    x0-r < x0 by A6,XREAL_1:44; then
A10: x0 in dom(f2*f1) by A8,XXREAL_1:1; then
A11: f1.x0 in dom f2 by FUNCT_1:11;

A12:dom(f2*f1) c= dom f1 by RELAT_1:25;

    for h,c st rng c = {x0} & rng (h + c) c= dom (f2*f1) &
     (for n be Nat holds h.n < 0) holds
     h"(#)((f2*f1)/*(h+c) - (f2*f1)/*c) is convergent
   & lim (h"(#)((f2*f1)/*(h+c) - (f2*f1)/*c)) = Rdiff(f2,f1.x0)*Ldiff(f1,x0)
    proof
     let h,c;
     assume that
A13:   rng c = {x0} and
A14:   rng (h + c) c= dom (f2*f1) and
A15:   for n be Nat holds h.n < 0;

A16:  for n be Nat holds c.n = x0
     proof
      let n be Nat;
      c.n in rng c by VALUED_0:28;
      hence c.n = x0 by A13,TARSKI:def 1;
     end;

A17: now let x be Real;
      assume A18: x in rng(h+c); then
      consider n be Element of NAT such that
A19:    x = (h+c).n by FUNCT_2:113;
      dom(h+c) = NAT by FUNCT_2:def 1; then
      x = h.n + c.n by A19,VALUED_1:def 1; then
      x = h.n + x0 by A16; then
      x < x0 by A15,XREAL_1:30; then
      x in ].-infty,x0.[ by XXREAL_1:233; then
A20:   x in left_open_halfline x0 by PROB_1:def 10;
      x in dom f1 by A18,A14,FUNCT_1:11;
      hence x in left_open_halfline x0 /\ dom f1 by A20,XBOOLE_0:def 4;
     end; then
A21:  rng (h + c) c= left_open_halfline x0 /\ dom f1;

     set a = f1/*c;

A22:  rng c c= dom (f2*f1) by A13,A10,ZFMISC_1:31;

     set d = f1/*(h+c) - f1/*c;

A23: lim h = 0;

     lim c = c.0 by SEQ_4:25; then
     lim c = x0 by A16; then
A24: lim (h + c) = 0 + x0 by A23,SEQ_2:6 .= x0;
A25: f1 is_Lcontinuous_in x0 by A1,FDIFF_3:5; then
A26: f1/*(h+c) is convergent by A21,A24,FDIFF_3:def 1;

A27: f1.x0 = lim (f1/*(h+c)) by A21,A24,A25,FDIFF_3:def 1;
A28: rng (f1/*(h+c)) c= dom f2 by A14,FDIFF_2:9;

     now let x be Real;
      assume x in rng a; then
      consider n be Element of NAT such that
A29:   a.n = x by FUNCT_2:113;
      c.n = x0 by A16;
      then x = f1.x0 by A29,A12,A13,A10,ZFMISC_1:31,FUNCT_2:108;
      hence x in {f1.x0} by TARSKI:def 1;
     end; then
A30: rng a c= {f1.x0};

     now let x be Real;
A31:  a.0 in rng a by VALUED_0:28;
      assume x in {f1.x0}; then
A32:  x = f1.x0 by TARSKI:def 1;
      c.0 = x0 by A16;
      hence x in rng a by A32,A31,A12,A13,A10,ZFMISC_1:31,FUNCT_2:108;
     end; then
     {f1.x0} c= rng a; then
A33: rng a = { f1.x0 } by A30,XBOOLE_0:def 10; then
A34: rng a c= dom f2 by A11,ZFMISC_1:31;

A35: now
      let n be Nat;
      a.n in rng a by VALUED_0:28;
      then
A36:  a.n = f1.x0 by A30,TARSKI:def 1;
      a.(n+1) in rng a by VALUED_0:28;
      hence a.n = a.(n+1) by A30,A36,TARSKI:def 1;
     end;
     then
A37: a is constant by VALUED_0:25;

     consider N be Nat such that
A38:   for m be Nat st N <= m holds |. (h+c).m - lim (h+c) .| < r
       by A6,SEQ_2:def 7;

A39:  rng((h+c)^\N) c= rng(h+c) & rng(c^\N) c= rng c by NAT_1:55; then
A40:  rng((h+c)^\N) c= dom(f2*f1) & rng(c^\N) c= dom(f2*f1) by A14,A22; then
A41:  rng(f1/*((h+c)^\N)) c= dom f2 & rng(f1/*(c^\N)) c= dom f2 by FDIFF_2:9;

     dom(f2*f1) c= dom f1 by RELAT_1:25; then
A42:  rng((h+c)^\N) c= dom f1 & rng(c^\N) c= dom f1 by A39,A14,A22;

     reconsider a as constant Real_Sequence by A35,VALUED_0:25;
     a.0 in rng a by VALUED_0:28;
     then a.0 = f1.x0 by A30,TARSKI:def 1;
     then lim a = f1.x0 by SEQ_4:25;
     then
A43: lim d = f1.x0 - f1.x0 by A26,A27,SEQ_2:12 .= 0;

     h"(#)((f2*f1)/*(h+c) - (f2*f1)/*c) is convergent &
     lim (h"(#)((f2*f1)/*(h+c) - (f2*f1)/*c)) = Rdiff(f2,f1.x0)*Ldiff(f1,x0)
     proof
      per cases;
      suppose
       ex k be Element of NAT st for n be Element of NAT
        st k <= n holds (f1/*(h+c)).n <> f1.x0; then
       consider k1 be Element of NAT such that
A44:    for n be Element of NAT st k1 <= n holds (f1/*(h+c)).n <> f1.x0;
       reconsider k = max(k1,N) as Element of NAT by ORDINAL1:def 12;
A45:    k1 <= k & N <= k by XXREAL_0:25;
A46:    now
        given n being Nat such that
A47:     (d^\k).n = 0;
A48:    k+n is Element of NAT by ORDINAL1:def 12;
        0 = d.(k+n) by A47,NAT_1:def 3
         .= (f1/*(h+c)).(k+n) - (f1/*c).(k+n) by RFUNCT_2:1
         .= (f1/*(h+c)).(k+n) - f1.(c.(k+n))
           by A48,A12,A13,A10,ZFMISC_1:31,FUNCT_2:108
         .= (f1/*(h+c)).(n+k) - f1.x0 by A16;
        hence contradiction by A44,A45,NAT_1:12;
       end;

       set c1 = c^\k;
       set h1 = h^\k;
       set a1 = a^\k;
       set s = h1"(#)(f1/*(h1 + c1) - f1/*c1);
A49:   now
        let n be Element of NAT;
        thus (d + a).n = d.n + a.n by SEQ_1:7
           .= (f1/*(h+c)).n - a.n + a.n by RFUNCT_2:1
           .= (f1/*(h+c)).n;
       end;

       lim (d^\k) = 0 by A37,A26,A43,SEQ_4:20;
       then reconsider d1 = d^\k as 0-convergent non-zero Real_Sequence
          by A37,A26,A46,SEQ_1:5,FDIFF_1:def 1;

A50:    for n being Nat holds d1.n > 0
       proof
        let n be Nat;
A51:    dom(h+c) = NAT by FUNCT_2:def 1;

A52:    d1.n = d.(k+n) by NAT_1:def 3
         .= (f1/*(h+c)).(n+k) - (f1/*c).(n+k) by RFUNCT_2:1
         .= (f1/*(h+c)).(n+k) - f1.(c.(n+k))
           by A12,A13,A10,ZFMISC_1:31,FUNCT_2:108
         .= (f1/*(h+c)).(n+k) - f1.x0 by A16
         .= f1.((h+c).(n+k)) - f1.x0 by A21,XBOOLE_1:18,FUNCT_2:108;

        (h+c).(k+n) = h.(k+n)+c.(k+n)
          by A51,ORDINAL1:def 12,VALUED_1:def 1; then
A53:    (h+c).(k+n) = h.(k+n)+x0 by A16;

        |. (h+c).(k+n) - lim(h+c) .| < r by A38,A45,NAT_1:12; then
        |. h.(k+n) + c.(k+n) - x0 .| < r
          by A24,A51,ORDINAL1:def 12,VALUED_1:def 1; then
        |. h.(k+n) + x0 - x0 .| < r by A16; then
        -h.(k+n) < r by A15,ABSVALUE:def 1; then
        -(-h.(k+n)) > -r by XREAL_1:24; then
        x0 > (h+c).(k+n) & (h+c).(k+n) > x0-r by A53,A15,XREAL_1:8,30; then
        (h+c).(k+n) in [.x0-r,x0.] by XXREAL_1:1; then
        f1.((h+c).(k+n)) in [.f1.x0,f1.x0+r1.] by A7,FUNCT_1:54; then
A54:    f1.x0 <= f1.((h+c).(k+n)) by XXREAL_1:1;
        0 <> d1.n by A46;
        hence d1.n > 0 by A54,A52,XREAL_1:48;
       end;

       set t = d1"(#)(f2/*(d1 + a1) - f2/*a1);

       d1 + a1 = (d + a)^\k by SEQM_3:15;
       then
A55:   d1 + a1 = (f1/*(h+c))^\k by A49,FUNCT_2:63;

       rng ((f1/*(h+c))^\k) c= rng (f1/*(h+c)) by VALUED_0:21;
       then
A56:   rng (d1 + a1) c= dom f2 by A28,A55;
A57:   rng a1 = {f1.x0} by A33,VALUED_0:26;
       then
A58:   lim t = Rdiff(f2,f1.x0) by A2,A50,A56,FDIFF_3:15;

       Rdiff(f2,f1.x0) = Rdiff(f2,f1.x0);
       then
A59:   t is convergent by A2,A57,A56,A50,FDIFF_3:15;
       rng ((h + c)^\k) c= rng (h + c) by VALUED_0:21;
       then rng ((h + c)^\k) c= left_open_halfline x0 /\ dom f1 by A17;
       then
A60:   rng (h1 + c1) c= left_open_halfline x0 /\ dom f1 by SEQM_3:15;
       left_open_halfline x0 /\ dom f1 c= dom f1 by XBOOLE_1:17; then
A61:   rng (h1+c1) c= dom f1 by A60;
A62:   rng c1 = {x0} by A13,VALUED_0:26;
A63:   for n be Nat holds h1.n < 0
       proof
        let n be Nat;
        h1.n = h.(k+n) by NAT_1:def 3;
        hence h1.n < 0 by A15;
       end;
       Ldiff(f1,x0) = Ldiff(f1,x0); then
A64:   s is convergent by A1,A62,A63,A61,FDIFF_3:9;

A65:   t(#)s = d1"(#)(f2/*(d1+a1) - f2/*a1) (#) ((f1/*((h+c)^\k) - f1/*
        c1) (#)h1") by SEQM_3:15
          .= d1"(#)(f2/*(d1+a1) - f2/*a1) (#) (((f1/*(h+c))^\k - f1/*c1)(#)
        h1") by A21,XBOOLE_1:18,VALUED_0:27
          .= d1"(#)(f2/*(d1+a1) - f2/*a1) (#) (((f1/*(h+c))^\k - (f1/*c)^\k)
        (#)h1") by A12,A13,A10,ZFMISC_1:31,VALUED_0:27
          .= ((f2/*(d1+a1) - f2/*a1)/"d1) (#) (((f1/*(h+c))^\k - (f1/*c)^\k)
        (#)h1") by VALUED_1:def 10
          .= ((f2/*(d1+a1) - f2/*a1)/"d1) (#) (d1(#)h1") by SEQM_3:17
          .= ((f2/*(d1+a1) - f2/*a1)/"d1) (#) d1(#)h1" by SEQ_1:14
          .= (f2/*(d1+a1) - f2/*a1) (#) h1" by SEQ_1:37
          .= ((f2/*(f1/*(h+c)))^\k - f2/*a1) (#) h1" by A28,A55,VALUED_0:27
          .= (((f2*f1)/*(h+c))^\k - f2/*a1) (#) h1" by A14,VALUED_0:31
          .= (((f2*f1)/*(h+c))^\k - ((f2/*a)^\k)) (#) h1"
              by A33,A11,ZFMISC_1:31,VALUED_0:27
          .= (((f2*f1)/*(h+c))^\k - (((f2*f1)/*c)^\k)) (#) h1"
              by A13,A10,ZFMISC_1:31,VALUED_0:31
          .= (((f2*f1)/*(h+c) - (f2*f1)/*c)^\k) (#) h1" 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;
       hence h"(#)((f2*f1)/*(h+c) - (f2*f1)/*c) is convergent
         by A64,A59,SEQ_4:21;

       lim s = Ldiff(f1,x0) by A1,A62,A63,A61,FDIFF_3:9;
       then lim ((h"(#)((f2*f1)/*(h+c) - (f2*f1)/*c))^\k) = Rdiff(f2,f1.x0) *
       Ldiff(f1,x0 ) by A65,A64,A59,A58,SEQ_2:15;
       hence thesis by A64,A59,A65,SEQ_4:22;
      end;

      suppose
A66:   for k be Element of NAT
        ex n be Element of NAT st k <= n & (f1/*(h+c)).n = f1.x0;

       defpred P[object] means $1 = f1.x0;

A67:   for k be Element of NAT ex n be Element of NAT
          st k <= n & P[(f1/*(h+c)).n] by A66;
       consider I1 be increasing sequence of NAT such that
A68:    for n being Nat holds P[(f1/*(h+c)*I1).n] and
        for n be Element of NAT st for r be Real st r = (f1/*(h+c)).n holds
          P[r] ex m be Element of NAT st n = I1.m
        from FDIFF_2:sch 1(A67);
       reconsider h1 = h*I1 as 0-convergent non-zero Real_Sequence
          by FDIFF_2:6;

       set c1 = c*I1;
A69:   c1 = c by VALUED_0:26;
A70:   rng c1 = {x0} by A13,VALUED_0:26;

A71:    rng h1 c= rng h by VALUED_0:21;

A72:   for n be Nat holds h1.n < 0
       proof
        let n be Nat;
        dom h1 = NAT by FUNCT_2:def 1; then
        h1.n in rng h1 by FUNCT_1:3,ORDINAL1:def 12; then
        ex m be Element of NAT st h1.n = h.m by A71,FUNCT_2:113;
        hence h1.n < 0 by A15;
       end;

       reconsider c1 as constant Real_Sequence;
A73:   now
        let g be Real such that
A74:     0 < g;
        reconsider n = 0 as Nat;
        take n;
        let m be Nat such that n <= m;
A75:    m in NAT by ORDINAL1:def 12;
        |.(h1"(#)(f1/*(h1+c1) - f1/*c1)).m - 0 .| = |.(h1").m *(f1/*(
          h1+c1) - f1/*c1).m.| by SEQ_1:8
         .= |.(h1").m *((f1/*(h1+c1)).m - (f1/*c1).m).| by RFUNCT_2:1
         .= |.(h1").m *((f1/*(h1+c1)).m - f1.(c.m)).|
           by A69,A75,A12,A13,A10,ZFMISC_1:31,FUNCT_2:108
         .= |.(h1").m *((f1/*(h1+c1)).m - f1.x0).| by A16
         .= |.(h1").m *((f1/*((h+c)*I1)).m - f1.x0).| by RFUNCT_2:2
         .= |.(h1").m *((f1/*(h+c)*I1).m - f1.x0).|
             by A21,XBOOLE_1:18,FUNCT_2:110
         .= |.(h1").m *(f1.x0 - f1.x0).| by A68
         .= 0 by ABSVALUE:2;
        hence |.(h1"(#)(f1/*(h1+c1) - f1/*c1)).m - 0 .| < g by A74;
       end;

       rng ((h + c)*I1) c= rng (h + c) by VALUED_0:21; then
       rng ((h + c)*I1) c= dom f1 by A12,A14; then
A76:   rng (h1 + c1) c= dom f1 by RFUNCT_2:2; then
A77:   lim (h1"(#)(f1/*(h1+c1) - f1/*c1)) = Ldiff(f1,x0)
          by A1,A70,A72,FDIFF_3:9;

       Ldiff(f1,x0) = Ldiff(f1,x0); then
       h1"(#)(f1/*(h1+c1) - f1/*c1) is convergent
          by A1,A70,A76,A72,FDIFF_3:9; then
A78:   Ldiff(f1,x0) = 0 by A77,A73,SEQ_2:def 7;

       now per cases;
        suppose
         ex k be Element of NAT st
          for n be Element of NAT st k <= n holds (f1/*((h+c)^\N)).n = f1.x0;
         then consider k be Element of NAT such that
A79:      for n be Element of NAT st k <= n holds (f1/*((h+c)^\N)).n = f1.x0;

A80:     now let g be Real such that
A81:       0 < g;
          reconsider n = k as Nat;
          take n;
          let m be Nat;
A82:      m in NAT by ORDINAL1:def 12;
          assume
A83:        n <= m;

          |. ((h"(#)((f2*f1)/*(h+c) - (f2*f1)/*c))^\N).m
               - Rdiff(f2,f1.x0)*Ldiff(f1, x0 ) .|
            = |.( ((h")^\N) (#) (((f2*f1)/*(h+c) - (f2*f1)/*c)^\N) ).m .|
                  by A78,SEQM_3:19
           .= |.(((h")^\N) (#) ( ((f2*f1)/*(h+c))^\N - ((f2*f1)/*c)^\N )).m.|
                  by SEQM_3:17
           .= |. ((h")^\N).m * ( ((f2*f1)/*(h+c))^\N - ((f2*f1)/*c)^\N ).m .|
                  by SEQ_1:8
           .= |. ((h")^\N).m *((((f2*f1)/*(h+c))^\N).m - (((f2*f1)/*c)^\N).m).|
                  by RFUNCT_2:1
           .= |. ((h")^\N).m *(((f2*f1)/*((h+c)^\N)).m - (((f2*f1)/*c)^\N).m).|
                  by A14,VALUED_0:27
           .= |. ((h")^\N).m *(((f2*f1)/*((h+c)^\N)).m - ((f2*f1)/*(c^\N)).m).|
                  by A13,A10,ZFMISC_1:31,VALUED_0:27
       .= |. ((h")^\N).m * ((f2/*(f1/*((h+c)^\N))).m - ((f2*f1)/*(c^\N)).m).|
                  by A40,VALUED_0:31
       .= |. ((h")^\N).m * ((f2/*(f1/*((h+c)^\N))).m - (f2/*(f1/*(c^\N))).m).|
                  by A40,VALUED_0:31
       .= |. ((h")^\N).m * ( f2.((f1/*((h+c)^\N)).m) - (f2/*(f1/*(c^\N))).m).|
        by A41,FUNCT_2:108,A82
       .= |. ((h")^\N).m * ( f2.(f1.x0) - (f2/*(f1/*(c^\N))).m).|
           by A83,A79,A82
       .= |. ((h")^\N).m * ( f2.(f1.x0) - f2.((f1/*(c^\N)).m)).| by
A82,A41,FUNCT_2:108
       .= |. ((h")^\N).m * ( f2.(f1.x0) - f2.( f1.( (c^\N).m) )).| by
       A42,FUNCT_2:108,A82
       .= |. ((h")^\N).m * ( f2.(f1.x0) - f2.( f1.( c.(N+m) ))).| by
       NAT_1:def 3
       .= |. ((h")^\N).m * ( f2.(f1.x0) - f2.(f1.x0)).| by A16
           .= 0 by ABSVALUE:2;
          hence
              |. ((h"(#)((f2*f1)/*(h+c) - (f2*f1)/*c))^\N).m
                   - Rdiff(f2,f1.x0)*Ldiff(f1,x0).|<g by A81;
         end; then
A84:      (h"(#)((f2*f1)/*(h+c) - (f2*f1)/*c))^\N is convergent
            by SEQ_2:def 6; then
A85:      lim ((h"(#)((f2*f1)/*(h+c) - (f2*f1)/*c))^\N)
           = Rdiff(f2,f1.x0)*Ldiff(f1,x0) by A80,SEQ_2:def 7;
         thus h"(#)((f2*f1)/*(h+c) - (f2*f1)/*c) is convergent
           by A84,SEQ_4:21;
         thus lim (h"(#)((f2*f1)/*(h+c) - (f2*f1)/*c)) = Rdiff(f2,f1.x0)*
            Ldiff(f1,x0) by A84,A85,SEQ_4:22;
        end;

        suppose
A86:     for k be Element of NAT
          ex n be Element of NAT st k <= n & (f1/*((h+c)^\N)).n <> f1.x0;

         defpred P[object] means $1 <> f1.x0;
A87:     for k be Element of NAT
          ex n be Element of NAT st k <= n & P[(f1/*((h+c)^\N)).n]
            by A86;

         consider I2 be increasing sequence of NAT such that
A88:      for n being Nat holds P[(f1/*((h+c)^\N)*I2).n] and
A89:      for n be Element of NAT st for r be Real st
            r = (f1/*((h+c)^\N)).n holds P[r]
             ex m be Element of NAT st n
            = I2.m from FDIFF_2:sch 1(A87);

A90:      d^\N = (f1/*(h+c))^\N - (f1/*c)^\N by SEQM_3:17
          .= f1/*((h+c)^\N) - (f1/*c)^\N by A21,XBOOLE_1:18,VALUED_0:27
          .= f1/*((h+c)^\N) - f1/*(c^\N) by A12,A13,A10
,ZFMISC_1:31,VALUED_0:27;

         rng(c^\N) c= rng c & rng((h+c)^\N) c= rng(h+c) by VALUED_0:21; then
A91:      rng(c^\N) c= dom f1 & rng((h+c)^\N) c= dom f1 by A22,A12,A14;

A92:      a^\N = f1/*(c^\N) by A12,A13,A10,ZFMISC_1:31,VALUED_0:27;

A93:      now
          given n being Nat such that
A94:       ((d^\N)*I2).n = 0;

          0 = (d^\N).(I2.n) by A94,FUNCT_2:15,ORDINAL1:def 12
           .= (f1/*((h+c)^\N)).(I2.n) - (f1/*(c^\N)).(I2.n) by A90,RFUNCT_2:1
           .= (f1/*((h+c)^\N)).(I2.n) - f1.((c^\N).(I2.n)) by A91,FUNCT_2:108
           .= (f1/*((h+c)^\N)).(I2.n) - f1.(c.(N + I2.n)) by NAT_1:def 3
           .= (f1/*((h+c)^\N)).(I2.n) - f1.x0 by A16
           .= (f1/*((h+c)^\N)*I2).n - f1.x0 by FUNCT_2:15,ORDINAL1:def 12;
          hence contradiction by A88;
         end;

         reconsider h2 = h^\N*I2 as 0-convergent non-zero
              Real_Sequence by FDIFF_2:6;
         reconsider a1 = a^\N*I2 as constant Real_Sequence;
         reconsider c2 = c^\N*I2 as constant Real_Sequence;
         set s = h2"(#)(f1/*(h2+c2) - f1/*c2);

         d^\N*I2 is subsequence of d by VALUED_0:20; then
         lim (d^\N*I2) = 0 by A37,A26,A43,SEQ_4:17;
         then reconsider d1 = d^\N*I2 as 0-convergent non-zero
         Real_Sequence by A37,A26,SEQ_4:16,A93,SEQ_1:5,FDIFF_1:def 1;

         set t = d1"(#)(f2/*(d1+a1) - f2/*a1);
         a1 is subsequence of a by VALUED_0:20; then
A95:     rng a1 = {f1.x0} by A33,VALUED_0:26;
A96:     now
          let n be Element of NAT;
          thus (d^\N + a^\N).n = (d^\N).n + (a^\N).n by SEQ_1:7
             .= (f1/*((h+c)^\N)).n - (a^\N).n + (a^\N).n by A90,A92,RFUNCT_2:1
             .= (f1/*((h+c)^\N)).n;
         end;

A97:     rng((f1/*(h+c))^\N) c= rng(f1/*(h+c)) by VALUED_0:21; then
A98:    rng((f1/*(h+c))^\N) c= dom f2 by A28;

         rng(a^\N) c= rng a by VALUED_0:21; then
A99:    rng(a^\N) c= dom f2 by A34;

         d1 + a1 = (d^\N + a^\N)*I2 by RFUNCT_2:2; then
A100:     d1 + a1 = f1/*((h+c)^\N)*I2 by A96,FUNCT_2:63
           .= ((f1/*(h+c))^\N)*I2 by A21,XBOOLE_1:18,VALUED_0:27;

A101:      h2+c2 = (h^\N + c^\N)*I2 by RFUNCT_2:2
          .= (h+c)^\N * I2 by SEQM_3:15;

A102:     t(#)s = d1"(#)(f2/*(d1+a1) - f2/*a1) (#)
                  ( ( (f1/*((h+c)^\N))*I2 - f1/*c2 )(#)h2" )
                     by A91,A101,FUNCT_2:110
          .= d1"(#)(f2/*(d1+a1) - f2/*a1) (#)
                  ( ( (f1/*((h+c)^\N))*I2 - (f1/*(c^\N)) *I2)(#)h2" )
                    by A91,FUNCT_2:110
          .= ((f2/*(d1+a1) - f2/*a1)/"d1) (#)
                  ( ( (f1/*((h+c)^\N))*I2 - (f1/*(c^\N)) *I2)(#)h2" )
                    by VALUED_1:def 10
          .= ((f2/*(d1+a1) - f2/*a1)/"d1) (#)
                  ( ( (f1/*(h+c))^\N*I2 - (f1/*(c^\N)) *I2)(#)h2" )
                    by A21,XBOOLE_1:18,VALUED_0:27
          .= ((f2/*(d1+a1) - f2/*a1)/"d1) (#)
                  ( ( (f1/*(h+c))^\N*I2 - (f1/*c)^\N *I2)(#)h2" )
                    by A12,A13,A10,ZFMISC_1:31,VALUED_0:27
          .= ((f2/*(d1+a1) - f2/*a1)/"d1) (#)
                  ( ( ((f1/*(h+c))^\N - (f1/*c)^\N)*I2)(#)h2" )
                    by RFUNCT_2:2
          .= ((f2/*(d1+a1) - f2/*a1)/"d1) (#) (d1(#)h2") by SEQM_3:17
          .= ((f2/*(d1+a1) - f2/*a1)/"d1) (#) d1(#)h2" by SEQ_1:14
          .= (f2/*(((f1/*(h+c))^\N)*I2) - f2/*a1) (#) h2" by A100,SEQ_1:37
          .= (   (f2 /* ((f1/*(h+c))^\N)) * I2 - f2/*a1  ) (#) h2"
            by A98,FUNCT_2:110
          .= (   (f2/*(f1/*(h+c)))^\N * I2 - f2/*a1  ) (#) h2"
            by A28,VALUED_0:27
          .= (((f2*f1)/*(h+c))^\N*I2 - f2/*a1) (#) h2" by A14,VALUED_0:31
          .= (((f2*f1)/*(h+c))^\N*I2 - (f2/*(a^\N))*I2) (#) h2"
            by A99,FUNCT_2:110
          .= (((f2*f1)/*(h+c))^\N*I2 - ( (f2/*a)^\N )*I2) (#) h2"
            by A33,A11,ZFMISC_1:31,VALUED_0:27
          .= (((f2*f1)/*(h+c))^\N*I2 - ( ((f2*f1)/*c)^\N )*I2) (#) h2"
            by A13,A10,ZFMISC_1:31,VALUED_0:31
          .= (( ((f2*f1)/*(h+c))^\N - ((f2*f1)/*c)^\N ) *I2) (#) h2"
            by RFUNCT_2:2
          .= (( ((f2*f1)/*(h+c))^\N - ((f2*f1)/*c)^\N ) *I2) (#) (((h^\N)")*I2)
            by RFUNCT_2:5
          .= ((h^\N)"(#)(((f2*f1)/*(h+c))^\N - ((f2*f1)/*c)^\N ))*I2
            by RFUNCT_2:2;

         rng (((f1/*(h+c))^\N)*I2) c= rng ((f1/*(h+c))^\N) by VALUED_0:21; then
A103:     rng (d1 + a1) c= dom f2 by A97,A28,A100;

         ((h+c)^\N)*I2 is subsequence of (h+c) by VALUED_0:20; then
         rng (((h + c)^\N)*I2) c= rng (h + c) by VALUED_0:21; then
         rng (((h + c)^\N)*I2) c= dom f1 by A12,A14; then
         rng ((h^\N + c^\N)*I2) c= dom f1 by SEQM_3:15; then
A104:     rng (h2 + c2) c= dom f1 by RFUNCT_2:2;

         h2 is subsequence of h by VALUED_0:20; then
A105:    rng h2 c= rng h by VALUED_0:21;

A106:     for n be Nat holds h2.n < 0
         proof
          let n be Nat;
          dom h2 = NAT by FUNCT_2:def 1; then
          h2.n in rng h2 by FUNCT_1:3,ORDINAL1:def 12; then
          ex m be Element of NAT st h2.n = h.m by A105,FUNCT_2:113;
          hence h2.n < 0 by A15;
         end;

         c2 is subsequence of c by VALUED_0:20; then
A107:     rng c2 = {x0} by A13,VALUED_0:26; then
A108:     lim s = Ldiff(f1,x0) by A1,A104,A106,FDIFF_3:9;

A109:     for n be Nat holds d1.n > 0
         proof
          let n be Nat;

          n in NAT by ORDINAL1:def 12; then
A110:      n in dom I2 by FUNCT_2:def 1; then
A111:      (f1/*((h+c)^\N)*I2).n
            = (f1/*((h+c)^\N)).(I2.n) by FUNCT_1:13
           .= f1.(((h+c)^\N).(I2.n)) by A42,FUNCT_2:108;

A112:      d1.n = (f1/*((h+c)^\N) - f1/*(c^\N)).(I2.n) by A90,A110,FUNCT_1:13
           .= (f1/*((h+c)^\N)).(I2.n) - (f1/*(c^\N)).(I2.n) by RFUNCT_2:1
           .= (f1/*((h+c)^\N)).(I2.n) - f1.((c^\N).(I2.n)) by A42,FUNCT_2:108
           .= (f1/*((h+c)^\N)).(I2.n) - f1.(c.(N+I2.n)) by NAT_1:def 3
           .= (f1/*((h+c)^\N)).(I2.n) - f1.x0 by A16
           .= f1.(((h+c)^\N).(I2.n)) - f1.x0 by A42,FUNCT_2:108;

A113:      ((h+c)^\N).(I2.n) = (h+c).(N+I2.n) by NAT_1:def 3; then
A114:      ((h+c)^\N).(I2.n) = h.(N+I2.n) + c.(N+I2.n) by SEQ_1:7
           .= h.(N+I2.n) + x0 by A16;

          |. ((h+c)^\N).(I2.n) - x0 .| < r by A113,A24,A38,NAT_1:12; then
          -h.(N+I2.n) < r by A15,A114,ABSVALUE:def 1; then
          -(-h.(N+I2.n)) > -r by XREAL_1:24; then
          x0-r < ((h+c)^\N).(I2.n) & ((h+c)^\N).(I2.n) < x0
            by A114,A15,XREAL_1:8,30; then
          ((h+c)^\N).(I2.n) in [. x0-r,x0 .] by XXREAL_1:1; then
          f1.(((h+c)^\N).(I2.n)) in [. f1.x0, f1.x0+r1 .]
            by A7,FUNCT_1:54; then
          f1.x0 <= f1.(((h+c)^\N).(I2.n)) by XXREAL_1:1; then
          f1.x0 < f1.(((h+c)^\N).(I2.n)) by A88,A111,XXREAL_0:1;
          hence d1.n > 0 by A112,XREAL_1:50;
         end;

         Ldiff(f1,x0) = Ldiff(f1,x0); then
A115:     s is convergent by A1,A107,A104,A106,FDIFF_3:9;
         Rdiff(f2,f1.x0) = Rdiff(f2,f1.x0); then
A116:     t is convergent by A2,A95,A103,A109,FDIFF_3:15;

         lim t = Rdiff(f2,f1.x0) by A2,A95,A103,A109,FDIFF_3:15; then
A117:     lim (((h^\N)"(#)(((f2*f1)/*(h+c))^\N - ((f2*f1)/*c)^\N ))*I2)
           = Rdiff(f2,f1.x0) * Ldiff(f1,x0) by A102,A115,A108,A116,SEQ_2:15;

A118:     now
          set DF = Rdiff(f2,f1.x0) * Ldiff(f1,x0);
          let g be Real such that
A119:       0 < g;
          consider k being Nat such that
A120:       for m being Nat st k <= m holds
            |.(((h^\N)"(#)(((f2*f1)/*(h+c))^\N
              - ((f2*f1)/*c)^\N ))*I2).m - DF.|<g
              by A102,A115,A116,A117,A119,SEQ_2:def 7;
A121:      k in NAT by ORDINAL1:def 12;
          reconsider n = I2.k as Nat;
          take n;
          let m be Nat such that
A122:       n <= m;
A123:      m in NAT by ORDINAL1:def 12;

A124:       ( h"(#)( (f2*f1)/*(h+c) - (f2*f1)/*c ) )^\N
           = ((h")^\N)(#)(( (f2*f1)/*(h+c) - (f2*f1)/*c )^\N) by SEQM_3:19
          .= (h^\N)"(#)(( (f2*f1)/*(h+c) - (f2*f1)/*c )^\N) by SEQM_3:18
          .= (h^\N)"(#)(((f2*f1)/*(h+c))^\N - ((f2*f1)/*c)^\N) by SEQM_3:17;

          now per cases;
           suppose
A125:        (f1/*((h+c)^\N)).m = f1.x0;

A126:        ((h^\N)"(#)(((f2*f1)/*(h+c))^\N - ((f2*f1)/*c)^\N)).m
             = ((h^\N)").m * (((f2*f1)/*(h+c))^\N - ((f2*f1)/*c)^\N).m
             by SEQ_1:8;

A127:        (((f2*f1)/*(h+c))^\N - ((f2*f1)/*c)^\N).m
             = (((f2*f1)/*(h+c))^\N).m - (((f2*f1)/*c)^\N).m by RFUNCT_2:1;

            dom((h+c)^\N) = NAT by FUNCT_2:def 1; then
            dom(f1*((h+c)^\N)) = NAT by A91,RELAT_1:27; then
            dom(f1/*((h+c)^\N)) = NAT by A91,FUNCT_2:def 11; then
A128:        dom(f2*(f1/*((h+c)^\N))) = NAT by A41,RELAT_1:27;

            ((f2*f1)/*(h+c))^\N
              = (f2*f1)/*((h+c)^\N) by A14,VALUED_0:27
             .= f2/*(f1/*((h+c)^\N)) by A40,VALUED_0:31
             .= f2*(f1/*((h+c)^\N)) by A41,FUNCT_2:def 11; then
A129:        (((f2*f1)/*(h+c))^\N).m
             = f2.(f1.x0) by A125,A128,FUNCT_1:12,ORDINAL1:def 12;

            dom(c^\N) = NAT by FUNCT_2:def 1; then
            dom(f1*(c^\N)) = NAT by A91,RELAT_1:27; then
            dom(f1/*(c^\N)) = NAT by A91,FUNCT_2:def 11; then
A130:        dom(f2*(f1/*(c^\N))) = NAT by A41,RELAT_1:27;

            ((f2*f1)/*c)^\N = (f2*f1)/*(c^\N) by A13,A10
,ZFMISC_1:31,VALUED_0:27
             .= f2/*(f1/*(c^\N)) by A40,VALUED_0:31
             .= f2*(f1/*(c^\N)) by A41,FUNCT_2:def 11; then
            (((f2*f1)/*c)^\N).m = f2.((f1/*(c^\N)).m)
              by ORDINAL1:def 12,A130,FUNCT_1:12
             .= f2.(f1.((c^\N).m)) by A123,A91,FUNCT_2:108
             .= f2.(f1.(c.(N+m))) by NAT_1:def 3
             .= f2.(f1.x0) by A16;
            hence
              |.((h"(#)((f2*f1)/*(h+c) - (f2*f1)/*c))^\N).m - DF.| < g by
                 A124,A119,A78,A126,A129,A127,ABSVALUE:2;
           end;
           suppose
            (f1/*((h+c)^\N)).m <> f1.x0; then
            for r1 be Real holds (f1/*((h+c)^\N)).m = r1 implies r1<>f1.x0;
            then
            consider l be Element of NAT such that
A131:         m = I2.l by A89,A123;

            dom I2 = NAT by FUNCT_2:def 1;
            then l >= k by A122,A131,VALUED_0:def 13,A121; then
            |.(((h^\N)"(#)(((f2*f1)/*(h+c))^\N
              - ((f2*f1)/*c)^\N ))*I2).l - DF.| < g by A120;
            hence |.((h"(#)((f2*f1)/*(h+c) - (f2*f1)/*c))^\N).m - DF.| < g
              by A124,A131,FUNCT_2:15;
           end;
          end;
          hence
              |.((h"(#)((f2*f1)/*(h+c) - (f2*f1)/*c))^\N).m
                - Rdiff(f2,f1.x0) *Ldiff(f1,x0).|<g;
         end; then
A132:     (h"(#)((f2*f1)/*(h+c) - (f2*f1)/*c))^\N is convergent by
           SEQ_2:def 6;
         hence h"(#)((f2*f1)/*(h+c) - (f2*f1)/*c) is convergent by SEQ_4:21;
         lim ((h"(#)((f2*f1)/*(h+c) - (f2*f1)/*c))^\N)
            = Rdiff(f2,f1.x0)*Ldiff(f1,x0) by A118,A132,SEQ_2:def 7;
         hence lim (h"(#) ((f2*f1)/*(h+c) - (f2*f1)/*c)) = Rdiff(f2,f1.x0)*
            Ldiff(f1,x0) by A132,SEQ_4:22;
        end;
       end;
       hence thesis;
      end;
     end;
     hence thesis;
    end;
    hence thesis by A6,A9,FDIFF_3:9;
end;
