
theorem NF305:
  for a being non empty FinSequence of REAL,
  f being FinSequence of NAT st
  dom f = dom a &
  (for j being Nat st j in rng f holds SumBin (a, f, {j}) <= 1) holds
  ex fr being FinSequence of NAT st
  dom fr = dom a &
  (for j being Nat st j in rng fr holds SumBin (a, fr, {j}) <= 1) &
  (ex k being Nat st rng fr = Seg k) &
  card rng f = card rng fr
  proof
    let a be non empty FinSequence of REAL, f be FinSequence of NAT;

    assume that
    DM00: dom f = dom a and
    FS00: for j being Nat st j in rng f holds SumBin (a, f, {j}) <= 1;

    reconsider gix = Sgm0 (rng f) as XFinSequence of NAT;
    reconsider gi = XFS2FS gix as one-to-one Function;

    L040: rng gi = rng gix by AFINSQ_1:97
    .= rng f by AFINSQ_2:def 4;

    reconsider g = gi " as one-to-one Function;

    L400: dom g = rng f by FUNCT_1:33,L040; then

    reconsider fr0 = g * f as FinSequence by FINSEQ_1:16;

    L500: rng fr0 = rng g by L400,RELAT_1:28;

    L520: rng fr0 = rng g by L400,RELAT_1:28
    .= dom gi by FUNCT_1:33;

    consider k0 being Nat such that
    L530: dom gi = Seg k0 by FINSEQ_1:def 2;

    reconsider fr0 as FinSequence of NAT by L520,L530,FINSEQ_1:def 4;

    take fr0;

    thus dom fr0 = dom a by L400,RELAT_1:27,DM00;

    thus for j being Nat st j in rng fr0 holds SumBin (a, fr0, {j}) <= 1
    proof
      let j0 be Nat;

      assume L710: j0 in rng fr0;

      set j1 = (g ") . j0;

      j0 in dom (g ") by L710,L500,FUNCT_1:33;
      then L749: j1 in rng (g ") by FUNCT_1:3;
      then L750: j1 in dom g by FUNCT_1:33;

      L760: j1 in rng f by L749,FUNCT_1:43,L040;

      L761: j0 = g . j1 by L710,L500,FUNCT_1:32;

      for x being object holds x in {j1} iff ( x in dom g & g . x in {j0} )
      proof
        let x be object;

        hereby
          assume L762: x in {j1};
          hence x in dom g by TARSKI:def 1,L750;

          g . x = j0 by L762,TARSKI:def 1,L761;
          hence g . x in {j0} by TARSKI:def 1;
        end;

        assume that
        L764: x in dom g and
        L765: g . x in {j0};

        g . x = j0 by L765,TARSKI:def 1;
        then x = j1 by L764,FUNCT_1:32;
        hence x in {j1} by TARSKI:def 1;
      end;
      then g " {j0} = {j1} by FUNCT_1:def 7;
      then SumBin (a, fr0, {j0}) = SumBin (a, f, {j1}) by RELAT_1:146;
      hence SumBin (a, fr0, {j0}) <= 1 by L760,FS00;
    end;

    thus ex k being Nat st rng fr0 = Seg k by L520,L530;

    card dom gi = card (rng (gi ")) by FUNCT_1:33
    .= card rng fr0 by L400,RELAT_1:28;
    hence card rng f = card rng fr0 by CARD_1:70,L040;
  end;
