set cFC = the carrier of F_Complex ;
set cPRFC = the carrier of (Polynom-Ring F_Complex );
A1: - (1_ F_Complex ) = - 1 by COMPLFLD:4, COMPLFLD:10;
deffunc H1( non empty Element of NAT ) -> Polynomial of F_Complex = cyclotomic_poly $1;
defpred S1[ non empty Element of NAT ] means ( ( H1($1) . 0 = 1 or H1($1) . 0 = - 1 ) & ( for i being Element of NAT holds H1($1) . i is integer ) );
A2: now
let k be non empty Element of NAT ; :: thesis: ( ( for n being non empty Element of NAT st n < k holds
S1[n] ) implies S1[b1] )

assume A3: for n being non empty Element of NAT st n < k holds
S1[n] ; :: thesis: S1[b1]
A4: 1 <= k by Lm1;
per cases ( k = 1 or k > 1 ) by A4, XXREAL_0:1;
suppose A6: k > 1 ; :: thesis: S1[b1]
consider f being FinSequence of the carrier of (Polynom-Ring F_Complex ), p being Polynomial of F_Complex such that
A7: p = Product f and
A8: dom f = Seg k and
A9: for i being non empty Element of NAT st i in Seg k holds
( ( ( not i divides k or i = k ) implies f . i = <%(1_ F_Complex )%> ) & ( i divides k & i <> k implies f . i = H1(i) ) ) and
A10: unital_poly F_Complex ,k = (cyclotomic_poly k) *' p by Th54;
A11: k = len f by A8, FINSEQ_1:def 3;
defpred S2[ Nat, set ] means ex g being FinSequence of the carrier of (Polynom-Ring F_Complex ) ex p being Polynomial of F_Complex st
( g = f | (Seg $1) & p = Product g & $2 = p & ( p . 0 = 1 or p . 0 = - 1 ) & ( for j being Element of NAT holds p . j is integer ) );
defpred S3[ Element of NAT ] means ( $1 in Seg (len f) implies ex x being set st S2[$1,x] );
A14: S3[ 0 ] by FINSEQ_1:3;
A15: for l being Element of NAT st S3[l] holds
S3[l + 1]
proof
let l be Element of NAT ; :: thesis: ( S3[l] implies S3[l + 1] )
assume A16: S3[l] ; :: thesis: S3[l + 1]
assume A17: l + 1 in Seg (len f) ; :: thesis: ex x being set st S2[l + 1,x]
per cases ( l = 0 or 0 < l ) ;
suppose A18: l = 0 ; :: thesis: ex x being set st S2[l + 1,x]
reconsider g = f | (Seg (l + 1)) as FinSequence of the carrier of (Polynom-Ring F_Complex ) by FINSEQ_1:23;
reconsider p = Product g as Polynomial of F_Complex by POLYNOM3:def 12;
take p ; :: thesis: S2[l + 1,p]
take g ; :: thesis: ex p being Polynomial of F_Complex st
( g = f | (Seg (l + 1)) & p = Product g & p = p & ( p . 0 = 1 or p . 0 = - 1 ) & ( for j being Element of NAT holds p . j is integer ) )

