reserve p,q,r for FinSequence,
  x,y for object;

theorem
  p <> {} implies ex x,q st p = <*x*>^q & len p = len q+1
proof
  defpred P[Nat] means for p st p <> {} & len p = $1 ex x,q st p =
  <*x*>^q & len p = len q+1;
  assume
A1: p <> {};
  now
    let i be Nat;
    assume
A2: for p st p <> {} & len p = i ex x,q st p = <*x*>^q & len p = len q +1;
    let p;
    assume that
A3: p <> {} and
A4: len p = i+1;
    consider q be FinSequence,y being object such that
A5: p = q^<*y*> by A3,FINSEQ_1:46;
A6: len p = len q+len <*y*> by A5,FINSEQ_1:22;
A7: len <*y*> = 1 by FINSEQ_1:39;
    per cases;
    suppose
A8:   q = {};
      then p = <*y*> by A5,FINSEQ_1:34
        .= <*y*>^{} by FINSEQ_1:34;
      hence ex x,q st p = <*x*>^q & len p = len q+1 by A7,A6,A8;
    end;
    suppose
      q <> {};
      then consider x,r such that
A9:   q = <*x*>^r and
A10:  len q = len r+1 by A2,A4,A7,A6;
A11:  len (r^<*y*>) = len r+1 by A7,FINSEQ_1:22;
      p = <*x*>^(r^<*y*>) by A5,A9,FINSEQ_1:32;
      hence ex x,q st p = <*x*>^q & len p = len q+1 by A7,A6,A10,A11;
    end;
  end;
  then
A12: for i be Nat st P[i] holds P[i+1];
A13: P[ 0 ];
  for i being Nat holds P[i] from NAT_1:sch 2(A13,A12);
  hence thesis by A1;
end;
