defpred S1[ set ] means for F being Bags I -valued FinSequence st len F = $1 holds
ex u being bag of I ex f being Function of NAT,(Bags I) st
( u = f . (len F) & f . 0 = EmptyBag I & ( for j being Nat
for v being bag of I st j < len F & v = F . (j + 1) holds
f . (j + 1) = (f . j) + v ) );
set V = Bags I;
A1: for n being Nat st S1[n] holds
S1[n + 1]
proof
let n be Nat; :: thesis: ( S1[n] implies S1[n + 1] )
assume A2: S1[n] ; :: thesis: S1[n + 1]
let F be Bags I -valued FinSequence; :: thesis: ( len F = n + 1 implies ex u being bag of I ex f being Function of NAT,(Bags I) st
( u = f . (len F) & f . 0 = EmptyBag I & ( for j being Nat
for v being bag of I st j < len F & v = F . (j + 1) holds
f . (j + 1) = (f . j) + v ) ) )

A3: rng F c= Bags I by RELAT_1:def 19;
then reconsider F1 = F as FinSequence of Bags I by FINSEQ_1:def 4;
reconsider G = F1 | (Seg n) as FinSequence of Bags I by FINSEQ_1:18;
assume A4: len F = n + 1 ; :: thesis: ex u being bag of I ex f being Function of NAT,(Bags I) st
( u = f . (len F) & f . 0 = EmptyBag I & ( for j being Nat
for v being bag of I st j < len F & v = F . (j + 1) holds
f . (j + 1) = (f . j) + v ) )

then dom F = Seg (n + 1) by FINSEQ_1:def 3;
then n + 1 in dom F by FINSEQ_1:4;
then F . (n + 1) in rng F by FUNCT_1:def 3;
then reconsider u1 = F . (n + 1) as Element of Bags I by A3;
A5: n < n + 1 by NAT_1:13;
then consider u being bag of I, f being Function of NAT,(Bags I) such that
u = f . (len G) and
A6: f . 0 = EmptyBag I and
A7: for j being Nat
for v being bag of I st j < len G & v = G . (j + 1) holds
f . (j + 1) = (f . j) + v by A2, A4, FINSEQ_1:17;
defpred S2[ set , set ] means for j being Nat st $1 = j holds
( ( j < n + 1 implies $2 = f . $1 ) & ( n + 1 <= j implies for u being bag of I st u = F . (n + 1) holds
$2 = (f . (len G)) + u ) );
A8: for k being Element of NAT ex v being Element of Bags I st S2[k,v]
proof
let k be Element of NAT ; :: thesis: ex v being Element of Bags I st S2[k,v]
reconsider i = k as Element of NAT ;
A9: now :: thesis: ( n + 1 <= i implies ex v being set st
for j being Nat st k = j holds
( ( j < n + 1 implies v = f . k ) & ( n + 1 <= j implies for u2 being bag of I st u2 = F . (n + 1) holds
v = (f . (len G)) + u2 ) ) )
assume A10: n + 1 <= i ; :: thesis: ex v being set st
for j being Nat st k = j holds
( ( j < n + 1 implies v = f . k ) & ( n + 1 <= j implies for u2 being bag of I st u2 = F . (n + 1) holds
v = (f . (len G)) + u2 ) )

take v = (f . (len G)) + u1; :: thesis: for j being Nat st k = j holds
( ( j < n + 1 implies v = f . k ) & ( n + 1 <= j implies for u2 being bag of I st u2 = F . (n + 1) holds
v = (f . (len G)) + u2 ) )

let j be Nat; :: thesis: ( k = j implies ( ( j < n + 1 implies v = f . k ) & ( n + 1 <= j implies for u2 being bag of I st u2 = F . (n + 1) holds
v = (f . (len G)) + u2 ) ) )

assume k = j ; :: thesis: ( ( j < n + 1 implies v = f . k ) & ( n + 1 <= j implies for u2 being bag of I st u2 = F . (n + 1) holds
v = (f . (len G)) + u2 ) )

