
theorem NF996:
  for n being Nat, epsilon being Real,
  a being non empty positive at_most_one FinSequence of REAL,
  f being non empty FinSequence of NAT st
  n is odd & len a = n & epsilon = 1 / (n + 1) &
  (for i being Nat st i in Seg n holds
  (i is odd  implies a . i = 2 * epsilon) &
  (i is even implies a . i = 1 - epsilon)) &
  dom f = dom a &
  (for i being Nat st i in Seg n holds
  (i is odd  implies f . i = 1) &
  (i is even implies f . i = i div 2 + 1)) holds
  for j being Nat st j in rng f holds SumBin (a, f, {j}) <= 1
  proof
    let n be Nat, epsilon be Real,
    a be non empty positive at_most_one FinSequence of REAL,
    f be non empty FinSequence of NAT;

    assume that
    L010: n is odd and
    L030: len a = n and
    L040: epsilon = 1 / (n + 1) and
    L050: for i being Nat st i in Seg n holds
    (i is odd  implies a . i = 2 * epsilon) &
    (i is even implies a . i = 1 - epsilon) and
    L205: dom f = dom a and
    L220: for i being Nat st i in Seg n holds
    (i is odd  implies f . i = 1) &
    (i is even implies f . i = i div 2 + 1);

    L020: 1 <= n by L010,NF992;

    L060: (n + 1) div 2 = (n + 1) / 2 by L010,NF992;

    let j be Nat;

    assume L250: j in rng f;

    set npd2 = (n + 1) div 2;

    1 + 1 <= n + 1 by L010,NF992,XREAL_1:6;
    then L189: 2 / 2 <= (n + 1) / 2 by XREAL_1:72;

    reconsider npd2 as Nat by L010,L060;

    L253: dom f = Seg n by L205,FINSEQ_1:def 3,L030;

    for y being object holds
    ( y in Seg npd2 iff
    ex x being object st x in dom f & y = f . x )
    proof
      let y be object;

      hereby
        assume L255: y in Seg npd2;
        then reconsider y0 = y as Nat;

        1 <= y0 & y0 <= npd2 by L255,FINSEQ_1:1;
        then 1 + 1 <= y0 + 1 by XREAL_1:6;
        then 2 <= y0 or 2 = y0 + 1 by NAT_1:8;
        then per cases by L255,FINSEQ_1:1;
        suppose L260: y0 = 1;
          set x0 = 1;

          L262: 1 in Seg n by L020;

          L263: x0 in dom f by L020,L253;

          1 = 2 * 0 + 1;
          then f . x0 = y0 by L262,L220,L260;
          hence ex x being object st x in dom f & y = f . x by L263;
        end;
        suppose L270: 2 <= y0 & y0 <= npd2;

          set x0 = (y0 - 1) * 2;

          2 - 1 <= y0 - 1 by XREAL_1:9,L270;
          then 1 * 2 <= (y0 - 1) * 2 by XREAL_1:64;
          then L272: 2 - 1 <= (y0 - 1) * 2 - 0 by XREAL_1:13;

          reconsider x0 as Nat by L270;

          y0 * 2 <= ((n + 1) / 2) * 2 by L060,L270,XREAL_1:64;
          then y0 * 2 - 1 <= n by XREAL_1:20;
          then L2735: y0 * 2 - 1 - 1 <= n - 0 by XREAL_1:13;
          then L275: x0 in Seg n by L272;

          L276: x0 in dom f by L253,L272,L2735;

          f . x0 = x0 div 2 + 1 by L275,L220
          .= ((y0 - 1) * 2) / 2 + 1 by NAT_6:4
          .= y0;
          hence ex x being object st x in dom f & y = f . x by L276;
        end;
      end;

      given x0 being object such that
      L280: x0 in dom f and
      L281: y = f . x0;

      reconsider x0 as Nat by L280;

      L283: 1 <= x0 & x0 <= n by L280,L253,FINSEQ_1:1;

      per cases;
      suppose x0 is odd;
        then f . x0 = 1 by L280,L253,L220;
        hence y in Seg npd2 by L281,L189,L060;
      end;
      suppose L284: x0 is even;
        then L2845: f . x0 = x0 div 2 + 1 by L280,L253,L220;

        reconsider y0 = y as Integer by L281;

        L286: y0 = x0 / 2 + 1 by L2845,L281,L284,NAT_6:4;

        L2865: 0 + 1 <= x0 / 2 + 1 by XREAL_1:6;

        reconsider y0 as Nat by L281;

        x0 + 1 <= n + 1 by XREAL_1:6,L283;
        then x0 + 1 <= n by L284,L010,NAT_1:8;
        then x0 + 1 + 1 <= n + 1 by XREAL_1:6;
        then (x0 + 2) / 2 <= (n + 1) / 2 by XREAL_1:72;
        then y0 <= npd2 by L010,NF992,L286;
        hence y in Seg npd2 by L286,L2865;
      end;
    end;
    then L291: rng f = Seg npd2 by FUNCT_1:def 3;
    then 1 <= j & j <= npd2 by L250,FINSEQ_1:1;
    then 1 + 1 <= j + 1 by XREAL_1:6;
    then 2 <= j or 2 = j + 1 by NAT_1:8;
    then per cases by L291,L250,FINSEQ_1:1;
    suppose L300: j = 1;
      set OddSegn = { i where i is Nat : ( 1 <= i & i <= n & i is odd) };

      defpred P[Nat, object] means $2 = 2 * $1 - 1;

      L310: for i being Nat st i in Seg npd2 holds
      ex x being object st P[i, x];

      consider sgmo being FinSequence such that
      L320: dom sgmo = Seg npd2 and
      L321: for i being Nat st i in Seg npd2 holds P[i, sgmo . i]
      from FINSEQ_1:sch 1 (L310);

      for y being object holds
      y in OddSegn iff
      ex x being object st x in dom sgmo & y = sgmo . x
      proof
        let y be object;

        hereby
          assume y in OddSegn;
          then consider y0 being Nat such that
          L322: y0 = y and
          L323: 1 <= y0 & y0 <= n & y0 is odd;

          set x0 = (y0 + 1) div 2;

          x0 * 2 = ((y0 + 1) / 2) * 2 by L323,NAT_6:4
          .= y0 + 1;
          then L326: y0 = 2 * x0 - 1;
          then 1 + 1 <= 2 * x0 by L323,XREAL_1:19;
          then L3265: 2 / 2 <= (x0 * 2) / 2 by XREAL_1:72;
          then x0 in NAT by INT_1:3;
          then reconsider x0 as Nat;

          x0 * 2 <= n + 1 by L323,L326,XREAL_1:20;
          then L3275: (x0 * 2) / 2 <= (n + 1) / 2 by XREAL_1:72;
          then L329: x0 in Seg npd2 by L3265,L060;

          L330: x0 in dom sgmo by L3265,L3275,L060,L320;

          y0 = sgmo . x0 by L329,L321,L326;
          hence ex x being object st x in dom sgmo & y = sgmo . x
          by L330,L322;
        end;

        given x0 being object such that
        L340: x0 in dom sgmo and
        L342: y = sgmo . x0;

        reconsider x0 as Nat by L340;

        L351: 1 <= x0 & x0 <= npd2 by L340,L320,FINSEQ_1:1;

        L352: y = 2 * x0 - 1 by L340,L320,L321,L342;
        then reconsider y0 = y as Integer;

        1 * 2 <= x0 * 2 by L351,XREAL_1:64;
        then L359: 2 - 1 <= 2 * x0 - 1 by XREAL_1:9;
        then 1 <= y0 by L340,L320,L321,L342;
        then y0 in NAT by INT_1:3;
        then reconsider y0 as Nat;

        x0 * 2 <= ((n + 1) / 2) * 2 by L351,L060,XREAL_1:64;
        then y0 <= n by XREAL_1:20,L352;
        hence y in OddSegn by L359,L352;
      end;
      then L370: rng sgmo = OddSegn by FUNCT_1:def 3;

      for x1, x2 being object st
      x1 in dom sgmo & x2 in dom sgmo & sgmo . x1 = sgmo . x2 holds
      x1 = x2
      proof
        let x1, x2 be object;

        assume that
        L371: x1 in dom sgmo & x2 in dom sgmo and
        L372: sgmo . x1 = sgmo . x2;

        reconsider x01 = x1, x02 = x2 as Nat by L371;

        sgmo . x01 = 2 * x01 - 1 & sgmo . x02 = 2 * x02 - 1 by L320,L371,L321;
        then 2 * x01 - 1 = 2 * x02 - 1 by L372;
        hence x1 = x2;
      end;
      then L380: sgmo is one-to-one by FUNCT_1:def 4;

      L395: card Seg npd2 = npd2 by FINSEQ_1:57;

      L419: for x being object st x in OddSegn holds x in Seg n
      proof
        let x be object;

        assume x in OddSegn;
        then consider x0 being Nat such that
        L410: x0 = x and
        L411: 1 <= x0 & x0 <= n & x0 is odd;

        thus x in Seg n by L410,L411;
      end;
      then L420: OddSegn c= Seg n;
      then l420: OddSegn is included_in_Seg;
      L430: len (Sgm OddSegn)
      =  card OddSegn by l420,FINSEQ_3:39
      .= npd2 by L320,L370,L380,WELLORD2:def 4,L395,CARD_1:5;

      L505: dom a = Seg n by FINSEQ_1:def 3,L030;
      then L510: OddSegn c= dom a by L419;
      then L512: dom (a | OddSegn) = OddSegn by RELAT_1:62;

      L522: dom (Sgm (dom (a | OddSegn))) = dom (Sgm OddSegn)
        by L510,RELAT_1:62;

      L499: for i being object holds
      i in OddSegn iff i in dom f & f . i in {j}
      proof
        let i be object;

        hereby
          assume i in OddSegn;
          then consider i0 being Nat such that
          L440: i0 = i and
          L441: 1 <= i0 & i0 <= n & i0 is odd;
          L442: i0 in Seg n by L441;

          thus i in dom f by L441,L505,L205,L440;

          f . i0 = 1 by L442,L441,L220;
          hence f . i in {j} by TARSKI:def 1,L440,L300;
        end;

        assume that
        L450: i in dom f and
        L451: f . i in {j};

        L452: f . i = 1 by L451,TARSKI:def 1,L300;

        reconsider i0 = i as Nat by L450;

        L454: 1 <= i0 & i0 <= n by L450,L205,L505,FINSEQ_1:1;

        i0 is odd
        proof
          assume L460: not i0 is odd;

          0 / 2 < i0 / 2 by L454,XREAL_1:74;
          then 0 < i0 div 2 by L460,NAT_6:4;
          then 0 + 1 < i0 div 2 + 1 by XREAL_1:6;
          hence contradiction by L460,L450,L205,L505,L220,L452;
        end;
        hence i in OddSegn by L454;
      end;

      L515: Seq (a | OddSegn) = (a | OddSegn) * (Sgm OddSegn)
      by L510,RELAT_1:62;
      then reconsider aosgmo = (a | OddSegn) * (Sgm OddSegn) as FinSequence;

      L525: rng Sgm OddSegn = OddSegn by l420,FINSEQ_1:def 14;

      rng Sgm OddSegn c= dom (a | OddSegn) by FINSEQ_1:def 14,L512;
      then L520: len Seq (a | OddSegn)
      =  len (Sgm OddSegn) by L515,FINSEQ_2:29
      .= len (npd2 |-> (2 * epsilon)) by L430,CARD_1:def 7;

      reconsider co = card OddSegn as Nat by L370;

      L524: dom Sgm OddSegn
      =  Seg co by l420,FINSEQ_3:40
      .= Seg npd2 by L320,L370,L380,WELLORD2:def 4,L395,CARD_1:5;

      L526: for k being Nat st k in dom (Sgm OddSegn) holds
      (Sgm OddSegn) . k = 2 * k - 1
      proof
        reconsider npd2 as Element of NAT by ORDINAL1:def 12;

        defpred ODDSEQ[Nat] means (Sgm OddSegn) . $1 = 2 * $1 - 1;

        now assume not (Sgm OddSegn) . 1 = 1;
          then per cases by XXREAL_0:1;
          suppose B210: (Sgm OddSegn) . 1 < 1;
            1 in Seg npd2 by L189,L060;
            then (Sgm OddSegn) . 1 in rng (Sgm OddSegn) by L524,FUNCT_1:3;
            then consider i being Nat such that
            B211: (Sgm OddSegn) . 1 = i and
            B212: 1 <= i and i <= n and i is odd by L525;

            thus contradiction by B211,B212,B210;
          end;
          suppose B218: (Sgm OddSegn) . 1 > 1;
            1 = (2 * 0) + 1;
            then 1 in OddSegn by L020;
            then consider l being object such that
            B220: l in dom (Sgm OddSegn) and
            B230: 1 = (Sgm OddSegn) . l by L525,FUNCT_1:def 3;

            reconsider l as Nat by B220;

            B237: 1 <= l & l <= len (Sgm OddSegn) by L430,L524,B220,FINSEQ_1:1;
            then 1 < l by XXREAL_0:1,B230,B218;
            hence contradiction by B237,B230,B218,l420,FINSEQ_1:def 14;
          end;
        end;
        then B300: ODDSEQ[1];

        B400: for k being Element of NAT st 1 <= k & k < npd2 & ODDSEQ[k]
        holds ODDSEQ[k + 1]
        proof
          let k be Element of NAT;

          assume that
          B410: 1 <= k & k < npd2 and
          B412: ODDSEQ[k];

          now assume not (Sgm OddSegn) . (k + 1) = 2 * (k + 1) - 1;
            then per cases by XXREAL_0:1;
            suppose B500: (Sgm OddSegn) . (k + 1) < 2 * (k + 1) - 1;
              (Sgm OddSegn) . (k + 1) <= 2 * (k + 1) - 1 - 1 by B500,INT_1:52;
              then B510: (Sgm OddSegn) . (k + 1) + 1 <= 2 * k + 1 by XREAL_1:6;

              B520: (Sgm OddSegn) . (k + 1) + 1 <> 2 * k + 1
              proof
                assume B521: not (Sgm OddSegn) . (k + 1) + 1 <> 2 * k + 1;

                B523: 1 + 0 <= k + 1 by XREAL_1:7;

                B524: k + 1 <= npd2 by B410,INT_1:7;

                k + 1 in Seg npd2 by B523,B524;
                then 2 * k in rng (Sgm OddSegn) by L524,B521,FUNCT_1:3;
                then consider i being Nat such that
                B525: 2 * k = i and
                1 <= i & i <= n and
                B526: i is odd by L525;

                thus contradiction by B525,B526;
              end;

              1 <= k & k < k + 1 & k + 1 <= len (Sgm OddSegn) &
              (Sgm OddSegn) . k >= (Sgm OddSegn) . (k + 1)
              by B410,XREAL_1:29,XREAL_1:19,L430,B510,B520,NAT_1:8,B412;
              hence contradiction by l420,FINSEQ_1:def 14;
            end;
            suppose B700: (Sgm OddSegn) . (k + 1) > 2 * (k + 1) - 1;
              0 <= 2 * k + 2 * 1 - 1;
              then reconsider i0 = 2 * (k + 1) - 1 as Nat;

              B710: 0 + 1 <= 2 * k + 1 by XREAL_1:6;

              k <= npd2 - 1 by B410,INT_1:52;
              then (k + 1) * 2 <= (n + 1) / 2 * 2
              by L060,XREAL_1:19,XREAL_1:64;
              then B717: i0 <= n by XREAL_1:20;

              2 * (k + 1) - 1 in OddSegn by B710,B717;
              then consider l being object such that
              B720: l in dom (Sgm OddSegn) and
              B730: 2 * (k + 1) - 1 = (Sgm OddSegn) . l by L525,FUNCT_1:def 3;

              reconsider l as Nat by B720;

              B737: 1 <= l & l <= len (Sgm OddSegn)
              by L430,L524,B720,FINSEQ_1:1;

              B749: now assume B740: not l <= k + 1;
                1 + 0 <= k + 1 by XREAL_1:7;
                hence contradiction
                  by B740,B737,B700,B730,l420,FINSEQ_1:def 14;
              end;

              B769: now assume B760: not l >= k;
                2 * (k + 1) > 2 * k by XREAL_1:29,XREAL_1:68;
                then 1 <= l & l < k & k <= len (Sgm OddSegn) &
                (Sgm OddSegn) . l > (Sgm OddSegn) . k
                by XREAL_1:9,B730,B412,L430,L524,B720,FINSEQ_1:1,B760,B410;
                hence contradiction by l420,FINSEQ_1:def 14;
              end;

              now assume not l <> k; then
                (Sgm OddSegn) . k = 2 * (k + 1) - 1 by B730;
                hence contradiction by B412;
              end;

              hence contradiction by B749,B769,B730,B700,NAT_1:9;
            end;
          end;
          hence ODDSEQ[k + 1];
        end;

        B900: for k being Element of NAT st 1 <= k & k <= npd2 holds ODDSEQ[k]
        from INT_1:sch 7(B300,B400);
        for k being Nat st k in dom Sgm OddSegn holds ODDSEQ[k]
        proof
          let k be Nat;

          assume k in dom Sgm OddSegn;
          then B920: 1 <= k & k <= npd2 by L524,FINSEQ_1:1;

          k in NAT by ORDINAL1:def 12;
          hence ODDSEQ[k] by B920,B900;
        end;
        hence thesis;
      end;

      L699: for k being Nat st k in dom (npd2 |-> (2 * epsilon)) holds
      (npd2 |-> (2 * epsilon)) . k = (Seq (a | OddSegn)) . k
      proof
        let k be Nat;

        assume L530: k in dom (npd2 |-> (2 * epsilon));
        L535: len (npd2 |-> (2 * epsilon)) = npd2 by CARD_1:def 7;
        L536: dom (npd2 |-> (2 * epsilon)) = Seg (len (npd2 |-> (2 * epsilon)))
        by FINSEQ_1:def 3;

        L537: k in Seg npd2 by FINSEQ_1:def 3,L530,L535;
        then L630: (Sgm OddSegn) . k = 2 * k - 1 by L526,L524;
        then L655: 2 * k - 1 in Seg n by L537,L524,FUNCT_1:3,L525,L419;

        (a | OddSegn) . (2 * k - 1)
        =  a . (2 * k - 1) by L537,L524,FUNCT_1:3,L630,L525,FUNCT_1:49
        .= 2 * epsilon by L655,L050;
        then (a | OddSegn) . (Sgm (dom (a | OddSegn)) . k) = 2 * epsilon
        by L630,L505,L420,RELAT_1:62;
        then (Seq (a | OddSegn)) . k = 2 * epsilon
          by L522,L524,L537,FUNCT_1:13;
        hence thesis by L536,L530,L535,FINSEQ_2:57;
      end;

      L750: Seq (a, f " {j})
      =  Seq (a, OddSegn) by L499,FUNCT_1:def 7
      .= Seq (a | OddSegn)
      .= npd2 |-> (2 * epsilon) by L699,L520,FINSEQ_2:9;

      npd2 * (2 * epsilon)
      =  (n + 1) / 2 * (2 * epsilon) by L010,NF992
      .= ((n + 1) / 2 * 2) * epsilon
      .= 1 by L040,XCMPLX_1:106;
      hence SumBin (a, f, {j}) <= 1 by L750,RVSUM_1:80;
    end;
    suppose L800: 2 <= j & j <= npd2;
      set tjm2 = 2 * j - 2;

      2 - 1 <= j - 1 by L800,XREAL_1:9;
      then L808: 1 * 2 <= (j - 1) * 2 by XREAL_1:64;
      then L809: 2 - 1 <= (j - 1) * 2 - 0 by XREAL_1:13;

      tjm2 in NAT by L808,INT_1:3;
      then reconsider tjm2 as Nat;

      j * 2 <= ((n + 1) / 2) * 2 by L800,L060,XREAL_1:64;
      then j * 2 - 2 <= n + 1 - 1 by XREAL_1:13;
      then L820: tjm2 in Seg n by L809;

      L829: tjm2 = 2 * (j - 1);
      then L860: a . tjm2 = 1 - epsilon by L820,L050;

      L929: for i being object holds
      i in {tjm2} iff ( i in dom f & f . i in {j} )
      proof
        let i be object;

        hereby
          assume L869: i in {tjm2};
          then L870: i = tjm2 by TARSKI:def 1;

          reconsider i0 = i as Nat by L869;

          thus i in dom f by L869,TARSKI:def 1,L820,L253;

          f . i0 = i0 div 2 + 1 by L820,L220,L870,L829
          .= ((j - 1) * 2) / 2 + 1 by L870,NAT_6:4
          .= j;
          hence f . i in {j} by TARSKI:def 1;
        end;

        assume that
        L900: i in dom f and
        L901: f . i in {j};
        L902: f . i = j by L901,TARSKI:def 1;

        reconsider i0 = i as Nat by L900;

        L910: i0 is even
        proof
          assume i0 is odd;
          then f . i0 = 1 by L900,L253,L220;
          hence contradiction by L902,L800;
        end;
        then f . i0 = i0 div 2 + 1 by L900,L253,L220;
        then i0 / 2 = j - 1 by L902,L910,NAT_6:4;
        hence i in {tjm2} by TARSKI:def 1;
      end;

      L939: a | {tjm2} = {[tjm2, a . tjm2]} by L820,L253,L205,GRFUNC_1:28;

      Seq (a, f " {j})
      =  Seq (a, {tjm2}) by L929,FUNCT_1:def 7
      .= Seq (a | {tjm2})
      .= <* 1 - epsilon *> by L939,L860,FINSEQ_3:157;
      then SumBin (a, f, {j}) = 1 - epsilon by RVSUM_1:73;
      hence SumBin (a, f, {j}) <= 1 by XREAL_1:139,L040,XREAL_1:44;
    end;
  end;
