reserve x,y,z, X,Y,Z for set,
  n for Element of NAT;
reserve A for set,
  D for non empty set,
  a,b,c,l,r for Element of D,
  o,o9 for BinOp of D,
  f,g,h for Function of A,D;
reserve G for non empty multMagma;
reserve A for non empty set,
  a for Element of A,
  p for FinSequence of A,
  m1,m2 for Multiset of A;
reserve p,q for FinSequence of A;
reserve fm for Element of finite-MultiSet_over A;

theorem
  |.p.| is Element of finite-MultiSet_over A
proof
  defpred P[FinSequence of A] means |.$1.| is Element of finite-MultiSet_over
  A;
  defpred Q[Nat] means for p st len p = $1 holds P[p];
A1: len p = len p;
A2: for n being Nat st Q[n] holds Q[n+1]
  proof
    set M = finite-MultiSet_over A;
    let n be Nat such that
A3: for p st len p = n holds P[p];
    let p;
    assume
A4: len p = n+1;
    then p <> {};
    then consider r being FinSequence, x being object such that
A5: p = r^<*x*> by FINSEQ_1:46;
    rng <*x*> = {x} by FINSEQ_1:39;
    then {x} c= rng p by A5,FINSEQ_1:30;
    then
A6: {x} c= A by XBOOLE_1:1;
    reconsider r as FinSequence of A by A5,FINSEQ_1:36;
A7: len <*x*> = 1 by FINSEQ_1:40;
    reconsider x as Element of A by A6,ZFMISC_1:31;
    n+1 = len r+1 by A4,A5,A7,FINSEQ_1:22;
    then reconsider r9 = |.r.|, a = chi x as Element of M by A3,Th33;
    M is SubStr of MultiSet_over A by MONOID_0:21;
    then r9[*]a = |.r.|[*]chi x by MONOID_0:25
      .= |.p.| by A5,Th39;
    hence thesis;
  end;
A8: Q[0]
  proof
    let p;
    assume len p = 0;
    then p = <*> A;
    then |.p.| = A --> 0 by Th37
      .= un(MultiSet_over A) by Th26
      .= un(finite-MultiSet_over A) by MONOID_0:def 24;
    hence thesis;
  end;
  for n being Nat holds Q[n] from NAT_1:sch 2(A8,A2);
  hence thesis by A1;
end;
