
theorem Th34:
for H being sequence of [:NAT,NAT:] st H is one-to-one & rng H = [:NAT,NAT:]
 holds for k being Nat holds
  ex m being Element of NAT st
   for F being sequence of bool REAL holds
    for G being Open_Interval_Covering of F holds
     Ser((On(G,H)) vol).k <= Ser(vol(G)).m
proof
    reconsider y = D as Element of Funcs(NAT,bool REAL) by FUNCT_2:8;
    let H be sequence of [:NAT,NAT:];
    assume that
A1:  H is one-to-one and
A2:  rng H = [:NAT,NAT:];
    defpred P[Nat] means
      ex m being Element of NAT st
        for F being sequence of bool REAL holds
          for G being Open_Interval_Covering of F holds
            Ser((On(G,H)) vol).($1) <= Ser(vol(G)).m;
A3: for k being Nat st P[k] holds P[k+1]
    proof
     let k be Nat;
     set N0 = {s where s is Element of NAT : pr1(H).(k+1) = pr1(H).s};
A4:  N0 c= NAT
     proof
      let s1 be object;
      assume s1 in N0;
      then ex s being Element of NAT st s = s1 & pr1(H).(k+1) = pr1(H).s;
      hence thesis;
     end;
     k+1 in N0;
     then reconsider N0 as non empty Subset of NAT by A4;
     given m0 being Element of NAT such that
A5:   for F being sequence of bool REAL holds
        for G being Open_Interval_Covering of F holds
          Ser((On(G,H)) vol).k <= Ser(vol(G)).m0;
      take m = m0 + pr1(H).(k+1);
      let F be sequence of bool REAL;
      let G be Open_Interval_Covering of F;
      defpred QQ1[Element of NAT,Function] means
        (($1 <> pr1(H).(k+1) implies
          for m being Element of NAT holds $2.m = (G.$1).m)
      & ($1 = pr1(H).(k+1) implies
          for m being Element of NAT holds $2.m = {}));

A6:   for n being Element of NAT holds
       ex y being Element of Funcs(NAT,bool REAL) st QQ1[n,y]
      proof
       let n be Element of NAT;
       per cases;
       suppose
A7:     n <> pr1(H).(k+1);
        reconsider y = G.n as Element of Funcs(NAT,bool REAL) by FUNCT_2:8;
        take y;
        thus thesis by A7;
       end;
       suppose
A8:     n = pr1(H).(k+1);
        take y;
        thus thesis by A8;
       end;
     end;
     consider G1 being sequence of Funcs(NAT,bool REAL) such that
A9:   for n being Element of NAT holds QQ1[n,G1.n] from FUNCT_2:sch 3(A6);
A10: for n being Element of NAT holds G1.n is Open_Interval_Covering of D.n
     proof
      let n be Element of NAT;
      consider f0 being Function such that
A11:  G1.n = f0 and
A12:  dom f0 = NAT & rng f0 c= bool REAL by FUNCT_2:def 2;
      reconsider f0 as sequence of bool REAL by A12,FUNCT_2:2;
A13:  for s being Element of NAT holds f0.s is Interval
      proof
        let s be Element of NAT;
        per cases;
        suppose
          n <> pr1(H).(k+1);
          then f0.s = (G.n).s by A9,A11;
          hence thesis;
        end;
        suppose
          n = pr1(H).(k+1);
          hence thesis by A9,A11;
        end;
      end;
      D.n c= union(rng f0);
      then reconsider f0 as Interval_Covering of D.n by A13,MEASURE7:def 2;
      for m being Element of NAT holds f0.m is open_interval
      proof
       let m be Element of NAT;
       per cases;
       suppose n <> pr1(H).(k+1); then
        f0.m = (G.n).m by A9,A11;
        hence f0.m is open_interval;
       end;
       suppose n = pr1(H).(k+1);
        hence f0.m is open_interval by A9,A11;
       end;
      end;
      then reconsider f0 as Open_Interval_Covering of D.n by Def5;
      G1.n = f0 by A11;
      hence thesis;
     end;

     defpred SSS[Element of N0,Element of NAT] means $2 = pr2(H).$1;

     defpred QQ0[Element of NAT,Function] means
       (($1 = pr1(H).(k+1) implies
         for m being Element of NAT holds $2.m = (G.$1).m)
      & ($1 <> pr1(H).(k+1) implies
         for m being Element of NAT holds $2.m = {}));

