reserve
  a for natural Number,
  k,l,m,n,k1,b,c,i for Nat,
  x,y,z,y1,y2 for object,
  X,Y for set,
  f,g for Function;
reserve p,q,r,s,t for FinSequence;
reserve D for set;

theorem
  for p,q,r,s being FinSequence st p^q = r^s & len p <= len r
  ex t being FinSequence st p^t = r
proof
  defpred S[FinSequence] means
  for p,q,s st p^q=$1^s & len p <= len $1 holds ex t st p^t=$1;
A1: S[{}]
  proof
    let p,q,s;
    assume that
    p^q={}^s and
A2: len p <= len {};
    take {};
    thus p^{} = p by Th34
      .= {} by A2;
  end;
A3: for r,x st S[r] holds S[r^<*x*>]
  proof
    let r,x;
    assume
A4: 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
A5: p^q=(r^<*x*>)^s and
A6: len p <= len (r^<*x*>);
A7: now
      assume len p = len(r^<*x*>);
      then
A8:   dom p = Seg len(r^<*x*>) by Def3
        .= dom(r^<*x*>) by Def3;
A9:   for k st k in dom p holds p.k=(r^<*x*>).k
      proof
        let k;
        assume
A10:    k in dom p;
        hence p.k = (r^<*x*>^s).k by A5,Def7
          .=(r^<*x*>).k by A8,A10,Def7;
      end;
      p^{} = p by Th34
        .=r^<*x*> by A8,A9;
      hence thesis;
    end;
    now
      assume len p <> len(r^<*x*>);
      then len p <> len r + len <*x*> by Th22;
      then
A11:  len p <> len r + 1 by Th39;
      len p <= len r + len <*x*> by A6,Th22;
      then
A12:  len p <= len r + 1 by Th39;
      p^q=r^(<*x*>^s) by A5,Th32;
      then consider t being FinSequence such that
A13:  p^t = r by A4,A11,A12,NAT_1:8;
      p^(t^<*x*>) = r^<*x*> by A13,Th32;
      hence thesis;
    end;
    hence thesis by A7;
  end;
  for r holds S[r] from IndSeq(A1,A3);
  hence thesis;
end;
