
theorem Th11:
for a,b be Real, A be non empty closed_interval Subset of REAL,
 D be Division of A, f be PartFunc of A,REAL st A = [.a,b.] holds
  ex F be Finite_Sep_Sequence of Borel_Sets, g be PartFunc of REAL,ExtREAL
   st dom F = dom D
    & union rng F = A
    & (for k be Nat st k in dom F holds
        (len D = 1 implies F.k = [. a,b .])
      & (len D <> 1 implies
         (k = 1 implies F.k = [. a,D.k .[)
       & (1 < k < len D implies F.k = [. D.(k-'1), D.k .[)
       & (k = len D implies F.k = [. D.(k-'1), D.k.])))
    & g is_simple_func_in Borel_Sets
    & dom g = A
    & for x be Real st x in dom g holds
        ex k be Nat st 1 <= k <= len F & x in F.k
           & g.x = upper_bound rng(f|divset(D,k))
proof
    let a,b be Real, A be non empty closed_interval Subset of REAL,
    D be Division of A, f be PartFunc of A,REAL;
    assume A = [.a,b.]; then
    consider F be Finite_Sep_Sequence of Borel_Sets such that
A1:  dom F = dom D and
A2:  union rng F = A and
A3:  for k be Nat st k in dom F holds
        (len D = 1 implies F.k = [. a,b .])
      & (len D <> 1 implies
         (k = 1 implies F.k = [. a,D.k .[)
       & (1 < k < len D implies F.k = [. D.(k-'1), D.k .[)
       & (k = len D implies F.k = [. D.(k-'1), D.k.])) by Th9;

    defpred P[object,object] means
     ex k be Nat st 1 <= k <= len F & $1 in F.k &
      $2 = upper_bound rng(f|divset(D,k));

A4: for x,y be object st x in REAL & P[x,y] holds y in ExtREAL
      by XXREAL_0:def 1;

A5: for x,y1,y2 be object st x in REAL & P[x,y1] & P[x,y2] holds y1 = y2
      by PROB_2:def 2,XBOOLE_0:3;

    consider g be PartFunc of REAL,ExtREAL such that
A6:  for x be object holds x in dom g iff
       x in REAL & ex y be object st P[x,y] and
A7:  for x be object st x in dom g holds P[x,g.x] from PARTFUN1:sch 2(A4,A5);

    now let y be object;
     assume y in rng g; then
     consider x be Element of REAL such that
A8:   x in dom g & y = g.x by PARTFUN1:3;
     ex k be Nat st
      1 <= k <= len F & x in F.k & g.x = upper_bound rng(f|divset(D,k))
        by A7,A8;
     hence y in REAL by A8,XREAL_0:def 1;
    end; then
    rng g c= REAL; then
A9: g is real-valued by VALUED_0:def 3;

    now let x be object;
     assume x in dom g; then
     consider y be object such that
A10:   ex k be Nat st 1 <= k <= len F & x in F.k
        & y = upper_bound rng(f|divset(D,k)) by A6;
     consider k be Nat such that
A11:   1 <= k <= len F and
A12:   x in F.k and
      y = upper_bound rng(f|divset(D,k)) by A10;
     k in dom F by A11,FINSEQ_3:25; then
     F.k in rng F by FUNCT_1:3;
     hence x in union rng F by A12,TARSKI:def 4;
    end; then
A13: dom g c= union rng F;

    now let x be object;
     assume A14: x in union rng F; then
     consider P be set such that
A15:   x in P & P in rng F by TARSKI:def 4;
     consider k be Element of NAT such that
A16:   k in dom F & P = F.k by A15,PARTFUN1:3;

A17:  1 <= k <= len F by A16,FINSEQ_3:25;

     upper_bound rng(f|divset(D,k)) in REAL by XREAL_0:def 1;
     hence x in dom g by A6,A14,A2,A15,A16,A17;
    end; then
    union rng F c= dom g; then
A18:dom g = union rng F by A13,XBOOLE_0:def 10;

A19:for k be Nat, x,y be Element of REAL st
      k in dom F & x in F.k & y in F.k holds g.x = g.y
    proof
     let k be Nat, x,y be Element of REAL;
     assume that
A20:   k in dom F and
A21:   x in F.k and
A22:   y in F.k;

     F.k in rng F by A20,FUNCT_1:3; then
A23:  x in dom g & y in dom g by A18,A21,A22,TARSKI:def 4; then
     consider k1 be Nat such that
      1 <= k1 <= len F and
A24:   x in F.k1 and
A25:   g.x = upper_bound rng(f|divset(D,k1)) by A7;
     consider k2 be Nat such that
      1 <= k2 <= len F and
A26:   y in F.k2 and
A27:   g.y = upper_bound rng(f|divset(D,k2)) by A23,A7;

     k = k1 & k = k2 by A21,A22,A24,A26,XBOOLE_0:3,PROB_2:def 2;
     hence g.x = g.y by A25,A27;
    end;
    for x be Real st x in dom g holds
      ex k be Nat st 1 <= k <= len F & x in F.k
       & g.x = upper_bound rng(f|divset(D,k)) by A7;
    hence thesis by A1,A3,A2,A18,A19,A9,MESFUNC2:def 4;
end;