A14: for n being Element of NAT holds
       ex y being Element of Funcs(NAT,bool REAL) st QQ0[n,y]
     proof
      let n be Element of NAT;
      per cases;
      suppose
A15:   n = pr1(H).(k+1);
       reconsider y = G.n as Element of Funcs(NAT,bool REAL) by FUNCT_2:8;
       take y;
       thus thesis by A15;
      end;
      suppose
A16:   n <> pr1(H).(k+1);
       take y;
       thus thesis by A16;
      end;
     end;
     consider G0 being sequence of Funcs(NAT,bool REAL) such that
A17:  for n being Element of NAT holds QQ0[n,G0.n] from FUNCT_2:sch 3(A14);

     for n being Element of NAT holds G0.n is Interval_Covering of D.n
     proof
      let n be Element of NAT;
      consider f0 being Function such that
A18:  G0.n = f0 and
A19:  dom f0 = NAT & rng f0 c= bool REAL by FUNCT_2:def 2;
      reconsider f0 as sequence of bool REAL by A19,FUNCT_2:2;
A20:  for s being Element of NAT holds f0.s is Interval
      proof
        let s be Element of NAT;
        per cases;
        suppose
          n = pr1(H).(k+1);
          then f0.s = (G.n).s by A17,A18;
          hence thesis;
        end;
        suppose
          n <> pr1(H).(k+1);
          hence thesis by A17,A18;
        end;
      end;
      D.n c= union(rng f0);
      then reconsider f0 as Interval_Covering of D.n by A20,MEASURE7:def 2;

      for s being Element of NAT holds f0.s is open_interval
      proof
       let s be Element of NAT;
       per cases;
       suppose
        n = pr1(H).(k+1);
        then f0.s = (G.n).s by A17,A18;
        hence thesis;
       end;
       suppose
        n <> pr1(H).(k+1);
        hence thesis by A17,A18;
       end;
      end;
      then reconsider f0 as Open_Interval_Covering of D.n by Def5;
      G0.n = f0 by A18;
      hence thesis;
     end;
     then reconsider G0 as Interval_Covering of D by MEASURE7:def 3;

     for n being Element of NAT holds G0.n is Open_Interval_Covering of D.n
     proof
      let n be Element of NAT;
      per cases;
      suppose A21: n = pr1(H).(k+1);
       for m be Element of NAT holds (G0.n).m is open_interval
       proof
        let m be Element of NAT;
        (G0.n).m = (G.n).m by A21,A17;
        hence thesis;
       end;
       hence G0.n is Open_Interval_Covering of D.n by Def5;
      end;
      suppose  n <> pr1(H).(k+1); then
       for m be Element of NAT holds (G0.n).m is open_interval by A17;
       hence G0.n is Open_Interval_Covering of D.n by Def5;
      end;
     end;
     then reconsider G0 as Open_Interval_Covering of D by Def6;

     set GG0 = On(G0,H);
     reconsider G1 as Open_Interval_Covering of D by A10,Th33;
     set GG1 = On(G1,H);
A22: (Ser(GG0 vol)).(k+1) <= SUM(GG0 vol) by MEASURE7:6,12;
     GG1.(k+1) = (G1.(pr1(H).(k+1))).(pr2(H).(k+1)) by A2,MEASURE7:def 11
      .= {} by A9;
     then
A23: (GG1 vol).(k+1) = 0. by MEASURE7:def 4,MEASURE5:10;
     (Ser (GG1 vol)).(k+1) = (Ser (GG1 vol)).k + (GG1 vol).(k+1)
       by SUPINF_2:def 11;
     then
A24: (Ser (GG1 vol)).(k+1) = (Ser (GG1 vol)).k by A23,XXREAL_3:4;
     for s being Element of NAT holds 0. <= (vol(G1)).s by MEASURE7:13;
     then vol(G1) is nonnegative by SUPINF_2:39;
     then
