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
  left_open_halfline(r) c= dom f & f is_differentiable_on
left_open_halfline(r) & (for x0 st x0 in left_open_halfline(r) holds 0 <= diff(
  f,x0)) implies f|left_open_halfline r is non-decreasing
proof
  assume
 left_open_halfline(r) c= dom f;
  assume that
A1: f is_differentiable_on left_open_halfline(r) and
A2: for x0 st x0 in left_open_halfline(r) holds 0 <= diff(f,x0);
  now
    let r1,r2;
    assume that
A3: r1 in left_open_halfline(r) /\ dom f and
A4: r2 in left_open_halfline(r) /\ dom f and
A5: r1 < r2;
    set rr = min(r1,r2);
A6: rr - 1 < r2 - 0 by XREAL_1:15,XXREAL_0:17;
    r2 in left_open_halfline(r) by A4,XBOOLE_0:def 4;
    then r2 in {p: p < r} by XXREAL_1:229;
    then ex g2 st g2 = r2 & g2 < r;
    then r2 in {g2: rr - 1 < g2 & g2 < r} by A6;
    then
A7: r2 in ].rr - 1, r.[ by RCOMP_1:def 2;
    r2 in dom f by A4,XBOOLE_0:def 4;
    then
A8: r2 in ].rr - 1, r.[ /\ dom f by A7,XBOOLE_0:def 4;
A9: f is_differentiable_on ].rr - 1, r.[ by A1,FDIFF_1:26,XXREAL_1:263;
 ].rr - 1, r.[ c= left_open_halfline(r) by XXREAL_1:263;
    then for g1 st g1 in ].rr - 1, r.[ holds 0 <= diff(f,g1) by A2;
    then
A10: f|].rr-1,r.[ is non-decreasing by A9,ROLLE:11;
A11: rr - 1 < r1 - 0 by XREAL_1:15,XXREAL_0:17;
    r1 in left_open_halfline(r) by A3,XBOOLE_0:def 4;
    then r1 in {g: g < r} by XXREAL_1:229;
    then ex g1 st g1 = r1 & g1 < r;
    then r1 in {g1: rr - 1 < g1 & g1 < r} by A11;
    then
A12: r1 in ].rr - 1, r.[ by RCOMP_1:def 2;
    r1 in dom f by A3,XBOOLE_0:def 4;
    then r1 in ].rr - 1, r.[ /\ dom f by A12,XBOOLE_0:def 4;
    hence f.r1 <= f.r2 by A5,A10,A8,RFUNCT_2:22;
  end;
  hence thesis by RFUNCT_2:22;
end;
