
theorem Th9:
for a,b be Real, A be non empty closed_interval Subset of REAL,
 D be Division of A st A = [.a,b.] holds
  ex F be Finite_Sep_Sequence of Borel_Sets
   st dom D = dom F
    & 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.]))
proof
    let a,b be Real, A be non empty closed_interval Subset of REAL,
    D be Division of A;
    assume
A1:  A = [.a,b.];

    defpred P[Nat,set] means
        (len D = 1 implies $2 = [. a,b .])
      & (len D <> 1 implies
         ( ($1 = 1 implies $2 = [. a,D.$1 .[)
        & (1 < $1 < len D implies $2 = [. D.($1-'1), D.$1 .[)
        & ($1 = len D implies $2 = [. D.($1-'1), D.$1.])));

A2: for k be Nat st k in Seg len D ex x be Element of Borel_Sets st P[k,x]
    proof
     let k be Nat;
     assume k in Seg len D; then
     1 <= k <= len D by FINSEQ_1:1; then
A3:  (k = 1 & k <> len D) or (1 < k < len D) or k = len D by XXREAL_0:1;

A4:  [. a,b .] is Element of Borel_Sets
   & [. a, D.k .[ is Element of Borel_Sets
   & [. D.(k-'1), D.k .[ is Element of Borel_Sets
   & [.D.(k-'1),D.k .] is Element of Borel_Sets by MEASUR10:5;

     len D = 1 or len D <> 1;
     hence ex x be Element of Borel_Sets st P[k,x] by A3,A4;
    end;

    consider F be FinSequence of Borel_Sets such that
A5: dom F = Seg len D &
     for k be Nat st k in Seg len D holds P[k,F.k] from FINSEQ_1:sch 5(A2);

A6:dom F = dom D by A5,FINSEQ_1:def 3;

    for x,y be object st x <> y holds F.x misses F.y
    proof
     let x,y be object;
     assume A7: x <> y;
     per cases;
     suppose not x in dom F or not y in dom F; then
      F.x = {} or F.y = {} by FUNCT_1:def 2;
      hence F.x misses F.y by XBOOLE_1:65;
     end;

     suppose A8: x in dom F & y in dom F; then
      reconsider x1=x, y1=y as Nat;
A9:   x in dom D & y in dom D by A8,A5,FINSEQ_1:def 3;
A10:   1 <= x1 <= len D & 1 <= y1 <= len D by A8,A5,FINSEQ_1:1;
A11:   now assume len D = 1; then
       x1 = 1 & y1 = 1 by A10,XXREAL_0:1;
       hence contradiction by A7;
      end;

      per cases by A10,XXREAL_0:1;
      suppose A12: 1 = x1; then
A13:    1 < y1 <= len D by A7,A10,XXREAL_0:1; then
A14:    x1 <= y1-'1 <= len D by A12,NAT_D:44,49; then
A15:    y1-'1 in dom D by A12,FINSEQ_3:25;

A16:    F.x = [.a,D.x1 .[ by A8,A5,A12,A11;

       y1 < len D or y1 = len D by A10,XXREAL_0:1; then
       F.y = [. D.(y1-'1),D.y1 .[ or F.y = [. D.(y1-'1), D.y1 .]
         by A8,A5,A13;
       hence F.x misses F.y by A16,A14,A9,A15,VALUED_0:def 15,XXREAL_1:95,96;
      end;
      suppose A17: 1 < x1 < len D; then
       x1 in Seg len D by FINSEQ_1:1; then
A18:    F.x = [. D.(x1-'1),D.x1 .[ by A5,A17;

       per cases by A7,XXREAL_0:1;
       suppose A19: x1 < y1; then
A20:     x1 <= y1-'1 by NAT_D:49; then
        1 <= y1-'1 & y1-'1 <= len D by A10,NAT_D:44,XXREAL_0:2; then
A21:     y1-'1 in dom D by FINSEQ_3:25;

        y1 = len D or 1 < y1 < len D by A19,A10,XXREAL_0:1; then
        F.y = [. D.(y1-'1),D.y1 .] or F.y = [. D.(y1-'1),D.y1 .[ by A8,A11,A5;
        hence F.x misses F.y by A21,A18,A9,A20,VALUED_0:def 15,XXREAL_1:95,96;
       end;
       suppose A22: x1 > y1; then
A23:     y1 <= x1-'1 by NAT_D:49; then
        1 <= x1-'1 & x1-'1 <= len D by A10,XXREAL_0:2,NAT_D:44; then
A24:    x1-'1 in dom D by FINSEQ_3:25;

        y1 = 1 or 1 < y1 < len D by A10,A22,XXREAL_0:1; then
        F.y = [. a,D.y1 .[ or F.y = [. D.(y1-'1), D.y1 .[ by A5,A8,A11;
        hence F.x misses F.y by A18,A24,A9,A23,VALUED_0:def 15,XXREAL_1:96;
       end;
      end;
      suppose A25: x1 = len D; then
A26:    F.x = [. D.(x1-'1),D.x1 .] by A5,A8,A11;

A27:    y1 < len D by A7,A10,A25,XXREAL_0:1; then
A28:    y1 <= x1-'1 by A25,NAT_D:49; then
       1 <= x1-'1 <= len D by A10,XXREAL_0:2,NAT_D:44; then
A29:    x1-'1 in dom D by FINSEQ_3:25;

       y1 = 1 or 1 < y1 by A10,XXREAL_0:1; then
       F.y = [. a,D.y1 .[ or F.y = [. D.(y1-'1),D.y1 .[ by A5,A8,A27;
       hence F.x misses F.y by A26,A29,A9,A28,VALUED_0:def 15,XXREAL_1:95;
      end;
     end;
    end; then
    reconsider F as Finite_Sep_Sequence of Borel_Sets by PROB_2:def 2;
    take F;
A30: for k be Nat st k in dom F & k <> len D holds union rng(F|k) = [.a,D.k .[
    proof
     let k be Nat;
     assume that
A31:   k in dom F and
A32:  k <> len D;
A33: k <= len F by A31,FINSEQ_3:25;
     len D = len F by A5,FINSEQ_1:def 3; then
A34:  k < len D by A32,A33,XXREAL_0:1;

     defpred P[Nat] means 1 <= $1 <= k implies union rng(F|$1) = [.a,D.$1 .[;

A35: P[0];

A36:  for i be Nat st P[i] holds P[i+1]
     proof
      let i be Nat;
      assume A37: P[i];
      assume A38: 1 <= i+1 <= k; then
A39:   i+1 < len D by A34,XXREAL_0:2;

      i+1 <= len F by A38,A33,XXREAL_0:2; then
A40: i+1 in dom F by A38,FINSEQ_3:25;
      per cases;
      suppose A41: i=0; then
       len(F|(i+1)) = 1 by A38,A33,XXREAL_0:2,FINSEQ_1:59; then
       F|(i+1) = <* (F|(i+1)).1 *> by FINSEQ_1:40; then
       F|(i+1) = <* F.1 *> by A41,FINSEQ_3:112; then
       rng(F|(i+1)) = {F.1} by FINSEQ_1:38;
       hence union rng(F|(i+1)) = [.a,D.(i+1) .[ by A5,A40,A41,A38,A34;
      end;
      suppose A42: i<>0; then
A43:  i >= 1 by NAT_1:14;

A44:   i < i+1 by NAT_1:13; then
       F|(i+1)|i = F|i by FINSEQ_1:82; then
A45:   F|i = (F|(i+1))|(Seg i) by FINSEQ_1:def 16;

       len(F|(i+1)) = i+1 by A38,A33,XXREAL_0:2,FINSEQ_1:59; then
       F|(i+1) = F|i ^ <* (F|(i+1)).(i+1) *> by A45,FINSEQ_3:55; then
       F|(i+1) = F|i ^ <* F.(i+1) *> by FINSEQ_3:112; then
       rng(F|(i+1)) = rng(F|i) \/ rng <* F.(i+1) *> by FINSEQ_1:31; then
       rng(F|(i+1)) = rng(F|i) \/ {F.(i+1)} by FINSEQ_1:38; then
A46:   union rng(F|(i+1)) = union rng(F|i) \/ union {F.(i+1)}
          by ZFMISC_1:78;

       i <= k by A38,NAT_1:13; then
       i < len D by A34,XXREAL_0:2; then
A47:    i in dom D by A43,FINSEQ_3:25; then
       D.i in [.a,b.] by A1,INTEGRA1:6; then
A48:    a <= D.i by XXREAL_1:1;

A49:    D.i < D.(i+1) by A44,A47,A40,A6,VALUED_0:def 13;

       1 < i+1 by A42,NAT_1:13,14; then
       F.(i+1) = [. D.(i+1-'1), D.(i+1) .[ by A5,A39,A40; then
       F.(i+1) = [. D.i, D.(i+1) .[ by NAT_D:34;
       hence union rng(F|(i+1)) = [.a,D.(i+1) .[
         by A46,A48,A49,A37,A42,A38,NAT_1:13,14,XXREAL_1:168;
      end;
     end;
A50:  for i be Nat holds P[i] from NAT_1:sch 2(A35,A36);
     1 <= k by A31,FINSEQ_3:25;
     hence union rng(F|k) = [.a,D.k .[ by A50;
    end;

    union rng F = A
    proof
     per cases;
     suppose A51: len D = 1; then
A52:   1 in dom F by A6,FINSEQ_3:25;
      len F = 1 by A51,A5,FINSEQ_1:def 3; then
      F = <* F.1 *> by FINSEQ_1:40; then
      rng F = {F.1} by FINSEQ_1:38;
      hence union rng F = A by A1,A5,A51,A52;
     end;
     suppose A53: len D <> 1;
      consider k be Nat such that
A54:    len D = k + 1 by NAT_1:6;
A55:  1 <= len D by FINSEQ_1:20; then
      1 < len D by A53,XXREAL_0:1; then
A56:   1 <= k < len D by A54,NAT_1:13; then
A57:  k in dom F by A6,FINSEQ_3:25;

A58:  union rng(F|k) = [. a,D.k .[ by A56,A30,A6,FINSEQ_3:25;
      reconsider a1=lower_bound A, a2=upper_bound A as Real;
      A = [.a1,a2.] by INTEGRA1:4; then
A59:  b = upper_bound A by A1,INTEGRA1:5;

      k+1 in dom F by A54,A55,A6,FINSEQ_3:25; then
      F.(k+1) = [. D.(k+1-'1), D.(k+1) .] by A54,A53,A5; then
      F.(k+1) = [. D.k,D.(k+1) .] by NAT_D:34; then
A60:  F.(k+1) = [. D.k,b .] by A54,A59,INTEGRA1:def 2;
      D.k in A by A57,A6,INTEGRA1:6; then
A61:  a <= D.k <= b by A1,XXREAL_1:1;
A62:   len F = k+1 by A54,A5,FINSEQ_1:def 3;
      F|k = F|Seg k by FINSEQ_1:def 16; then
      F = F|k ^ <* F.(k+1) *> by A62,FINSEQ_3:55; then
      rng F = rng(F|k) \/ rng <* F.(k+1) *> by FINSEQ_1:31; then
      union rng F = union rng(F|k) \/ union rng <* F.(k+1) *>
        by ZFMISC_1:78; then
      union rng F = [. a,D.k .[ \/ union {F.(k+1)} by A58,FINSEQ_1:38;
      hence union rng F = A by A1,A60,A61,XXREAL_1:166;
     end;
    end;
    hence thesis by A5,FINSEQ_1:def 3;
end;
