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;

theorem
  for f being FinSequence of D,k1,k2 being Nat st 1<=k1
  & k1<=len f & 1<=k2 & k2<=len f holds
  Rev mid(f,k1,k2)=mid(Rev f,len f-'k2+1,len f-'k1+1)
proof
  let f be FinSequence of D,k1,k2 be Nat;
  assume that
A1: 1<=k1 and
A2: k1<=len f and
A3: 1<=k2 and
A4: k2<=len f;
  per cases;
  suppose
A5: k1<=k2;
A6: len f-'(k1-'1)=len f-(k1-'1) by A2,NAT_D:50,XREAL_1:233
      .=len f-(k1-1) by A1,XREAL_1:233
      .=len f-k1+1
      .=len f-'k1+1 by A2,XREAL_1:233;
A7: len f-'k1=len f-k1 by A2,XREAL_1:233;
A8: len f-'k2=len f-k2 by A4,XREAL_1:233;
    k2-k1<=len f-k1 by A4,XREAL_1:9;
    then k2-'k1<=len f-k1 by A5,XREAL_1:233;
    then k2-'k1<=len f-'k1 by A2,XREAL_1:233;
    then k2-'k1+1<=len f-'k1+1 by XREAL_1:6;
    then
A9: (len f-'(k1-'1)-'(k2-'k1+1)) =(len f-'k1+1)-(k2-'k1+1) by A6,XREAL_1:233
      .=(len f-k1+1)-(k2-k1+1) by A5,A7,XREAL_1:233
      .=len f+1-1-k2
      .=len f-'k2 by A4,XREAL_1:233;
    then
