reserve a,b,c for set;

theorem Th18:
  for D being non empty set, r being FinSequence of D,i being
  Element of NAT st i<=len r holds Rev(r/^i)=(Rev r)|(len r-'i)
proof
  let D be non empty set,r be FinSequence of D,i be Element of NAT;
  set s=Rev r;
  len r-'i<=len r by NAT_D:50;
  then len r-'i<=len s by FINSEQ_5:def 3;
  then
A1: len s-'i <= len s by FINSEQ_5:def 3;
A2: len (s|((len r)-'i)) = len (s|((len s)-'i)) by FINSEQ_5:def 3
    .= len s -'i by A1,FINSEQ_1:59;
  assume
A3: i<=len r;
  then len r -i>=0 by XREAL_1:48;
  then
A4: len r-i=len r -'i by XREAL_0:def 2;
A5: for k being Nat st 1<=k & k<=len Rev(r/^i) holds (Rev(r/^i)).k= (s|((len
  r)-'i)).k
  proof
    let k be Nat;
    assume that
A6: 1<=k and
A7: k<=len Rev(r/^i);
    k in dom Rev(r/^i) by A6,A7,FINSEQ_3:25;
    then
A8: (Rev(r/^i)).k = (r/^i).(len (r/^i) -k+1) by FINSEQ_5:def 3
      .=(r/^i).(len r -i-k+1) by A3,RFINSEQ:def 1;
    len r+0<=len r +i by XREAL_1:7;
    then len r-i<=len r+i-i by XREAL_1:9;
    then len (r/^i)<=len r by A3,RFINSEQ:def 1;
    then len (Rev(r/^i))<=len r by FINSEQ_5:def 3;
    then
A9: k<=len r by A7,XXREAL_0:2;
    then
A10: len r-k>=0 by XREAL_1:48;
    then
A11: len r-k=len r-'k by XREAL_0:def 2;
    k-1>=0 by A6,XREAL_1:48;
    then len r+0<=len r+(k-1) by XREAL_1:7;
    then len r-(k-1)<=len r+(k-1)-(k-1) by XREAL_1:9;
    then len r-k+1<=len r;
    then
A12: len r-'k+1<=len r by A10,XREAL_0:def 2;
    len r-k+1>=0+1 by A11,NAT_1:13;
    then
A13: len r-k+1 in dom r by A11,A12,FINSEQ_3:25;
    k in dom r by A6,A9,FINSEQ_3:25;
    then
A15: k in dom Rev r by FINSEQ_5:57;
    k<=len (r/^i) by A7,FINSEQ_5:def 3;
    then
A16: k<=len r -i by A3,RFINSEQ:def 1;
    then
A17: len r-'i-k>=0 by A4,XREAL_1:48;
    then
A18: len r -'i-'k=len r-'i-k by XREAL_0:def 2;
    k<=len r-'i by A16,XREAL_0:def 2;
    then
A19: (s|((len r)-'i)).k=(Rev r).k by FINSEQ_3:112
      .=r.(len r-k+1) by A15,FINSEQ_5:def 3;
A20: i+(len r -'i-'k+1)=i+(len r-i-k+1) by A4,A17,XREAL_0:def 2
      .=len r-i+i-k+1;
    k-1>=0 by A6,XREAL_1:48;
    then len r-i+0<=len r-i+(k-1) by XREAL_1:7;
    then len r-i-(k-1)<=len r-i+(k-1)-(k-1) by XREAL_1:9;
    then len r -'i-'k +1>=0+1 & len r-'i-'k+1<=len (r/^i) by A3,A4,A18,
RFINSEQ:def 1,XREAL_1:7;
    then len r -i-k+1 in Seg len (r/^i) by A4,A18,FINSEQ_1:1;
    then
A21: len r -i-k+1 in dom (r/^i) by FINSEQ_1:def 3;
    then (r/^i).(len r -i-k+1) = (r/^i)/.(len r -'i-'k+1) by A4,A18,
PARTFUN1:def 6
      .=(r/^0) /. (i+(len r -'i-'k+1)) by A4,A18,A21,FINSEQ_5:27
      .=r.(len r-k+1) by A20,A13,PARTFUN1:def 6;
    hence thesis by A8,A19;
  end;
  len Rev(r/^i)= len (r/^i) by FINSEQ_5:def 3
    .=len r-'i by RFINSEQ:29
    .=len (s|((len r)-'i)) by A2,FINSEQ_5:def 3;
  hence thesis by A5,FINSEQ_1:14;
end;