A25: (Ser vol(G1)).m0 <= (Ser vol(G1)).m by SUPINF_2:41;
A26: for n being Element of NAT holds
       ((On(G,H)) vol).n = (GG0 vol).n + (GG1 vol). n
     proof
      let n be Element of NAT;
A27:  (GG0 vol).n = diameter(GG0.n)
    & (GG1 vol).n = diameter(GG1.n) by MEASURE7:def 4;
      ((On(G,H)) vol).n = diameter((On(G,H)).n) by MEASURE7:def 4;
      then
A28:  ((On(G,H)) vol).n = diameter((G.(pr1(H).n)).(pr2(H).n))
        by A2,MEASURE7:def 11;
      per cases;
      suppose
A29:   pr1(H).n = pr1(H).(k+1);
A30:   GG1.n = (G1.(pr1(H).n)).(pr2(H).n) by A2,MEASURE7:def 11
          .= {} by A9,A29;
       GG0.n = (G0.(pr1(H).n)).(pr2(H).n) by A2,MEASURE7:def 11
          .= (G.(pr1(H).n)).(pr2(H).n) by A17,A29;
       hence thesis by A27,A28,A30,MEASURE5:10,XXREAL_3:4;
      end;
      suppose
A31:   pr1(H).n <> pr1(H).(k+1);
A32:   GG0.n = (G0.(pr1(H).n)).(pr2(H).n) by A2,MEASURE7:def 11
          .= {} by A17,A31;
       GG1.n = (G1.(pr1(H).n)).(pr2(H).n) by A2,MEASURE7:def 11
          .= (G.(pr1(H).n)).(pr2(H).n) by A9,A31;
       hence thesis by A27,A28,A32,MEASURE5:10,XXREAL_3:4;
      end;
     end;
     GG0 vol is nonnegative & GG1 vol is nonnegative by MEASURE7:12;
     then
A33: (Ser (On(G,H) vol)).(k+1)
       = (Ser (GG0 vol)).(k+1) + (Ser (GG1 vol)).(k+1) by A26,MEASURE7:3;
     for s being Element of NAT holds 0. <= (vol(G1)).s by MEASURE7:13;
     then
A34: vol(G1) is nonnegative by SUPINF_2:39;
     (Ser(GG1 vol)).k <= (Ser vol(G1)).m0 by A5;
     then
A35: (Ser (GG1 vol)).(k+1) <= (Ser vol(G1)).m by A24,A25,XXREAL_0:2;
A36: for s being Element of N0 holds ex y being Element of NAT st SSS[s,y];

     consider SOS being Function of N0,NAT such that
A37:  for s being Element of N0 holds SSS[s,SOS.s] from FUNCT_2:sch 3(A36);
A38: for n being Element of NAT holds (vol(G)).n = (vol(G0)).n + (vol(G1)) .n
     proof
      let n be Element of NAT;
A39:  vol(G.n) = vol(G0.n) + vol(G1.n)
      proof
       per cases;
       suppose
A40:    n = pr1(H).(k+1);
        for s being Element of NAT holds ((G.n) vol).s <= ((G0.n) vol). s
        proof
         let s be Element of NAT;
         ((G0.n) vol).s = diameter((G0.n).s) by MEASURE7:def 4
              .= diameter((G.n).s) by A17,A40
              .= ((G.n) vol).s by MEASURE7:def 4;
         hence thesis;
        end;
        then
A41:    SUM((G.n) vol) <= SUM((G0.n) vol) by SUPINF_2:43;
        for s being Element of NAT holds ((G1.n) vol).s = 0.
        proof
         let s be Element of NAT;
         diameter((G1.n).s) = 0. by A9,A40,MEASURE5:10;
         hence thesis by MEASURE7:def 4;
        end;
        then
