let A be non empty set ; for p being FinSequence of A holds |.p.| is Element of (finite-MultiSet_over A)
let p be FinSequence of A; |.p.| is Element of (finite-MultiSet_over A)
defpred S1[ FinSequence of A] means |.$1.| is Element of (finite-MultiSet_over A);
defpred S2[ Nat] means for p being FinSequence of A st len p = $1 holds
S1[p];
A1:
len p = len p
;
A2:
for n being Nat st S2[n] holds
S2[n + 1]
proof
set M =
finite-MultiSet_over A;
let n be
Nat;
( S2[n] implies S2[n + 1] )
assume A3:
for
p being
FinSequence of
A st
len p = n holds
S1[
p]
;
S2[n + 1]
let p be
FinSequence of
A;
( len p = n + 1 implies S1[p] )
assume A4:
len p = n + 1
;
S1[p]
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 =
r as
FinSequence of
A by A5, FINSEQ_1:36;
A7:
len <*x*> = 1
by FINSEQ_1:40;
reconsider x =
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
(finite-MultiSet_over A) by A3, Th33;
finite-MultiSet_over A 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
S1[
p]
;
verum
end;
A8:
S2[ 0 ]
for n being Nat holds S2[n]
from NAT_1:sch 2(A8, A2);
hence
|.p.| is Element of (finite-MultiSet_over A)
by A1; verum