let b, m be FinSequence of INT ; :: thesis: ( len b = len m & ( for i being Nat st i in Seg (len b) holds
b . i <> 0 ) & m . 1 = 1 implies for k being Element of NAT st 1 <= k & k <= (len b) - 1 & ( for i being Nat st 1 <= i & i <= k holds
m . (i + 1) = (m . i) * (b . i) ) holds
m . (k + 1) <> 0 )

assume len b = len m ; :: thesis: ( ex i being Nat st
( i in Seg (len b) & not b . i <> 0 ) or not m . 1 = 1 or for k being Element of NAT st 1 <= k & k <= (len b) - 1 & ( for i being Nat st 1 <= i & i <= k holds
m . (i + 1) = (m . i) * (b . i) ) holds
m . (k + 1) <> 0 )

assume A1: ( ( for i being Nat st i in Seg (len b) holds
b . i <> 0 ) & m . 1 = 1 ) ; :: thesis: for k being Element of NAT st 1 <= k & k <= (len b) - 1 & ( for i being Nat st 1 <= i & i <= k holds
m . (i + 1) = (m . i) * (b . i) ) holds
m . (k + 1) <> 0

defpred S1[ Nat] means ( 1 <= $1 & $1 <= (len b) - 1 & ( for i being Nat st 1 <= i & i <= $1 holds
m . (i + 1) = (m . i) * (b . i) ) implies m . ($1 + 1) <> 0 );
reconsider I0 = 0 as Element of NAT ;
A2: S1[ 0 ] ;
A3: for k being Nat st S1[k] holds
S1[k + 1]
proof
let k be Nat; :: thesis: ( S1[k] implies S1[k + 1] )
assume A4: S1[k] ; :: thesis: S1[k + 1]
assume A5: ( 1 <= k + 1 & k + 1 <= (len b) - 1 & ( for i being Nat st 1 <= i & i <= k + 1 holds
m . (i + 1) = (m . i) * (b . i) ) ) ; :: thesis: m . ((k + 1) + 1) <> 0
A6: k <= k + 1 by NAT_1:12;
per cases ( k = 0 or k <> 0 ) ;
suppose A7: k = 0 ; :: thesis: m . ((k + 1) + 1) <> 0
A8: m . ((k + 1) + 1) = (m . 1) * (b . 1) by A5, A7
.= b . 1 by A1 ;
((len b) - 1) + 0 <= ((len b) - 1) + 1 by XREAL_1:7;
then k + 1 <= len b by A5, XXREAL_0:2;
then ( 1 <= 1 & 1 <= len b ) by A5, XXREAL_0:2;
then 1 in Seg (len b) ;
hence m . ((k + 1) + 1) <> 0 by A8, A1; :: thesis: verum
end;
suppose A9: k <> 0 ; :: thesis: m . ((k + 1) + 1) <> 0
A10: now :: thesis: for i being Nat st 1 <= i & i <= k holds
m . (i + 1) = (m . i) * (b . i)
let i be Nat; :: thesis: ( 1 <= i & i <= k implies m . (i + 1) = (m . i) * (b . i) )
assume ( 1 <= i & i <= k ) ; :: thesis: m . (i + 1) = (m . i) * (b . i)
then ( 1 <= i & i <= k + 1 ) by NAT_1:12;
hence m . (i + 1) = (m . i) * (b . i) by A5; :: thesis: verum
end;
thus m . ((k + 1) + 1) <> 0 :: thesis: verum
proof
A11: (k + 1) + 1 <= ((len b) - 1) + 1 by A5, XREAL_1:6;
A12: k + 1 <= (k + 1) + 1 by NAT_1:12;
A13: 1 <= k + 1 by NAT_1:12;
k + 1 <= len b by A12, A11, XXREAL_0:2;
then k + 1 in Seg (len b) by A13;
then A14: b . (k + 1) <> 0 by A1;
m . ((k + 1) + 1) = (m . (k + 1)) * (b . (k + 1)) by A5;
hence m . ((k + 1) + 1) <> 0 by A14, A10, A4, A5, A6, A9, NAT_1:14, XCMPLX_1:6, XXREAL_0:2; :: thesis: verum
end;
end;
end;
end;
for k being Nat holds S1[k] from NAT_1:sch 2(A2, A3);
hence for k being Element of NAT st 1 <= k & k <= (len b) - 1 & ( for i being Nat st 1 <= i & i <= k holds
m . (i + 1) = (m . i) * (b . i) ) holds
m . (k + 1) <> 0 ; :: thesis: verum