A42:    SUM((G1.n) vol) = 0. by MEASURE7:1;
        for s being Element of NAT holds ((G0.n) vol).s <= ((G.n) vol). s
        proof
         let s be Element of NAT;
         ((G0.n) vol).s = diameter((G0.n).s) by MEASURE7:def 4
              .= diameter((G.n).s) by A17,A40
              .= ((G.n) vol).s by MEASURE7:def 4;
         hence thesis;
        end;
        then SUM((G0.n) vol) <= SUM((G.n) vol) by SUPINF_2:43;
        then SUM((G.n) vol) = SUM((G0.n) vol) by A41,XXREAL_0:1;
        then vol(G.n) = SUM((G0.n) vol) by MEASURE7:def 6;
        then vol(G.n) = vol(G0.n) by MEASURE7:def 6;
        then vol(G.n) = vol(G0.n) + SUM((G1.n) vol) by A42,XXREAL_3:4;
        hence vol(G.n) = vol(G0.n) + vol(G1.n) by MEASURE7:def 6;
       end;
       suppose
A43:    n <> pr1(H).(k+1);
A44:    for s being Element of NAT holds ((G1.n) vol).s = ((G.n) vol).s
        proof
         let s be Element of NAT;
         ((G1.n) vol).s = diameter((G1.n).s)
       & ((G.n) vol).s = diameter((G.n).s) by MEASURE7:def 4;
         hence thesis by A9,A43;
        end;
        then
        for s being Element of NAT holds ((G.n) vol).s <= ((G1.n) vol). s;
        then
A45:    SUM((G.n) vol) <= SUM((G1.n) vol) by SUPINF_2:43;
        for s being Element of NAT holds ((G0.n) vol).s = 0.
        proof
         let s be Element of NAT;
         diameter((G0.n).s) = 0. by A17,A43,MEASURE5:10;
         hence thesis by MEASURE7:def 4;
        end;
        then
A46:    SUM((G0.n) vol) = 0. by MEASURE7:1;
        for s being Element of NAT holds
          ((G1.n) vol).s <= ((G.n) vol).s by A44;
        then SUM((G1.n) vol) <= SUM((G.n) vol) by SUPINF_2:43;
        then SUM((G.n) vol) = SUM((G1.n) vol) by A45,XXREAL_0:1;
        then vol(G.n) = SUM((G1.n) vol) by MEASURE7:def 6;
        then vol(G.n) = vol(G1.n) by MEASURE7:def 6;
        then vol(G.n) = SUM((G0.n) vol) + vol(G1.n) by A46,XXREAL_3:4;
        hence vol(G.n) = vol(G0.n) + vol(G1.n)
          by MEASURE7:def 6;
       end;
      end;
      (vol(G)).n = vol(G.n) & (vol(G0)).n = vol(G0.n) by MEASURE7:def 7;
      hence thesis by A39,MEASURE7:def 7;
     end;
     for s being Element of NAT holds 0. <= (vol(G0)).s by MEASURE7:13;
     then vol(G0) is nonnegative by SUPINF_2:39;
     then
A47: (vol(G0)).(pr1(H).(k+1)) <= (Ser(vol(G0))).(pr1(H).(k+1 ))
   & (Ser vol(G0)).( pr1(H).(k+1)) <= (Ser vol(G0)).m
       by MEASURE7:2,SUPINF_2:41;
A48: for s being Element of NAT holds
       (s in N0 implies (GG0 vol).s = ((G0.(pr1(H).(k+1)) vol)*SOS).s)
     & (not s in N0 implies (GG0 vol).s = 0.)
     proof
      let s be Element of NAT;
      thus s in N0 implies (GG0 vol).s = ((G0.(pr1(H).(k+1)) vol)*SOS).s
      proof
       assume
A49:   s in N0;
       then
A50:   ex s1 being Element of NAT st s1 = s & pr1(H).(k+1) = pr1(H).s1;
A51:   pr2(H).s =SOS.s by A37,A49;
       (GG0 vol).s = diameter(GG0.s) by MEASURE7:def 4
        .= diameter((G0.(pr1(H).(k+1))).(pr2(H).s)) by A2,A50,MEASURE7:def 11
        .= (G0.(pr1(H).(k+1)) vol).(SOS.s) by A51,MEASURE7:def 4
        .= ((G0.(pr1(H).(k+1)) vol)*SOS).s by A49,FUNCT_2:15;
       hence thesis;
      end;
      assume not s in N0;
      then