A10: (len (f/^(k1-'1))-'(k2-'k1+1))+(k2-'k1+1) =len f-'k2+(k2-'k1+1) by
RFINSEQ:29
      .=len f-k2+(k2-k1+1) by A5,A8,XREAL_1:233
      .=len f-(k1-1)
      .=len f-(k1-'1) by A1,XREAL_1:233
      .=len f-'(k1-'1) by A2,NAT_D:50,XREAL_1:233
      .=len (f/^(k1-'1)) by RFINSEQ:29;
A11: len f-'k1<=len f-'k1+1 by NAT_1:11;
    len f-'k1>=len f-'k2 by A5,NAT_D:41;
    then
A12: len f-'(k1-'1)-'(len f-'k2) =len f-'k1+1-(len f-'k2) by A6,A11,XREAL_1:233
,XXREAL_0:2
      .=len f-k1+1-(len f-k2) by A4,A7,XREAL_1:233
      .=k2-k1+1
      .=k2-'k1+1 by A5,XREAL_1:233;
A13: (len f-'(k1-'1))+(k1-'1) =(len f-(k1-'1))+(k1-'1) by A2,NAT_D:50
,XREAL_1:233
      .=len f;
    len f-'k1>=len f-'k2 by A5,NAT_D:41;
    then len f-'k1+1>=len f-'k2+1 by XREAL_1:6;
    then
A14: (len f-'k1+1)-'(len f-'k2+1)+1 =(len f-'k1+1)-(len f-'k2+1)+1 by
XREAL_1:233
      .=(len f-k1+1)-(len f-k2+1)+1 by A4,A7,XREAL_1:233
      .=k2-k1+1
      .=k2-'k1+1 by A5,XREAL_1:233;
    len f-'k1>=len f-'k2 by A5,NAT_D:41;
    then len f-'k1+1>=len f-'k2+1 by XREAL_1:6;
    then mid(Rev f,len f-'k2+1,len f-'k1+1) =(((Rev f)/^((len f-'k2+1)-'1))|(
    k2-'k1+1)) by A14,Def3
      .=(Rev f/^(len f-'k2))|(len f-'(k1-'1)-'(len f-'k2)) by A12,NAT_D:34
      .=(Rev f|(len f-'(k1-'1)))/^(len f-'k2) by FINSEQ_5:80
      .=(Rev f|(len f-'(k1-'1)))/^(len (f/^(k1-'1))-'(k2-'k1+1)) by A9,
RFINSEQ:29
      .=(Rev (f/^(k1-'1)))/^(len (f/^(k1-'1))-'(k2-'k1+1)) by A13,Th84
      .=Rev (((f/^(k1-'1))|(k2-'k1+1))) by A10,Th85
      .=Rev mid(f,k1,k2) by A5,Def3;
    hence thesis;
  end;
  suppose
A15: k1>k2;
A16: len f-'(k2-'1)=len f-(k2-'1) by A4,NAT_D:50,XREAL_1:233
      .=len f-(k2-1) by A3,XREAL_1:233
      .=len f-k2+1
      .=len f-'k2+1 by A4,XREAL_1:233;
A17: len f-'k2=len f-k2 by A4,XREAL_1:233;
    len f-'k2>=len f-'k1 by A15,NAT_D:41;
    then len f-'k2+1>=len f-'k1+1 by XREAL_1:6;
    then
A18: (len f-'k2+1)-'(len f-'k1+1)+1 =(len f-'k2+1)-(len f-'k1+1)+1 by
XREAL_1:233
      .=(len f-k2+1)-(len f-k1+1)+1 by A2,A17,XREAL_1:233
      .=k1-k2+1
      .=k1-'k2+1 by A15,XREAL_1:233;
A19: len f-'k1=len f-k1 by A2,XREAL_1:233;
A20: len f-'k2<=len f-'k2+1 by NAT_1:11;
    len f-'k2>=len f-'k1 by A15,NAT_D:41;
    then
A21: len f-'(k2-'1)-'(len f-'k1) =len f-'k2+1-(len f-'k1) by A16,A20,
XREAL_1:233,XXREAL_0:2
      .=len f-k2+1-(len f-k1) by A2,A17,XREAL_1:233
      .=k1-k2+1
      .=k1-'k2+1 by A15,XREAL_1:233;
A22: (len f-'(k2-'1))+(k2-'1) =(len f-(k2-'1))+(k2-'1) by A4,NAT_D:50
,XREAL_1:233
      .=len f;
    k1-k2<=len f-k2 by A2,XREAL_1:9;
    then k1-'k2<=len f-k2 by A15,XREAL_1:233;
    then k1-'k2<=len f-'k2 by A4,XREAL_1:233;
    then k1-'k2+1<=len f-'k2+1 by XREAL_1:6;
    then
A23: (len f-'(k2-'1)-'(k1-'k2+1)) =(len f-'k2+1)-(k1-'k2+1) by A16,XREAL_1:233
      .=(len f-k2+1)-(k1-k2+1) by A15,A17,XREAL_1:233
      .=len f+1-1-k1
      .=len f-'k1 by A2,XREAL_1:233;
    then
A24: (len (f/^(k2-'1))-'(k1-'k2+1))+(k1-'k2+1) =len f-'k1+(k1-'k2+1) by
RFINSEQ:29
      .=len f-k1+(k1-k2+1) by A15,A19,XREAL_1:233
      .=len f-(k2-1)
      .=len f-(k2-'1) by A3,XREAL_1:233
      .=len f-'(k2-'1) by A4,NAT_D:50,XREAL_1:233
      .=len (f/^(k2-'1)) by RFINSEQ:29;
    len f-k2>len f-k1 by A15,XREAL_1:10;
    then len f-'k2+1>len f-'k1+1 by A17,A19,XREAL_1:6;
    then
    mid(Rev f,len f-'k2+1,len f-'k1+1) =Rev((((Rev f)/^((len f-'k1+1)-'1)
    )|(k1-'k2+1))) by A18,Def3
      .=Rev((Rev f/^(len f-'k1))|(len f-'(k2-'1)-'(len f-'k1))) by A21,NAT_D:34
      .=Rev((Rev f|(len f-'(k2-'1)))/^(len f-'k1)) by FINSEQ_5:80
      .=Rev((Rev f|(len f-'(k2-'1)))/^(len (f/^(k2-'1))-'(k1-'k2+1))) by A23,
RFINSEQ:29
      .=Rev((Rev (f/^(k2-'1)))/^(len (f/^(k2-'1))-'(k1-'k2+1))) by A22,Th84
      .=Rev(Rev (((f/^(k2-'1))|(k1-'k2+1)))) by A24,Th85
      .= Rev mid(f,k1,k2) by A15,Def3;
    hence thesis;
  end;
end;
