reserve k,n for Nat,
  x,y,z,y1,y2 for object,X,Y for set,
  f,g for Function;
reserve p,q,r,s,t for XFinSequence;
reserve D for set;

theorem
  for p,q,r,s being XFinSequence st p^q = r^s & len p <= len r ex t
  being XFinSequence st p^t = r
proof
  defpred P[XFinSequence] means for p,q,s st p^q=$1^s & len p <= len $1 holds
  ex t being XFinSequence st p^t=$1;
A1: for r,x st P[r] holds P[r^<%x%>]
  proof
    let r,x;
    assume
A2: for p,q,s st p^q=r^s & len p <= len r ex t st p^t=r;
    let p,q,s;
    assume that
A3: p^q=(r^<%x%>)^s and
A4: len p <= len (r^<%x%>);
A5: now
      assume len p <> len(r^<%x%>);
      then len p <> len r + len <%x%> by Def3;
      then
A6:   len p <> len r + 1 by Th30;
      len p <= len r + len <%x%> by A4,Def3;
      then
A7:   len p <= len r + 1 by Th30;
      p^q=r^(<%x%>^s) by A3,Th25;
      then consider t being XFinSequence such that
A8:   p^t = r by A2,A6,A7,NAT_1:8;
      p^(t^<%x%>) = r^<%x%> by A8,Th25;
      hence thesis;
    end;
    now
      assume
A9:   len p = len(r^<%x%>);
A10:  for k st k in dom p holds p.k=(r^<%x%>).k
      proof
        let k;
        assume
A11:    k in dom p;
        hence p.k = (r^<%x%>^s).k by A3,Def3
          .=(r^<%x%>).k by A9,A11,Def3;
      end;
      p^{} =r^<%x%> by A9,A10;
      hence thesis;
    end;
    hence thesis by A5;
  end;
A12: P[{}]
  proof
    let p,q,s;
    assume that
    p^q={}^s and
A13: len p <= len {};
    take {};
    thus p^{} = {} by A13;
  end;
  for r holds P[r] from IndXSeq(A12,A1);
  hence thesis;
end;
