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;
    -m = m*(-1);
    then A3:
    0 < m & m divides -m by A1,INT_1:def 3;
    now let i be Nat;
      assume i in dom (Op-Shift(s,-m));
      then
      A4: i in Seg m by A2,FINSEQ_1:def 3;
      then
      A5: 1<=i & i <=len s by FINSEQ_1:1;
      then
      A6: 1-1 <= i-1 by XREAL_1:9;
      i < len s + 1 by A5,NAT_1:13;
      then A7:
      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 A3,INT_1:62
      .= (i-1) mod m + 1 by NAT_D:65
      .= i-1 + 1 by A7,A6,NAT_D:63
      .= i;
      hence Op-Shift(s,-m).i = s.i
      by Def3,A1,A4;
    end;
    hence thesis by A2,FINSEQ_2:9;
  end;
