reserve x for object;
reserve x0,r,r1,r2,g,g1,g2,p,y0 for Real;
reserve n,m,k,l for Element of NAT;
reserve a,b,d for Real_Sequence;
reserve h,h1,h2 for non-zero 0-convergent Real_Sequence;
reserve c,c1 for constant Real_Sequence;
reserve A for open Subset of REAL;
reserve f,f1,f2 for PartFunc of REAL,REAL;
reserve L for LinearFunc;
reserve R for RestFunc;

theorem
  f is total & (for r1,r2 holds |.f.r1 - f.r2.| <= (r1 - r2)^2) implies
  f is_differentiable_on [#](REAL) & f|[#]REAL is constant
proof
  assume that
A1: f is total and
A2: for r1,r2 holds |.f.r1 - f.r2.| <= (r1 - r2)^2;
A3: dom f = [#] REAL by A1,PARTFUN1:def 2;
A4: now
    let r1,r2 be Element of REAL;
    assume that
A5: r1 in [#](REAL) /\ dom f and
A6: r2 in [#] (REAL) /\ dom f;
    set rx = max(r1,r2);
    set rn = min(r1,r2);
A7: r1 + 0 < rx + 1 by XREAL_1:8,XXREAL_0:25;
A8: r2 + 0 < rx + 1 by XREAL_1:8,XXREAL_0:25;
    rn - 1 < r2 - 0 by XREAL_1:15,XXREAL_0:17;
    then r2 in {g2: rn - 1 < g2 & g2 < rx + 1} by A8;
    then
A9: r2 in ].rn - 1, rx + 1.[ by RCOMP_1:def 2;
    r2 in dom f by A6,XBOOLE_0:def 4;
    then
A10: r2 in ].rn - 1, rx + 1.[ /\ dom f by A9,XBOOLE_0:def 4;
    rn - 1 < r1 - 0 by XREAL_1:15,XXREAL_0:17;
    then r1 in {g1: rn - 1 < g1 & g1 < rx + 1} by A7;
    then
A11: r1 in ].rn - 1, rx + 1.[ by RCOMP_1:def 2;
    r1 in dom f by A5,XBOOLE_0:def 4;
    then
A12: r1 in ].rn - 1, rx + 1.[ /\ dom f by A11,XBOOLE_0:def 4;
    for g1,g2 holds g1 in ].rn - 1, rx + 1 .[ & g2 in ].rn - 1, rx + 1.[
    implies |.f.g1 - f.g2.| <= (g1 - g2)^2 by A2;
    then f|].rn-1,rx+1.[ is constant by A3,Th25;
    hence f.r1 = f.r2 by A12,A10,PARTFUN2:58;
  end;
  for r1,r2 holds r1 in [#] REAL & r2 in [#] REAL implies |.f.r1 - f.r2.|
  <= (r1 - r2)^2 by A2;
  hence thesis by A3,A4,Th24,PARTFUN2:58;
end;
