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