 reserve a,b,r for Real;
 reserve A for non empty set;
 reserve X,x for set;
 reserve f,g,F,G for PartFunc of REAL,REAL;
 reserve n for Element of NAT;

theorem Th19:
  for a,b be Real,
      u be PartFunc of REAL,REAL
  st a < b
   & u is_differentiable_on ].a,b.[
   & dom u = ['a,b'] & u is continuous
   & ( for t be Real st t in ].a,b.[ holds (u`| ].a,b.[).t = 0 )
  holds
    ex C be Real
    st for t be Real st t in ['a,b'] holds u.t = C
proof
  let a,b be Real,
      u be PartFunc of REAL,REAL;
  assume
  A1: a < b
    & u is_differentiable_on ].a,b.[
    & dom u = ['a,b'] & u is continuous
    & ( for t be Real st t in ].a,b.[ holds (u`| ].a,b.[ ).t = 0 );

  for x be Real st x in ].a,b.[ holds diff(u,x) = 0
  proof
    let t be Real;
    assume
    A2: t in ].a,b.[;
    hence diff(u,t) = (u`| ].a,b.[).t by A1,FDIFF_1:def 7
                   .= 0 by A1,A2;
  end; then
  A3: u | ].a,b.[ is constant by A1,ROLLE:7;
  A4: dom(u | ].a,b.[) = ].a,b.[ by A1,RELAT_1:62;

  set z = a + (b-a)/2;

  A5: 0 < b-a by A1,XREAL_1:50; then
  A6: 0 + a < z by XREAL_1:8;
  (b-a)/2 < b-a by A5,XREAL_1:216; then
  z < b-a + a by XREAL_1:8; then
  A7: z in ].a,b.[ by A6;
  take C = (u | ].a,b.[).z;

  now
    let t be Real;
    assume
    A8: t in ].a,b.[;
    hence u.t = (u | ].a,b.[).t by FUNCT_1:49
            .= C by A3,A4,A7,A8,FUNCT_1:def 10;
  end;
  hence for t be Real st t in ['a,b']
        holds u.t = C by A1,Th1;
end;