take p ; :: thesis: ( g = f | (Seg (l + 1)) & p = Product g & p = p & ( p . 0 = 1 or p . 0 = - 1 ) & ( for j being Element of NAT holds p . j is integer ) )
thus ( g = f | (Seg (l + 1)) & p = Product g & p = p ) ; :: thesis: ( ( p . 0 = 1 or p . 0 = - 1 ) & ( for j being Element of NAT holds p . j is integer ) )
reconsider fl1 = f . (l + 1) as Element of the carrier of (Polynom-Ring F_Complex ) by A8, A11, A17, FINSEQ_2:13;
<*> the carrier of (Polynom-Ring F_Complex ) = f | (Seg 0 ) ;
then g = (<*> the carrier of (Polynom-Ring F_Complex )) ^ <*(f . (l + 1))*> by A8, A11, A17, A18, FINSEQ_5:11
.= <*(f . (l + 1))*> by FINSEQ_1:47 ;
then A19: p = fl1 by FINSOP_1:12;
( 1 divides k & 1 <> k ) by A6, NAT_D:6;
then A20: f . 1 = H1(1) by A9, A11, A17, A18;
hence ( p . 0 = 1 or p . 0 = - 1 ) by A1, A18, A19, Th52, POLYNOM5:39; :: thesis: for j being Element of NAT holds p . j is integer
let j be Element of NAT ; :: thesis: p . j is integer
thus p . j is integer :: thesis: verum
end;
suppose 0 < l ; :: thesis: ex x being set st S2[l + 1,x]
then A21: 0 + 1 <= l by NAT_1:13;
A22: l + 1 <= len f by A17, FINSEQ_1:3;
l <= l + 1 by NAT_1:12;
then l <= len f by A22, XXREAL_0:2;
then consider x being set such that
A23: S2[l,x] by A16, A21, FINSEQ_1:3;
consider g being FinSequence of the carrier of (Polynom-Ring F_Complex ), p being Polynomial of F_Complex such that
A24: g = f | (Seg l) and
A25: p = Product g and
x = p and
A26: ( p . 0 = 1 or p . 0 = - 1 ) and
A27: for j being Element of NAT holds p . j is integer by A23;
reconsider g1 = f | (Seg (l + 1)) as FinSequence of the carrier of (Polynom-Ring F_Complex ) by FINSEQ_1:23;
reconsider p1 = Product g1 as Polynomial of F_Complex by POLYNOM3:def 12;
take p1 ; :: thesis: S2[l + 1,p1]
take g1 ; :: thesis: ex p being Polynomial of F_Complex st
( g1 = f | (Seg (l + 1)) & p = Product g1 & p1 = p & ( p . 0 = 1 or p . 0 = - 1 ) & ( for j being Element of NAT holds p . j is integer ) )