hence ( j < n + 1 implies v = f . k ) by A10; :: thesis: ( n + 1 <= j implies for u2 being bag of I st u2 = F . (n + 1) holds
v = (f . (len G)) + u2 )

assume n + 1 <= j ; :: thesis: for u2 being bag of I st u2 = F . (n + 1) holds
v = (f . (len G)) + u2

let u2 be bag of I; :: thesis: ( u2 = F . (n + 1) implies v = (f . (len G)) + u2 )
assume u2 = F . (n + 1) ; :: thesis: v = (f . (len G)) + u2
hence v = (f . (len G)) + u2 ; :: thesis: verum
end;
now :: thesis: ( i < n + 1 implies ex v being Element of Bags I st
for j being Nat st k = j holds
( ( j < n + 1 implies v = f . k ) & ( n + 1 <= j implies for u being bag of I st u = F . (n + 1) holds
v = (f . (len G)) + u ) ) )
assume A11: i < n + 1 ; :: thesis: ex v being Element of Bags I st
for j being Nat st k = j holds
( ( j < n + 1 implies v = f . k ) & ( n + 1 <= j implies for u being bag of I st u = F . (n + 1) holds
v = (f . (len G)) + u ) )

take v = f . k; :: thesis: for j being Nat st k = j holds
( ( j < n + 1 implies v = f . k ) & ( n + 1 <= j implies for u being bag of I st u = F . (n + 1) holds
v = (f . (len G)) + u ) )

let j be Nat; :: thesis: ( k = j implies ( ( j < n + 1 implies v = f . k ) & ( n + 1 <= j implies for u being bag of I st u = F . (n + 1) holds
v = (f . (len G)) + u ) ) )

assume A12: k = j ; :: thesis: ( ( j < n + 1 implies v = f . k ) & ( n + 1 <= j implies for u being bag of I st u = F . (n + 1) holds
v = (f . (len G)) + u ) )

thus ( j < n + 1 implies v = f . k ) ; :: thesis: ( n + 1 <= j implies for u being bag of I st u = F . (n + 1) holds
v = (f . (len G)) + u )

thus ( n + 1 <= j implies for u being bag of I st u = F . (n + 1) holds
v = (f . (len G)) + u ) by A11, A12; :: thesis: verum
end;
then consider v being bag of I such that
B13: S2[k,v] by A9;
v in Bags I by PRE_POLY:def 12;
hence ex v being Element of Bags I st S2[k,v] by B13; :: thesis: verum
end;
consider f9 being sequence of (Bags I) such that
A13: for k being Element of NAT holds S2[k,f9 . k] from FUNCT_2:sch 3(A8);
A14: for k being Nat holds S2[k,f9 . k]
proof
let k be Nat; :: thesis: S2[k,f9 . k]
k in NAT by ORDINAL1:def 12;
hence S2[k,f9 . k] by A13; :: thesis: verum
end;
take z = f9 . (n + 1); :: thesis: ex f being Function of NAT,(Bags I) st
( z = f . (len F) & f . 0 = EmptyBag I & ( for j being Nat
for v being bag of I st j < len F & v = F . (j + 1) holds
f . (j + 1) = (f . j) + v ) )

take f99 = f9; :: thesis: ( z = f99 . (len F) & f99 . 0 = EmptyBag I & ( for j being Nat
for v being bag of I st j < len F & v = F . (j + 1) holds
f99 . (j + 1) = (f99 . j) + v ) )

thus z = f99 . (len F) by A4; :: thesis: ( f99 . 0 = EmptyBag I & ( for j being Nat
for v being bag of I st j < len F & v = F . (j + 1) holds
f99 . (j + 1) = (f99 . j) + v ) )

thus f99 . 0 = EmptyBag I by A6, A14; :: thesis: for j being Nat
for v being bag of I st j < len F & v = F . (j + 1) holds
f99 . (j + 1) = (f99 . j) + v

let j be Nat; :: thesis: for v being bag of I st j < len F & v = F . (j + 1) holds
f99 . (j + 1) = (f99 . j) + v

