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,k being Nat st k<=len f
  holds mid(f,k,len f)=f/^(k-'1)
proof
  let f be FinSequence,k be Nat;
  assume
A1: k<=len f;
  then
A2: mid(f,k,len f)=(f/^(k-'1))|(len f-'k+1) by Def3;
  k-'1<=len f by A1,NAT_D:44;
  then
A3: len (f/^(k-'1))=len f-(k-'1) by RFINSEQ:def 1;
A4: len f-'k+1=len f-k+1 by A1,XREAL_1:233
    .=len f -(k-1);
  now
    per cases;
    case
A5:   k=0;
      0-1<0;
      then k-'1=0 by A5,XREAL_0:def 2;
      then
A6:   f/^(k-'1)=f;
      len f-'k+1=len f +1 by A5,NAT_D:40;
      then len f <= len f-'k+1 by NAT_1:11;
      then Seg len f c= Seg (len f -'k+1) by FINSEQ_1:5;
      then dom (f/^(k-'1)) c= Seg (len f -'k+1) by A6,FINSEQ_1:def 3;
      then (f/^(k-'1))|Seg (len f -'k+1)= f/^(k-'1) by RELAT_1:68;
      hence thesis by A2;
    end;
    case
      k<>0;
      then 0+1<=k by NAT_1:13;
      then len (f/^(k-'1))=len f-'k+1 by A3,A4,XREAL_1:233;
      hence mid(f,k,len f)=(f/^(k-'1))|Seg len (f/^(k-'1)) by A2
        .=(f/^(k-'1))|dom (f/^(k-'1)) by FINSEQ_1:def 3
        .=(f/^(k-'1));
    end;
  end;
  hence thesis;
end;