take p1 ; :: thesis: ( g1 = f | (Seg (l + 1)) & p1 = Product g1 & p1 = p1 & ( p1 . 0 = 1 or p1 . 0 = - 1 ) & ( for j being Element of NAT holds p1 . j is integer ) )
thus ( g1 = f | (Seg (l + 1)) & p1 = Product g1 & p1 = p1 ) ; :: thesis: ( ( p1 . 0 = 1 or p1 . 0 = - 1 ) & ( for j being Element of NAT holds p1 . j is integer ) )
reconsider fl1 = f . (l + 1) as Element of the carrier of (Polynom-Ring F_Complex ) by A8, A11, A17, FINSEQ_2:13;
reconsider fl1p = fl1 as Polynomial of F_Complex by POLYNOM3:def 12;
g1 = g ^ <*fl1*> by A8, A11, A17, A24, FINSEQ_5:11;
then Product g1 = (Product g) * fl1 by GROUP_4:9;
then A28: p1 = p *' fl1p by A25, POLYNOM3:def 12;
reconsider m1 = - 1 as Element of COMPLEX by XCMPLX_0:def 2;
thus ( ( p1 . 0 = 1 or p1 . 0 = - 1 ) & ( for j being Element of NAT holds p1 . j is integer ) ) :: thesis: verum
proof
per cases ( not l + 1 divides k or l + 1 = k or ( l + 1 divides k & l + 1 <> k ) ) ;
suppose ( not l + 1 divides k or l + 1 = k ) ; :: thesis: ( ( p1 . 0 = 1 or p1 . 0 = - 1 ) & ( for j being Element of NAT holds p1 . j is integer ) )
then A29: fl1p = <%(1_ F_Complex )%> by A9, A11, A17;
consider r being FinSequence of F_Complex such that
A30: len r = 0 + 1 and
A31: p1 . 0 = Sum r and
A32: for m being Element of NAT st m in dom r holds
r . m = (p . (m -' 1)) * (fl1p . ((0 + 1) -' m)) by A28, POLYNOM3:def 11;
1 in dom r by A30, FINSEQ_3:27;
then reconsider r1 = r . 1 as Element of F_Complex by FINSEQ_2:13;
r = <*r1*> by A30, FINSEQ_1:57;
then A33: p1 . 0 = r1 by A31, RLVECT_1:61;
1 in dom r by A30, FINSEQ_3:27;
then A34: p1 . 0 = (p . (1 -' 1)) * (fl1p . ((0 + 1) -' 1)) by A32, A33
.= (p . ((0 + 1) -' 1)) * (fl1p . 0 ) by NAT_D:34
.= (p . 0 ) * (fl1p . 0 ) by NAT_D:34
.= (p . 0 ) * (1_ F_Complex ) by A29, POLYNOM5:33 ;
thus ( p1 . 0 = 1 or p1 . 0 = - 1 ) :: thesis: for j being Element of NAT holds p1 . j is integer
proof
per cases ( p . 0 = 1 or p . 0 = - 1 ) by A26;
suppose p . 0 = 1 ; :: thesis: ( p1 . 0 = 1 or p1 . 0 = - 1 )
hence ( p1 . 0 = 1 or p1 . 0 = - 1 ) by A34, COMPLFLD:10; :: thesis: verum
end;
suppose p . 0 = - 1 ; :: thesis: ( p1 . 0 = 1 or p1 . 0 = - 1 )
hence ( p1 . 0 = 1 or p1 . 0 = - 1 ) by A34, COMPLFLD:10; :: thesis: verum
end;
end;
end;
let j be Element of NAT ; :: thesis: p1 . j is integer
consider r being FinSequence of F_Complex such that
len r = j + 1 and
A35: p1 . j = Sum r and
A36: for m being Element of NAT st m in dom r holds
r . m = (p . (m -' 1)) * (fl1p . ((j + 1) -' m)) by A28, POLYNOM3:def 11;
for i being Element of NAT st i in dom r holds
r . i is integer
proof
let i be Element of NAT ; :: thesis: ( i in dom r implies r . i is integer )
assume A37: i in dom r ; :: thesis: r . i is integer
reconsider pi1 = p . (i -' 1) as Integer by A27;
set j1i = (j + 1) -' i;
now
A38: ( (j + 1) -' i = 0 or (j + 1) -' i >= 0 + 1 ) by NAT_1:13;
per cases ( (j + 1) -' i = 0 or (j + 1) -' i >= 1 ) by A38;
case (j + 1) -' i = 0 ; :: thesis: fl1p . ((j + 1) -' i) = 1
hence fl1p . ((j + 1) -' i) = 1 by A29, COMPLFLD:10, POLYNOM5:33; :: thesis: verum
end;
case (j + 1) -' i >= 1 ; :: thesis: fl1p . ((j + 1) -' i) = 0
hence fl1p . ((j + 1) -' i) = 0 by A29, COMPLFLD:9, POLYNOM5:33; :: thesis: verum
end;
end;
end;
then reconsider fl1pj1i = fl1p . ((j + 1) -' i) as Integer ;
r . i = (p . (i -' 1)) * (fl1p . ((j + 1) -' i)) by A36, A37
.= pi1 * fl1pj1i ;
hence r . i is integer ; :: thesis: verum
end;
hence p1 . j is integer by A35, Th5; :: thesis: verum
end;
suppose A39: ( l + 1 divides k & l + 1 <> k ) ; :: thesis: ( ( p1 . 0 = 1 or p1 . 0 = - 1 ) & ( for j being Element of NAT holds p1 . j is integer ) )
then A40: fl1p = H1(l + 1) by A9, A11, A17;
l + 1 <= k by A39, NAT_D:7;
then A41: l + 1 < k by A39, XXREAL_0:1;
consider r being FinSequence of F_Complex such that
A42: len r = 0 + 1 and
A43: p1 . 0 = Sum r and
A44: for m being Element of NAT st m in dom r holds
r . m = (p . (m -' 1)) * (fl1p . ((0 + 1) -' m)) by A28, POLYNOM3:def 11;
1 in dom r by A42, FINSEQ_3:27;
then reconsider r1 = r . 1 as Element of F_Complex by FINSEQ_2:13;
reconsider fl1p0 = fl1p . 0 as Integer by A3, A40, A41;
r = <*r1*> by A42, FINSEQ_1:57;
then A45: p1 . 0 = r1 by A43, RLVECT_1:61;
1 in dom r by A42, FINSEQ_3:27;
then A46: p1 . 0 = (p . (1 -' 1)) * (fl1p . ((0 + 1) -' 1)) by A44, A45
.= (p . ((0 + 1) -' 1)) * (fl1p . 0 ) by NAT_D:34
.= (p . 0 ) * (fl1p . 0 ) by NAT_D:34 ;
A47: ( fl1p0 = 1 or fl1p0 = m1 ) by A3, A40, A41;
thus ( p1 . 0 = 1 or p1 . 0 = - 1 ) :: thesis: for j being Element of NAT holds p1 . j is integer
proof
per cases ( p . 0 = 1 or p . 0 = - 1 ) by A26;
suppose p . 0 = 1 ; :: thesis: ( p1 . 0 = 1 or p1 . 0 = - 1 )
hence ( p1 . 0 = 1 or p1 . 0 = - 1 ) by A3, A40, A41, A46; :: thesis: verum
end;
suppose p . 0 = - 1 ; :: thesis: ( p1 . 0 = 1 or p1 . 0 = - 1 )
hence ( p1 . 0 = 1 or p1 . 0 = - 1 ) by A46, A47; :: thesis: verum
end;
end;
end;
let j be Element of NAT ; :: thesis: p1 . j is integer
consider r being FinSequence of F_Complex such that
len r = j + 1 and
A48: p1 . j = Sum r and
A49: for m being Element of NAT st m in dom r holds
r . m = (p . (m -' 1)) * (fl1p . ((j + 1) -' m)) by A28, POLYNOM3:def 11;
for i being Element of NAT st i in dom r holds
r . i is integer
proof
let i be Element of NAT ; :: thesis: ( i in dom r implies r . i is integer )
assume A50: i in dom r ; :: thesis: r . i is integer
reconsider pi1 = p . (i -' 1) as Integer by A27;
reconsider fl1pj1i = fl1p . ((j + 1) -' i) as Integer by A3, A40, A41;
r . i = (p . (i -' 1)) * (fl1p . ((j + 1) -' i)) by A49, A50
.= pi1 * fl1pj1i ;
hence r . i is integer ; :: thesis: verum
end;
hence p1 . j is integer by A48, Th5; :: thesis: verum
end;
end;
end;
end;
end;
end;
for l being Element of NAT holds S3[l] from NAT_1:sch 1(A14, A15);
then A51: for l being Nat st l in Seg (len f) holds
ex x being set st S2[l,x] ;
consider F being FinSequence such that
dom F = Seg (len f) and
A52: for i being Nat st i in Seg (len f) holds
S2[i,F . i] from FINSEQ_1:sch 1(A51);
consider g being FinSequence of the carrier of (Polynom-Ring F_Complex ), p1 being Polynomial of F_Complex such that
A53: ( g = f | (Seg k) & p1 = Product g & F . k = p1 ) and
A54: ( ( p1 . 0 = 1 or p1 . 0 = - 1 ) & ( for j being Element of NAT holds p1 . j is integer ) ) by A11, A52, FINSEQ_1:5;
A55: p = p1 by A7, A11, A53, FINSEQ_3:55;
consider r being FinSequence of the carrier of F_Complex such that
A56: len r = 0 + 1 and
A57: (unital_poly F_Complex ,k) . 0 = Sum r and
A58: for l being Element of NAT st l in dom r holds
r . l = (p . (l -' 1)) * (H1(k) . ((0 + 1) -' l)) by A10, POLYNOM3:def 11;
A59: (0 + 1) -' 1 = 0 by NAT_D:34;
A60: 1 in dom r by A56, FINSEQ_3:27;
then reconsider r1 = r . 1 as Element of the carrier of F_Complex by FINSEQ_2:13;
r = <*r1*> by A56, FINSEQ_1:57;
then A61: Sum r = r . 1 by RLVECT_1:61
.= (p . 0 ) * (H1(k) . 0 ) by A58, A59, A60 ;
A62: ( H1(k) . 0 = 1 or H1(k) . 0 = - 1 )
proof
per cases ( p . 0 = 1 or p . 0 = - 1 ) by A7, A11, A53, A54, FINSEQ_3:55;
suppose p . 0 = 1 ; :: thesis: ( H1(k) . 0 = 1 or H1(k) . 0 = - 1 )
hence ( H1(k) . 0 = 1 or H1(k) . 0 = - 1 ) by A1, A57, A61, Th42; :: thesis: verum
end;
suppose p . 0 = - 1 ; :: thesis: ( H1(k) . 0 = 1 or H1(k) . 0 = - 1 )
then - (1_ F_Complex ) = (- (1_ F_Complex )) * (H1(k) . 0 ) by A1, A57, A61, Th42
.= - ((1_ F_Complex ) * (H1(k) . 0 )) by VECTSP_1:41
.= - (H1(k) . 0 ) by VECTSP_1:def 19 ;
hence ( H1(k) . 0 = 1 or H1(k) . 0 = - 1 ) by COMPLFLD:10, RLVECT_1:31; :: thesis: verum
end;
end;
end;
defpred S4[ Nat] means H1(k) . $1 is integer ;
A63: now
let m be Nat; :: thesis: ( ( for n being Nat st n < m holds
S4[n] ) implies S4[b1] )

assume A64: for n being Nat st n < m holds
S4[n] ; :: thesis: S4[b1]
reconsider m1 = m as Element of NAT by ORDINAL1:def 13;
consider r being FinSequence of the carrier of F_Complex such that
A65: len r = m + 1 and
A66: (unital_poly F_Complex ,k) . m = Sum r and
A67: for l being Element of NAT st l in dom r holds
r . l = (p . (l -' 1)) * (H1(k) . ((m1 + 1) -' l)) by A10, POLYNOM3:def 11;
A68: 1 <= len r by A65, NAT_1:11;
A69: (1,1 -cut r) ^ ((1 + 1),(len r) -cut r) = r by A65, GRAPH_2:9, NAT_1:11;
A70: 1 in dom r by A68, FINSEQ_3:27;
then reconsider r1 = r . 1 as Element of the carrier of F_Complex by FINSEQ_2:13;
reconsider r1c = r1 as Element of COMPLEX by COMPLFLD:def 1;
A71: 1,1 -cut r = <*r1*> by A68, GRAPH_2:6;
set s = (1 + 1),(len r) -cut r;
A72: Sum r = r1 + (Sum ((1 + 1),(len r) -cut r)) by A69, A71, FVSUM_1:89;
reconsider Src = Sum r as Element of COMPLEX by COMPLFLD:def 1;
then reconsider Sr = Src as Integer ;
reconsider Ssc = Sum ((1 + 1),(len r) -cut r) as Element of COMPLEX by COMPLFLD:def 1;
now
let i be Element of NAT ; :: thesis: ( i in dom ((1 + 1),(len r) -cut r) implies ((1 + 1),(len r) -cut r) . b1 is integer )
assume A73: i in dom ((1 + 1),(len r) -cut r) ; :: thesis: ((1 + 1),(len r) -cut r) . b1 is integer
per cases ( len r < 2 or 1 + 1 <= len r ) ;
suppose len r < 2 ; :: thesis: ((1 + 1),(len r) -cut r) . b1 is integer
then (1 + 1),(len r) -cut r = {} by GRAPH_2:def 1;
hence ((1 + 1),(len r) -cut r) . i is integer ; :: thesis: verum
end;
suppose A74: 1 + 1 <= len r ; :: thesis: ((1 + 1),(len r) -cut r) . b1 is integer
then A75: (len ((1 + 1),(len r) -cut r)) + (1 + 1) = (len r) + 1 by GRAPH_2:def 1;
per cases ( m = 0 or m > 0 ) ;
suppose m = 0 ; :: thesis: ((1 + 1),(len r) -cut r) . b1 is integer
hence ((1 + 1),(len r) -cut r) . i is integer by A65, A74; :: thesis: verum
end;
suppose A76: m > 0 ; :: thesis: ((1 + 1),(len r) -cut r) . b1 is integer
A77: ( 1 <= i & i <= len ((1 + 1),(len r) -cut r) ) by A73, FINSEQ_3:27;
i <> 0 by A73, FINSEQ_3:27;
then consider i1 being Nat such that
A78: i = i1 + 1 by NAT_1:6;
i1 < len ((1 + 1),(len r) -cut r) by A77, A78, NAT_1:13;
then A79: ((1 + 1),(len r) -cut r) . i = r . ((1 + 1) + i1) by A74, A78, GRAPH_2:def 1
.= r . (1 + i) by A78 ;
( i <> 0 & m <> 0 ) by A73, A76, FINSEQ_3:27;
then reconsider cpkmi = H1(k) . (m -' i) as Integer by A64, NAT_2:11;
reconsider ppi = p . i as Integer by A54, A55;
( 1 <= i + 1 & i + 1 <= (len ((1 + 1),(len r) -cut r)) + 1 ) by A77, NAT_1:11, XREAL_1:8;
then 1 + i in dom r by A75, FINSEQ_3:27;
then r . (1 + i) = (p . ((1 + i) -' 1)) * (H1(k) . ((m + 1) -' (1 + i))) by A67
.= (p . ((i + 1) -' 1)) * (H1(k) . (((m + 1) -' 1) -' i)) by NAT_2:32
.= (p . i) * (H1(k) . (((m + 1) -' 1) -' i)) by NAT_D:34
.= ppi * cpkmi by NAT_D:34 ;
hence ((1 + 1),(len r) -cut r) . i is integer by A79; :: thesis: verum
end;
end;
end;
end;
end;
then reconsider Ss = Ssc as Integer by Th5;
r1c = Sr - Ss by A72;
then reconsider r1i = r1 as Integer ;
A80: r1i = (p . (1 -' 1)) * (H1(k) . ((m + 1) -' 1)) by A67, A70
.= (p . 0 ) * (H1(k) . m1) by A59, NAT_D:34 ;
per cases ( p . 0 = 1 or p . 0 = - 1 ) by A7, A11, A53, A54, FINSEQ_3:55;
suppose p . 0 = - 1 ; :: thesis: S4[b1]
then r1 = (- (1_ F_Complex )) * (H1(k) . m1) by A80, COMPLFLD:4, COMPLFLD:10
.= - ((1_ F_Complex ) * (H1(k) . m1)) by VECTSP_1:41
.= - (H1(k) . m1) by VECTSP_1:def 19 ;
then 0. F_Complex = (- (H1(k) . m1)) + (- r1) by RLVECT_1:def 11
.= (- r1) - (H1(k) . m1) ;
then - r1 = H1(k) . m by VECTSP_1:66;
then - r1i = H1(k) . m by COMPLFLD:4;
hence S4[m] ; :: thesis: verum
end;
end;
end;
for i being Nat holds S4[i] from NAT_1:sch 4(A63);
hence S1[k] by A62; :: thesis: verum
end;
end;
end;
for d being non empty Element of NAT holds S1[d] from UNIROOTS:sch 1(A2);
hence for d being non empty Element of NAT
for i being Element of NAT holds
( ( (cyclotomic_poly d) . 0 = 1 or (cyclotomic_poly d) . 0 = - 1 ) & (cyclotomic_poly d) . i is integer ) ; :: thesis: verum