reserve a,x,y for object, A,B for set,
  l,m,n for Nat;
reserve X,Y for set, x for object,
  p,q for Function-yielding FinSequence,
  f,g,h for Function;
reserve m,n,k for Nat, R for Relation;
reserve i,j for Nat;
reserve F for Function,
  e,x,y,z for object;
reserve a,b,c for set;

theorem
  for I being NAT-defined Function holds card Shift(I,m) = card I
proof
  defpred NC[set] means not contradiction;
  deffunc U(Nat) = $1;
  let I be NAT-defined Function;
A1: for x being set st x in dom I ex d being Element of NAT st x = U(d);
  defpred X[Nat] means $1 in dom I;
  deffunc V(Nat) = $1+m;
  set B = { l where l is Element of NAT: U(l) in dom I },
      C = { V(l) where l is Nat: l in { n: X[n] } & NC[l] },
      D = { V(l) where l is Element of NAT: l in B },
  E = { l+m where l is Nat: l in dom I };
A2: for d1,d2 being Element of NAT st U(d1) = U(d2) holds d1=d2;
A3: dom I,B are_equipotent from CardMono(A1,A2);
A4: C c= E
  proof
    let e be object;
    assume e in C;
    then consider l being Nat such that
A5: e =V(l) and
A6: l in { n: X[n] } & NC[l];
    ex n st n=l & X[n] by A6;
    hence thesis by A5;
  end;
  set B = { l where l is Element of NAT: X[l] };
  B is Subset of NAT from DOMAIN_1:sch 7;
  then
A7: B c= NAT;
  set B = { l where l is Element of NAT: l in dom I };
A8: for d1,d2 be Element of NAT st V(d1) = V(d2) holds d1 = d2;
A9: B,D are_equipotent from CardMono9(A7,A8);
A10: E c= D
  proof
    let e be object;
    assume e in E;
    then consider l being Nat such that
A11: e = l+m and
A12: l in dom I;
    reconsider l as Element of NAT by ORDINAL1:def 12;
    l in B by A12;
    hence thesis by A11;
  end;
A13: dom Shift(I,m) = E by VALUED_1:def 12;
A14: D c= C
  proof
    let e be object;
    assume e in D;
    then consider l1 being Element of NAT such that
A15:   e = V(l1) and
A16:   l1 in B;
     ex l being Element of NAT st l1 = l & U(l) in dom I by A16;
     then l1 in dom I;
     then l1 in { n: X[n] };
    hence thesis by A15;
  end;
  then E c= C by A10;
  then
A17: C = E by A4;
  then C = D by A10,A14;
  then
A18: dom Shift(I,m),dom I are_equipotent by A3,A17,A9,A13,WELLORD2:15;
  thus card Shift(I,m) = card dom Shift(I,m) by CARD_1:62
    .= card dom I by A18,CARD_1:5
    .= card I by CARD_1:62;
end;
