reserve D for non empty set;
reserve s for FinSequence of D;
reserve m,n for Element of NAT;

theorem
  1 <= len s implies Op-Shift(s,len s)= s
  proof
    assume
    A1:1 <= len s;
    set m = len s;
    A2:len Op-Shift(s,m) = m &
    for i be Nat st i in Seg m
    holds Op-Shift(s,m).i = s.( ( (i-1+ m) mod m ) + 1 ) by Def3,A1;
    now let i be Nat;
      assume i in dom (Op-Shift(s,m));
      then
      A3: i in Seg m by A2,FINSEQ_1:def 3;
      then
      A4: 1<=i & i <=len s by FINSEQ_1:1;
      then
      A5: 1-1 <= i-1 by XREAL_1:9;
      i < len s + 1 by A4,NAT_1:13;
      then A6:
      i -1 < len s + 1 -1 by XREAL_1:14;
      ( (i-1+ m) mod m ) + 1
      = (((i-1) mod m ) + (m mod m) ) mod m + 1 by NAT_D:66
      .= (((i-1) mod m) + 0) mod m + 1 by A1,INT_1:62
      .= (i-1) mod m + 1 by NAT_D:65
      .= i-1 + 1 by A6,A5,NAT_D:63
      .= i;
      hence Op-Shift(s,m).i = s.i by A3,Def3,A1;
    end;
    hence thesis by A2,FINSEQ_2:9;
  end;