let v be bag of I; :: thesis: ( j < len F & v = F . (j + 1) implies f99 . (j + 1) = (f99 . j) + v )
assume that
A15: j < len F and
A16: v = F . (j + 1) ; :: thesis: f99 . (j + 1) = (f99 . j) + v
A17: len G = n by A4, A5, FINSEQ_1:17;
A18: now :: thesis: ( j = n implies f99 . (j + 1) = (f99 . j) + v )
assume A19: j = n ; :: thesis: f99 . (j + 1) = (f99 . j) + v
then f99 . (j + 1) = (f . j) + v by A17, A14, A16;
hence f99 . (j + 1) = (f99 . j) + v by A5, A14, A19; :: thesis: verum
end;
A20: now :: thesis: ( j < n implies f99 . (j + 1) = (f99 . j) + v )
assume A21: j < n ; :: thesis: f99 . (j + 1) = (f99 . j) + v
then A22: j + 1 < n + 1 by XREAL_1:6;
( 1 <= 1 + j & j + 1 <= n ) by A21, NAT_1:11, NAT_1:13;
then j + 1 in Seg n ;
then A23: v = G . (j + 1) by A16, FUNCT_1:49;
j < len G by A4, A5, A21, FINSEQ_1:17;
then A24: f . (j + 1) = (f . j) + v by A7, A23;
j < n + 1 by A21, NAT_1:13;
then f . (j + 1) = (f9 . j) + v by A14, A24;
hence f99 . (j + 1) = (f99 . j) + v by A14, A22; :: thesis: verum
end;
j <= n by A4, A15, NAT_1:13;
hence f99 . (j + 1) = (f99 . j) + v by A20, A18, XXREAL_0:1; :: thesis: verum
end;
A25: S1[ 0 ]
proof
reconsider f = NAT --> (EmptyBag I) as sequence of (Bags I) ;
let F be Bags I -valued FinSequence; :: thesis: ( len F = 0 implies ex u being bag of I ex f being Function of NAT,(Bags I) st
( u = f . (len F) & f . 0 = EmptyBag I & ( for j being Nat
for v being bag of I st j < len F & v = F . (j + 1) holds
f . (j + 1) = (f . j) + v ) ) )

assume A26: len F = 0 ; :: thesis: ex u being bag of I ex f being Function of NAT,(Bags I) st
( u = f . (len F) & f . 0 = EmptyBag I & ( for j being Nat
for v being bag of I st j < len F & v = F . (j + 1) holds
f . (j + 1) = (f . j) + v ) )

take u = f . (len F); :: thesis: ex f being Function of NAT,(Bags I) st
( u = f . (len F) & f . 0 = EmptyBag I & ( for j being Nat
for v being bag of I st j < len F & v = F . (j + 1) holds
f . (j + 1) = (f . j) + v ) )

take f9 = f; :: thesis: ( u = f9 . (len F) & f9 . 0 = EmptyBag I & ( for j being Nat
for v being bag of I st j < len F & v = F . (j + 1) holds
f9 . (j + 1) = (f9 . j) + v ) )

thus ( u = f9 . (len F) & f9 . 0 = EmptyBag I ) by FUNCOP_1:7; :: thesis: for j being Nat
for v being bag of I st j < len F & v = F . (j + 1) holds
f9 . (j + 1) = (f9 . j) + v

let j be Nat; :: thesis: for v being bag of I st j < len F & v = F . (j + 1) holds
f9 . (j + 1) = (f9 . j) + v

let v be bag of I; :: thesis: ( j < len F & v = F . (j + 1) implies f9 . (j + 1) = (f9 . j) + v )
thus ( j < len F & v = F . (j + 1) implies f9 . (j + 1) = (f9 . j) + v ) by A26; :: thesis: verum
end;
for n being Nat holds S1[n] from NAT_1:sch 2(A25, A1);
hence ex b1 being bag of I ex F being Function of NAT,(Bags I) st
( b1 = F . (len f) & F . 0 = EmptyBag I & ( for i being Nat
for b being bag of I st i < len f & b = f . (i + 1) holds
F . (i + 1) = (F . i) + b ) ) ; :: thesis: verum