A52:  not pr1(H).(k+1) = pr1(H).s;
      (GG0 vol).s = diameter(GG0.s) by MEASURE7:def 4
        .= diameter((G0.(pr1(H).s)).(pr2(H).s)) by A2,MEASURE7:def 11
        .= 0. by A17,A52,MEASURE5:10;
      hence thesis;
     end;
     for s1,s2 being object st s1 in N0 & s2 in N0 & SOS.s1 = SOS.s2
       holds s1 = s2
     proof
      let s1,s2 be object;
      assume that
A53:  s1 in N0 & s2 in N0 and
A54:  SOS.s1 = SOS.s2;
      reconsider s1,s2 as Element of NAT by A53;
A55:  (ex s11 being Element of NAT st s11 = s1 & pr1(H).(k+1) = pr1(H).s11 )
     & ex s22 being Element of NAT st s22 = s2 & pr1(H).(k+1) = pr1(H).s22
        by A53;
A56:  H.s1 = [pr1(H).s1,pr2(H).s1]
    & H.s2 = [pr1(H).s2,pr2(H).s2] by FUNCT_2:119;
      SOS.s1 = pr2(H).s1 & SOS.s2 = pr2(H).s2 by A37,A53;
      hence thesis by A1,A54,A55,A56,FUNCT_2:19;
     end;
     then SOS is one-to-one by FUNCT_2:19;
     then SUM(GG0 vol) <= SUM(G0.(pr1(H).(k+1)) vol) by A48,MEASURE7:11,12;
     then
A57: (Ser(GG0 vol)).(k+1) <= SUM(G0.(pr1(H).(k+1)) vol) by A22,XXREAL_0:2;
     SUM(G0.(pr1(H).(k+1)) vol) = vol(G0.(pr1(H).(k+1))) by MEASURE7:def 6
      .= (vol(G0)).(pr1(H).(k+1)) by MEASURE7:def 7;
     then SUM(G0.(pr1(H).(k+1)) vol) <= (Ser vol(G0)).m by A47,XXREAL_0:2;
     then
A58: (Ser (GG0 vol)).(k+1) <= (Ser vol(G0)).m by A57,XXREAL_0:2;
     for s being Element of NAT holds 0. <= (vol(G0)).s by MEASURE7:13;
     then vol(G0) is nonnegative by SUPINF_2:39;
     then (Ser vol(G)).m = (Ser vol(G0)).m + (Ser vol(G1)).m
       by A38,A34,MEASURE7:3;
     hence thesis by A58,A35,A33,XXREAL_3:36;
    end;

A59:P[0]
    proof
     take m = pr1(H).0;
     let F be sequence of bool REAL;
     let G be Open_Interval_Covering of F;
     reconsider GG = On(G,H) as Open_Interval_Covering of union rng F
       by A2,Th31;

     (GG vol).0 = diameter(GG.0)
   & ((G.(pr1(H).0)) vol).(pr2(H).0) = diameter((G. (pr1(H).0)).(pr2(H).0))
        by MEASURE7:def 4; then
     (GG vol).0 <= ((G.(pr1(H).0)) vol).(pr2(H).0) by A2,MEASURE7:def 11; then
     (GG vol).0 <= SUM((G.(pr1(H).0)) vol) by MEASURE7:12,MEASURE6:3; then
     (GG vol).0 <= vol(G.(pr1(H).0)) by MEASURE7:def 6;
     then
A60: Ser(GG vol).0 = (GG vol).0
   & (GG vol).0 <= (vol(G)).(pr1(H).0) by MEASURE7:def 7,SUPINF_2:def 11;
     for n being Element of NAT holds 0. <= (vol(G)).n by MEASURE7:13;
     then vol(G) is nonnegative by SUPINF_2:39;
     then (vol(G)).m <= Ser(vol(G)).m by MEASURE7:2;
     hence thesis by A60,XXREAL_0:2;
    end;
    thus for k being Nat holds P[k] from NAT_1:sch 2(A59,A3);
end;
