reserve x,y,z for set;
reserve f,f1,f2,f3 for FinSequence,
  p,p1,p2,p3 for set,
  i,k for Nat;
reserve D for non empty set,
  p,p1,p2,p3 for Element of D,
  f,f1,f2 for FinSequence of D;
reserve D for non empty set;
reserve p, q for FinSequence,
  X, Y, x, y for set,
  D for non empty set,
  i, j, k, l, m, n, r for Nat;
reserve a, a1, a2 for TwoValued Alternating FinSequence;
reserve fs, fs1, fs2 for FinSequence of X,
  fss, fss2 for Subset of fs;
reserve F, F1 for FinSequence of INT,
  k, m, n, ma for Nat;
reserve i,j,k,m,n for Nat,
  D for non empty set,
  p for Element of D,
  f for FinSequence of D;
reserve D for non empty set,
  p for Element of D,
  f for FinSequence of D;

theorem Th14:
  len Rotate(f,p) = len f
proof
  per cases;
  suppose
    not p in rng f;
    hence thesis by Def2;
  end;
  suppose
A1: p in rng f;
    then f-:p <> {} by FINSEQ_5:47;
    then
A2: 1 <= len(f-:p) by NAT_1:14;
    thus len Rotate(f,p) = len((f:-p)^((f-:p)/^1)) by A1,Def2
      .= len(f:-p) + len((f-:p)/^1) by FINSEQ_1:22
      .= len(f:-p) + (len(f-:p)-1) by A2,RFINSEQ:def 1
      .= len(f:-p) + len(f-:p)-1
      .= len f - p..f + 1 + len(f-:p)-1 by A1,FINSEQ_5:50
      .= len f - p..f + len(f-:p)
      .= len f - p..f + p..f by A1,FINSEQ_5:42
      .= len f;
  end;
end;
