let s be Real_Sequence; :: thesis: ( ( for n being Element of NAT st n >= 1 holds
( s . n = n & s . 0 = 1 ) ) implies for n being Element of NAT st n >= 1 holds
(Partial_Product s) . n = n ! )

assume A1: for n being Element of NAT st n >= 1 holds
( s . n = n & s . 0 = 1 ) ; :: thesis: for n being Element of NAT st n >= 1 holds
(Partial_Product s) . n = n !

defpred S1[ Nat] means (Partial_Product s) . $1 = $1 ! ;
(Partial_Product s) . (1 + 0 ) = ((Partial_Product s) . 0 ) * (s . (1 + 0 )) by SERIES_3:def 1
.= (s . 0 ) * (s . (1 + 0 )) by SERIES_3:def 1
.= 1 * (s . 1) by A1
.= 1 ! by A1, NEWTON:19 ;
then A2: S1[1] ;
A3: for n being Nat st n >= 1 & S1[n] holds
S1[n + 1]
proof
let n be Nat; :: thesis: ( n >= 1 & S1[n] implies S1[n + 1] )
assume A4: ( n >= 1 & (Partial_Product s) . n = n ! ) ; :: thesis: S1[n + 1]
A5: n + 1 >= 1 by NAT_1:11;
n in NAT by ORDINAL1:def 13;
then (Partial_Product s) . (n + 1) = ((Partial_Product s) . n) * (s . (n + 1)) by SERIES_3:def 1
.= (n ! ) * (n + 1) by A1, A4, A5
.= (n + 1) ! by NEWTON:21 ;
hence S1[n + 1] ; :: thesis: verum
end;
for n being Nat st n >= 1 holds
S1[n] from NAT_1:sch 8(A2, A3);
hence for n being Element of NAT st n >= 1 holds
(Partial_Product s) . n = n ! ; :: thesis: verum