reserve x,A for set, i,j,k,m,n, l, l1, l2 for Nat;
reserve D for non empty set, z for Nat;
reserve S for COM-Struct;
reserve ins for Element of the InstructionsF of S;
reserve k, m for Nat,
  x, x1, x2, x3, y, y1, y2, y3, X,Y,Z for set;
reserve i, j, k for Nat,
  n for Nat,
  l,il for Nat;
reserve
  i,j,k for Instruction of S,
  I,J,K for Program of S;
reserve k1,k2 for Integer;
reserve l,l1,loc for Nat;
reserve i1,i2 for Instruction of S;
reserve
  i,j,k for Instruction of S,
  I,J,K for Program of S;
reserve m for Nat;
reserve I,J for Program of S;

theorem
 for I being preProgram of S holds card Reloc(I, m) = card I
proof let I be preProgram of S;
  deffunc U(Nat) = $1;
  set B = { l where l is Element of NAT: U(l) in dom I};
A1: for x being set st x in dom I ex d being Element of NAT st x = U(d)
  proof
    let x be set;
    assume
A2: x in dom I;
    dom I c= NAT by RELAT_1:def 18;
    then reconsider l = x as Element of NAT by A2;
    reconsider d = l as Element of NAT;
    l = U(d);
    hence thesis;
  end;
A3: for d1,d2 being Element of NAT st U(d1) = U(d2) holds d1 = d2;
A4: dom I,B are_equipotent from FUNCT_7:sch 3(A1,A3);
  defpred Z[Nat] means $1 in dom I;
  deffunc V(Nat) = $1+m;
  defpred X[Nat] means U($1) in dom I;
  set D = { l where l is Element of NAT: X[l]};
  set C = { V(l) where l is Element of NAT: l in B };
  defpred X[set] means not contradiction;
  D is Subset of NAT from DOMAIN_1:sch 7;
  then
A5: B c= NAT;
A6: for d1,d2 be Element of NAT st V(d1) = V(d2) holds d1 = d2;
A7: B,C are_equipotent from FUNCT_7:sch 4(A5,A6);
  set C = { V(l) where l is Element of NAT:
          l in { n where n is Element of NAT: Z[n]} & X[l] },
      A = { V(l) where l is Element of NAT: Z[l] & X[l] };
A8: C = { l+m where l is Element of NAT: l in B }
  proof
    thus C c= { l+m where l is Element of NAT: l in B }
    proof
      let e be object;
      assume e in C;
      then ex l being Element of NAT st e = V(l) & l in B;
      hence thesis;
    end;
    let e be object;
    assume e in { l+m where l is Element of NAT: l in B };
    then ex l being Element of NAT st e = l+m & l in B;
    hence thesis;
  end;
  A = { l+m where l is Nat: l in dom I }
  proof
    thus A c= { l+m where l is Nat: l in dom I }
    proof
      let e be object;
      assume e in A;
      then ex l being Element of NAT st e = V(l) & l in dom I;
      hence thesis;
    end;
    let e be object;
    assume e in { l+m where l is Nat: l in dom I };
    then consider l being Nat such that
A9:   e = l+m & l in dom I;
     reconsider l as Element of NAT by ORDINAL1:def 12;
     l in dom I by A9;
    hence thesis by A9;
  end;
  then
A10: dom Shift(I,m) = A by VALUED_1:def 12;
  C = A from FRAENKEL:sch 14;
  then
A11: dom Shift(I,m),dom I are_equipotent by A4,A7,A8,A10,WELLORD2:15;
  thus card Reloc(I,m) = card dom Reloc(I,m) by CARD_1:62
    .= card dom Shift(I,m) by Th20
    .= card dom I by A11,CARD_1:5
    .= card I by CARD_1:62;
end;
