:: POLYNOM5 semantic presentation

theorem Th1: :: POLYNOM5:1
for b1, b2 being Nat st b1 <> 0 & b2 <> 0 holds
(((b1 * b2) - b1) - b2) + 1 >= 0
proof end;

theorem Th2: :: POLYNOM5:2
for b1, b2 being real number st b2 > 0 holds
(min b1,b2) / (max b1,b2) <= 1
proof end;

theorem Th3: :: POLYNOM5:3
for b1, b2 being real number st ( for b3 being real number st b3 > 0 & b3 < 1 holds
b3 * b1 >= b2 ) holds
b2 <= 0
proof end;

Lemma4: for b1, b2 being Real st ( for b3 being Real st b3 > 0 & b3 < 1 holds
b3 * b1 >= b2 ) holds
b2 <= 0
proof end;

theorem Th4: :: POLYNOM5:4
for b1 being FinSequence of REAL st ( for b2 being Nat st b2 in dom b1 holds
b1 . b2 >= 0 ) holds
for b2 being Nat st b2 in dom b1 holds
Sum b1 >= b1 . b2
proof end;

theorem Th5: :: POLYNOM5:5
for b1, b2 being Real holds - [**b1,b2**] = [**(- b1),(- b2)**]
proof end;

theorem Th6: :: POLYNOM5:6
for b1, b2, b3, b4 being Real holds [**b1,b2**] - [**b3,b4**] = [**(b1 - b3),(b2 - b4)**]
proof end;

theorem Th7: :: POLYNOM5:7
canceled;

theorem Th8: :: POLYNOM5:8
for b1 being Element of F_Complex st b1 <> 0. F_Complex holds
for b2 being Nat holds |.((power F_Complex ) . b1,b2).| = |.b1.| to_power b2
proof end;

definition
let c1 be FinSequence of the carrier of F_Complex ;
func |.c1.| -> FinSequence of REAL means :Def1: :: POLYNOM5:def 1
( len a2 = len a1 & ( for b1 being Nat st b1 in dom a1 holds
a2 /. b1 = |.(a1 /. b1).| ) );
existence
ex b1 being FinSequence of REAL st
( len b1 = len c1 & ( for b2 being Nat st b2 in dom c1 holds
b1 /. b2 = |.(c1 /. b2).| ) )
proof end;
uniqueness
for b1, b2 being FinSequence of REAL st len b1 = len c1 & ( for b3 being Nat st b3 in dom c1 holds
b1 /. b3 = |.(c1 /. b3).| ) & len b2 = len c1 & ( for b3 being Nat st b3 in dom c1 holds
b2 /. b3 = |.(c1 /. b3).| ) holds
b1 = b2
proof end;
end;

:: deftheorem Def1 defines |. POLYNOM5:def 1 :
for b1 being FinSequence of the carrier of F_Complex
for b2 being FinSequence of REAL holds
( b2 = |.b1.| iff ( len b2 = len b1 & ( for b3 being Nat st b3 in dom b1 holds
b2 /. b3 = |.(b1 /. b3).| ) ) );

theorem Th9: :: POLYNOM5:9
|.(<*> the carrier of F_Complex ).| = <*> REAL
proof end;

theorem Th10: :: POLYNOM5:10
for b1 being Element of F_Complex holds |.<*b1*>.| = <*|.b1.|*>
proof end;

theorem Th11: :: POLYNOM5:11
for b1, b2 being Element of F_Complex holds |.<*b1,b2*>.| = <*|.b1.|,|.b2.|*>
proof end;

theorem Th12: :: POLYNOM5:12
for b1, b2, b3 being Element of F_Complex holds |.<*b1,b2,b3*>.| = <*|.b1.|,|.b2.|,|.b3.|*>
proof end;

theorem Th13: :: POLYNOM5:13
for b1, b2 being FinSequence of the carrier of F_Complex holds |.(b1 ^ b2).| = |.b1.| ^ |.b2.|
proof end;

theorem Th14: :: POLYNOM5:14
for b1 being FinSequence of the carrier of F_Complex
for b2 being Element of F_Complex holds
( |.(b1 ^ <*b2*>).| = |.b1.| ^ <*|.b2.|*> & |.(<*b2*> ^ b1).| = <*|.b2.|*> ^ |.b1.| )
proof end;

theorem Th15: :: POLYNOM5:15
for b1 being FinSequence of the carrier of F_Complex holds |.(Sum b1).| <= Sum |.b1.|
proof end;

definition
let c1 be non empty commutative Abelian add-associative right_zeroed right_complementable right_unital distributive doubleLoopStr ;
let c2 be Polynomial of c1;
let c3 be Nat;
func c2 `^ c3 -> sequence of a1 equals :: POLYNOM5:def 2
(power (Polynom-Ring a1)) . a2,a3;
coherence
(power (Polynom-Ring c1)) . c2,c3 is sequence of c1
proof end;
end;

:: deftheorem Def2 defines `^ POLYNOM5:def 2 :
for b1 being non empty commutative Abelian add-associative right_zeroed right_complementable right_unital distributive doubleLoopStr
for b2 being Polynomial of b1
for b3 being Nat holds b2 `^ b3 = (power (Polynom-Ring b1)) . b2,b3;

registration
let c1 be non empty commutative Abelian add-associative right_zeroed right_complementable right_unital distributive doubleLoopStr ;
let c2 be Polynomial of c1;
let c3 be Nat;
cluster a2 `^ a3 -> finite-Support ;
coherence
c2 `^ c3 is finite-Support
proof end;
end;

theorem Th16: :: POLYNOM5:16
for b1 being non empty commutative Abelian add-associative right_zeroed right_complementable right_unital distributive doubleLoopStr
for b2 being Polynomial of b1 holds b2 `^ 0 = 1_. b1
proof end;

theorem Th17: :: POLYNOM5:17
for b1 being non empty commutative Abelian add-associative right_zeroed right_complementable right_unital distributive doubleLoopStr
for b2 being Polynomial of b1 holds b2 `^ 1 = b2
proof end;

theorem Th18: :: POLYNOM5:18
for b1 being non empty commutative Abelian add-associative right_zeroed right_complementable right_unital distributive doubleLoopStr
for b2 being Polynomial of b1 holds b2 `^ 2 = b2 *' b2
proof end;

theorem Th19: :: POLYNOM5:19
for b1 being non empty commutative Abelian add-associative right_zeroed right_complementable right_unital distributive doubleLoopStr
for b2 being Polynomial of b1 holds b2 `^ 3 = (b2 *' b2) *' b2
proof end;

theorem Th20: :: POLYNOM5:20
for b1 being non empty commutative Abelian add-associative right_zeroed right_complementable right_unital distributive doubleLoopStr
for b2 being Polynomial of b1
for b3 being Nat holds b2 `^ (b3 + 1) = (b2 `^ b3) *' b2
proof end;

theorem Th21: :: POLYNOM5:21
for b1 being non empty commutative Abelian add-associative right_zeroed right_complementable right_unital distributive doubleLoopStr
for b2 being Nat holds (0_. b1) `^ (b2 + 1) = 0_. b1
proof end;

theorem Th22: :: POLYNOM5:22
for b1 being non empty commutative Abelian add-associative right_zeroed right_complementable right_unital distributive doubleLoopStr
for b2 being Nat holds (1_. b1) `^ b2 = 1_. b1
proof end;

theorem Th23: :: POLYNOM5:23
for b1 being Field
for b2 being Polynomial of b1
for b3 being Element of b1
for b4 being Nat holds eval (b2 `^ b4),b3 = (power b1) . (eval b2,b3),b4
proof end;

Lemma18: for b1 being non empty ZeroStr
for b2 being AlgSequence of b1 st len b2 > 0 holds
b2 . ((len b2) -' 1) <> 0. b1
proof end;

theorem Th24: :: POLYNOM5:24
for b1 being domRing
for b2 being Polynomial of b1 st len b2 <> 0 holds
for b3 being Nat holds len (b2 `^ b3) = ((b3 * (len b2)) - b3) + 1
proof end;

definition
let c1 be non empty HGrStr ;
let c2 be sequence of c1;
let c3 be Element of c1;
func c3 * c2 -> sequence of a1 means :Def3: :: POLYNOM5:def 3
for b1 being Nat holds a4 . b1 = a3 * (a2 . b1);
existence
ex b1 being sequence of c1 st
for b2 being Nat holds b1 . b2 = c3 * (c2 . b2)
proof end;
uniqueness
for b1, b2 being sequence of c1 st ( for b3 being Nat holds b1 . b3 = c3 * (c2 . b3) ) & ( for b3 being Nat holds b2 . b3 = c3 * (c2 . b3) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def3 defines * POLYNOM5:def 3 :
for b1 being non empty HGrStr
for b2 being sequence of b1
for b3 being Element of b1
for b4 being sequence of b1 holds
( b4 = b3 * b2 iff for b5 being Nat holds b4 . b5 = b3 * (b2 . b5) );

registration
let c1 be non empty add-associative right_zeroed right_complementable right-distributive doubleLoopStr ;
let c2 be Polynomial of c1;
let c3 be Element of c1;
cluster a3 * a2 -> finite-Support ;
coherence
c3 * c2 is finite-Support
proof end;
end;

theorem Th25: :: POLYNOM5:25
for b1 being non empty add-associative right_zeroed right_complementable distributive doubleLoopStr
for b2 being Polynomial of b1 holds len ((0. b1) * b2) = 0
proof end;

theorem Th26: :: POLYNOM5:26
for b1 being non empty associative commutative add-associative right_zeroed right_complementable distributive left_unital Field-like doubleLoopStr
for b2 being Polynomial of b1
for b3 being Element of b1 st b3 <> 0. b1 holds
len (b3 * b2) = len b2
proof end;

theorem Th27: :: POLYNOM5:27
for b1 being non empty add-associative right_zeroed right_complementable left-distributive doubleLoopStr
for b2 being sequence of b1 holds (0. b1) * b2 = 0_. b1
proof end;

theorem Th28: :: POLYNOM5:28
for b1 being non empty left_unital multLoopStr
for b2 being sequence of b1 holds (1. b1) * b2 = b2
proof end;

theorem Th29: :: POLYNOM5:29
for b1 being non empty add-associative right_zeroed right_complementable right-distributive doubleLoopStr
for b2 being Element of b1 holds b2 * (0_. b1) = 0_. b1
proof end;

theorem Th30: :: POLYNOM5:30
for b1 being non empty add-associative right_zeroed right_complementable right-distributive right_unital doubleLoopStr
for b2 being Element of b1 holds b2 * (1_. b1) = <%b2%>
proof end;

theorem Th31: :: POLYNOM5:31
for b1 being non empty associative commutative add-associative right_zeroed right_complementable distributive left_unital Field-like doubleLoopStr
for b2 being Polynomial of b1
for b3, b4 being Element of b1 holds eval (b3 * b2),b4 = b3 * (eval b2,b4)
proof end;

theorem Th32: :: POLYNOM5:32
for b1 being non empty unital add-associative right_zeroed right_complementable right-distributive doubleLoopStr
for b2 being Polynomial of b1 holds eval b2,(0. b1) = b2 . 0
proof end;

definition
let c1 be non empty ZeroStr ;
let c2, c3 be Element of c1;
func <%c2,c3%> -> sequence of a1 equals :: POLYNOM5:def 4
((0_. a1) +* 0,a2) +* 1,a3;
coherence
((0_. c1) +* 0,c2) +* 1,c3 is sequence of c1
;
end;

:: deftheorem Def4 defines <% POLYNOM5:def 4 :
for b1 being non empty ZeroStr
for b2, b3 being Element of b1 holds <%b2,b3%> = ((0_. b1) +* 0,b2) +* 1,b3;

theorem Th33: :: POLYNOM5:33
for b1 being non empty ZeroStr
for b2 being Element of b1 holds
( <%b2%> . 0 = b2 & ( for b3 being Nat st b3 >= 1 holds
<%b2%> . b3 = 0. b1 ) )
proof end;

theorem Th34: :: POLYNOM5:34
for b1 being non empty ZeroStr
for b2 being Element of b1 st b2 <> 0. b1 holds
len <%b2%> = 1
proof end;

theorem Th35: :: POLYNOM5:35
for b1 being non empty ZeroStr holds <%(0. b1)%> = 0_. b1
proof end;

theorem Th36: :: POLYNOM5:36
for b1 being non empty associative commutative add-associative right_zeroed right_complementable distributive left_unital domRing-like doubleLoopStr
for b2, b3 being Element of b1 holds <%b2%> *' <%b3%> = <%(b2 * b3)%>
proof end;

theorem Th37: :: POLYNOM5:37
for b1 being non empty associative commutative Abelian add-associative right_zeroed right_complementable right_unital distributive Field-like doubleLoopStr
for b2 being Element of b1
for b3 being Nat holds <%b2%> `^ b3 = <%((power b1) . b2,b3)%>
proof end;

theorem Th38: :: POLYNOM5:38
for b1 being non empty unital add-associative right_zeroed right_complementable doubleLoopStr
for b2, b3 being Element of b1 holds eval <%b2%>,b3 = b2
proof end;

theorem Th39: :: POLYNOM5:39
for b1 being non empty ZeroStr
for b2, b3 being Element of b1 holds
( <%b2,b3%> . 0 = b2 & <%b2,b3%> . 1 = b3 & ( for b4 being Nat st b4 >= 2 holds
<%b2,b3%> . b4 = 0. b1 ) )
proof end;

registration
let c1 be non empty ZeroStr ;
let c2, c3 be Element of c1;
cluster <%a2,a3%> -> finite-Support ;
coherence
<%c2,c3%> is finite-Support
proof end;
end;

theorem Th40: :: POLYNOM5:40
for b1 being non empty ZeroStr
for b2, b3 being Element of b1 holds len <%b2,b3%> <= 2
proof end;

theorem Th41: :: POLYNOM5:41
for b1 being non empty ZeroStr
for b2, b3 being Element of b1 st b3 <> 0. b1 holds
len <%b2,b3%> = 2
proof end;

theorem Th42: :: POLYNOM5:42
for b1 being non empty ZeroStr
for b2 being Element of b1 st b2 <> 0. b1 holds
len <%b2,(0. b1)%> = 1
proof end;

theorem Th43: :: POLYNOM5:43
for b1 being non empty ZeroStr holds <%(0. b1),(0. b1)%> = 0_. b1
proof end;

theorem Th44: :: POLYNOM5:44
for b1 being non empty ZeroStr
for b2 being Element of b1 holds <%b2,(0. b1)%> = <%b2%>
proof end;

theorem Th45: :: POLYNOM5:45
for b1 being non empty unital add-associative right_zeroed right_complementable left-distributive doubleLoopStr
for b2, b3, b4 being Element of b1 holds eval <%b2,b3%>,b4 = b2 + (b3 * b4)
proof end;

theorem Th46: :: POLYNOM5:46
for b1 being non empty unital add-associative right_zeroed right_complementable left-distributive doubleLoopStr
for b2, b3, b4 being Element of b1 holds eval <%b2,(0. b1)%>,b4 = b2
proof end;

theorem Th47: :: POLYNOM5:47
for b1 being non empty unital add-associative right_zeroed right_complementable left-distributive doubleLoopStr
for b2, b3, b4 being Element of b1 holds eval <%(0. b1),b3%>,b4 = b3 * b4
proof end;

theorem Th48: :: POLYNOM5:48
for b1 being non empty unital add-associative right_zeroed right_complementable left-distributive doubleLoopStr
for b2, b3, b4 being Element of b1 holds eval <%b2,(1. b1)%>,b4 = b2 + b4
proof end;

theorem Th49: :: POLYNOM5:49
for b1 being non empty unital add-associative right_zeroed right_complementable left-distributive doubleLoopStr
for b2, b3, b4 being Element of b1 holds eval <%(0. b1),(1. b1)%>,b4 = b4
proof end;

definition
let c1 be non empty commutative Abelian add-associative right_zeroed right_complementable right_unital distributive doubleLoopStr ;
let c2, c3 be Polynomial of c1;
func Subst c2,c3 -> Polynomial of a1 means :Def5: :: POLYNOM5:def 5
ex b1 being FinSequence of the carrier of (Polynom-Ring a1) st
( a4 = Sum b1 & len b1 = len a2 & ( for b2 being Nat st b2 in dom b1 holds
b1 . b2 = (a2 . (b2 -' 1)) * (a3 `^ (b2 -' 1)) ) );
existence
ex b1 being Polynomial of c1ex b2 being FinSequence of the carrier of (Polynom-Ring c1) st
( b1 = Sum b2 & len b2 = len c2 & ( for b3 being Nat st b3 in dom b2 holds
b2 . b3 = (c2 . (b3 -' 1)) * (c3 `^ (b3 -' 1)) ) )
proof end;
uniqueness
for b1, b2 being Polynomial of c1 st ex b3 being FinSequence of the carrier of (Polynom-Ring c1) st
( b1 = Sum b3 & len b3 = len c2 & ( for b4 being Nat st b4 in dom b3 holds
b3 . b4 = (c2 . (b4 -' 1)) * (c3 `^ (b4 -' 1)) ) ) & ex b3 being FinSequence of the carrier of (Polynom-Ring c1) st
( b2 = Sum b3 & len b3 = len c2 & ( for b4 being Nat st b4 in dom b3 holds
b3 . b4 = (c2 . (b4 -' 1)) * (c3 `^ (b4 -' 1)) ) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def5 defines Subst POLYNOM5:def 5 :
for b1 being non empty commutative Abelian add-associative right_zeroed right_complementable right_unital distributive doubleLoopStr
for b2, b3, b4 being Polynomial of b1 holds
( b4 = Subst b2,b3 iff ex b5 being FinSequence of the carrier of (Polynom-Ring b1) st
( b4 = Sum b5 & len b5 = len b2 & ( for b6 being Nat st b6 in dom b5 holds
b5 . b6 = (b2 . (b6 -' 1)) * (b3 `^ (b6 -' 1)) ) ) );

theorem Th50: :: POLYNOM5:50
for b1 being non empty commutative Abelian add-associative right_zeroed right_complementable right_unital distributive doubleLoopStr
for b2 being Polynomial of b1 holds Subst (0_. b1),b2 = 0_. b1
proof end;

theorem Th51: :: POLYNOM5:51
for b1 being non empty commutative Abelian add-associative right_zeroed right_complementable right_unital distributive doubleLoopStr
for b2 being Polynomial of b1 holds Subst b2,(0_. b1) = <%(b2 . 0)%>
proof end;

theorem Th52: :: POLYNOM5:52
for b1 being non empty associative commutative Abelian add-associative right_zeroed right_complementable right_unital distributive Field-like doubleLoopStr
for b2 being Polynomial of b1
for b3 being Element of b1 holds len (Subst b2,<%b3%>) <= 1
proof end;

theorem Th53: :: POLYNOM5:53
for b1 being Field
for b2, b3 being Polynomial of b1 st len b2 <> 0 & len b3 > 1 holds
len (Subst b2,b3) = ((((len b2) * (len b3)) - (len b2)) - (len b3)) + 2
proof end;

theorem Th54: :: POLYNOM5:54
for b1 being Field
for b2, b3 being Polynomial of b1
for b4 being Element of b1 holds eval (Subst b2,b3),b4 = eval b2,(eval b3,b4)
proof end;

definition
let c1 be non empty unital doubleLoopStr ;
let c2 be Polynomial of c1;
let c3 be Element of c1;
pred c3 is_a_root_of c2 means :Def6: :: POLYNOM5:def 6
eval a2,a3 = 0. a1;
end;

:: deftheorem Def6 defines is_a_root_of POLYNOM5:def 6 :
for b1 being non empty unital doubleLoopStr
for b2 being Polynomial of b1
for b3 being Element of b1 holds
( b3 is_a_root_of b2 iff eval b2,b3 = 0. b1 );

definition
let c1 be non empty unital doubleLoopStr ;
let c2 be Polynomial of c1;
attr a2 is with_roots means :Def7: :: POLYNOM5:def 7
ex b1 being Element of a1 st b1 is_a_root_of a2;
end;

:: deftheorem Def7 defines with_roots POLYNOM5:def 7 :
for b1 being non empty unital doubleLoopStr
for b2 being Polynomial of b1 holds
( b2 is with_roots iff ex b3 being Element of b1 st b3 is_a_root_of b2 );

theorem Th55: :: POLYNOM5:55
for b1 being non empty unital doubleLoopStr holds 0_. b1 is with_roots
proof end;

registration
let c1 be non empty unital doubleLoopStr ;
cluster 0_. a1 -> with_roots ;
coherence
0_. c1 is with_roots
by Th55;
end;

theorem Th56: :: POLYNOM5:56
for b1 being non empty unital doubleLoopStr
for b2 being Element of b1 holds b2 is_a_root_of 0_. b1
proof end;

registration
let c1 be non empty unital doubleLoopStr ;
cluster with_roots M5( NAT ,the carrier of a1);
existence
ex b1 being Polynomial of c1 st b1 is with_roots
proof end;
end;

definition
let c1 be non empty unital doubleLoopStr ;
attr a1 is algebraic-closed means :Def8: :: POLYNOM5:def 8
for b1 being Polynomial of a1 st len b1 > 1 holds
b1 is with_roots;
end;

:: deftheorem Def8 defines algebraic-closed POLYNOM5:def 8 :
for b1 being non empty unital doubleLoopStr holds
( b1 is algebraic-closed iff for b2 being Polynomial of b1 st len b2 > 1 holds
b2 is with_roots );

definition
let c1 be non empty unital doubleLoopStr ;
let c2 be Polynomial of c1;
func Roots c2 -> Subset of a1 means :Def9: :: POLYNOM5:def 9
for b1 being Element of a1 holds
( b1 in a3 iff b1 is_a_root_of a2 );
existence
ex b1 being Subset of c1 st
for b2 being Element of c1 holds
( b2 in b1 iff b2 is_a_root_of c2 )
proof end;
uniqueness
for b1, b2 being Subset of c1 st ( for b3 being Element of c1 holds
( b3 in b1 iff b3 is_a_root_of c2 ) ) & ( for b3 being Element of c1 holds
( b3 in b2 iff b3 is_a_root_of c2 ) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def9 defines Roots POLYNOM5:def 9 :
for b1 being non empty unital doubleLoopStr
for b2 being Polynomial of b1
for b3 being Subset of b1 holds
( b3 = Roots b2 iff for b4 being Element of b1 holds
( b4 in b3 iff b4 is_a_root_of b2 ) );

definition
let c1 be non empty associative commutative distributive left_unital Field-like doubleLoopStr ;
let c2 be Polynomial of c1;
func NormPolynomial c2 -> sequence of a1 means :Def10: :: POLYNOM5:def 10
for b1 being Nat holds a3 . b1 = (a2 . b1) / (a2 . ((len a2) -' 1));
existence
ex b1 being sequence of c1 st
for b2 being Nat holds b1 . b2 = (c2 . b2) / (c2 . ((len c2) -' 1))
proof end;
uniqueness
for b1, b2 being sequence of c1 st ( for b3 being Nat holds b1 . b3 = (c2 . b3) / (c2 . ((len c2) -' 1)) ) & ( for b3 being Nat holds b2 . b3 = (c2 . b3) / (c2 . ((len c2) -' 1)) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def10 defines NormPolynomial POLYNOM5:def 10 :
for b1 being non empty associative commutative distributive left_unital Field-like doubleLoopStr
for b2 being Polynomial of b1
for b3 being sequence of b1 holds
( b3 = NormPolynomial b2 iff for b4 being Nat holds b3 . b4 = (b2 . b4) / (b2 . ((len b2) -' 1)) );

registration
let c1 be non empty associative commutative add-associative right_zeroed right_complementable distributive left_unital Field-like doubleLoopStr ;
let c2 be Polynomial of c1;
cluster NormPolynomial a2 -> finite-Support ;
coherence
NormPolynomial c2 is finite-Support
proof end;
end;

theorem Th57: :: POLYNOM5:57
for b1 being non empty associative commutative distributive left_unital Field-like doubleLoopStr
for b2 being Polynomial of b1 st len b2 <> 0 holds
(NormPolynomial b2) . ((len b2) -' 1) = 1. b1
proof end;

theorem Th58: :: POLYNOM5:58
for b1 being Field
for b2 being Polynomial of b1 st len b2 <> 0 holds
len (NormPolynomial b2) = len b2
proof end;

theorem Th59: :: POLYNOM5:59
for b1 being Field
for b2 being Polynomial of b1 st len b2 <> 0 holds
for b3 being Element of b1 holds eval (NormPolynomial b2),b3 = (eval b2,b3) / (b2 . ((len b2) -' 1))
proof end;

theorem Th60: :: POLYNOM5:60
for b1 being Field
for b2 being Polynomial of b1 st len b2 <> 0 holds
for b3 being Element of b1 holds
( b3 is_a_root_of b2 iff b3 is_a_root_of NormPolynomial b2 )
proof end;

theorem Th61: :: POLYNOM5:61
for b1 being Field
for b2 being Polynomial of b1 st len b2 <> 0 holds
( b2 is with_roots iff NormPolynomial b2 is with_roots )
proof end;

theorem Th62: :: POLYNOM5:62
for b1 being Field
for b2 being Polynomial of b1 st len b2 <> 0 holds
Roots b2 = Roots (NormPolynomial b2)
proof end;

theorem Th63: :: POLYNOM5:63
id COMPLEX is_continuous_on COMPLEX
proof end;

theorem Th64: :: POLYNOM5:64
for b1 being Element of COMPLEX holds COMPLEX --> b1 is_continuous_on COMPLEX
proof end;

definition
let c1 be non empty unital HGrStr ;
let c2 be Element of c1;
let c3 be Nat;
func FPower c2,c3 -> Function of a1,a1 means :Def11: :: POLYNOM5:def 11
for b1 being Element of a1 holds a4 . b1 = a2 * ((power a1) . b1,a3);
existence
ex b1 being Function of c1,c1 st
for b2 being Element of c1 holds b1 . b2 = c2 * ((power c1) . b2,c3)
proof end;
uniqueness
for b1, b2 being Function of c1,c1 st ( for b3 being Element of c1 holds b1 . b3 = c2 * ((power c1) . b3,c3) ) & ( for b3 being Element of c1 holds b2 . b3 = c2 * ((power c1) . b3,c3) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def11 defines FPower POLYNOM5:def 11 :
for b1 being non empty unital HGrStr
for b2 being Element of b1
for b3 being Nat
for b4 being Function of b1,b1 holds
( b4 = FPower b2,b3 iff for b5 being Element of b1 holds b4 . b5 = b2 * ((power b1) . b5,b3) );

theorem Th65: :: POLYNOM5:65
for b1 being non empty unital HGrStr holds FPower (1. b1),1 = id the carrier of b1
proof end;

theorem Th66: :: POLYNOM5:66
FPower (1. F_Complex ),2 = (id COMPLEX ) (#) (id COMPLEX )
proof end;

theorem Th67: :: POLYNOM5:67
for b1 being non empty unital HGrStr
for b2 being Element of b1 holds FPower b2,0 = the carrier of b1 --> b2
proof end;

theorem Th68: :: POLYNOM5:68
for b1 being Element of F_Complex ex b2 being Element of COMPLEX st
( b1 = b2 & FPower b1,1 = b2 (#) (id COMPLEX ) )
proof end;

theorem Th69: :: POLYNOM5:69
for b1 being Element of F_Complex ex b2 being Element of COMPLEX st
( b1 = b2 & FPower b1,2 = b2 (#) ((id COMPLEX ) (#) (id COMPLEX )) )
proof end;

theorem Th70: :: POLYNOM5:70
for b1 being Element of F_Complex
for b2 being Nat ex b3 being Function of COMPLEX , COMPLEX st
( b3 = FPower b1,b2 & FPower b1,(b2 + 1) = b3 (#) (id COMPLEX ) )
proof end;

theorem Th71: :: POLYNOM5:71
for b1 being Element of F_Complex
for b2 being Nat ex b3 being Function of COMPLEX , COMPLEX st
( b3 = FPower b1,b2 & b3 is_continuous_on COMPLEX )
proof end;

definition
let c1 be non empty unital doubleLoopStr ;
let c2 be Polynomial of c1;
func Polynomial-Function c1,c2 -> Function of a1,a1 means :Def12: :: POLYNOM5:def 12
for b1 being Element of a1 holds a3 . b1 = eval a2,b1;
existence
ex b1 being Function of c1,c1 st
for b2 being Element of c1 holds b1 . b2 = eval c2,b2
proof end;
uniqueness
for b1, b2 being Function of c1,c1 st ( for b3 being Element of c1 holds b1 . b3 = eval c2,b3 ) & ( for b3 being Element of c1 holds b2 . b3 = eval c2,b3 ) holds
b1 = b2
proof end;
end;

:: deftheorem Def12 defines Polynomial-Function POLYNOM5:def 12 :
for b1 being non empty unital doubleLoopStr
for b2 being Polynomial of b1
for b3 being Function of b1,b1 holds
( b3 = Polynomial-Function b1,b2 iff for b4 being Element of b1 holds b3 . b4 = eval b2,b4 );

theorem Th72: :: POLYNOM5:72
for b1 being Polynomial of F_Complex ex b2 being Function of COMPLEX , COMPLEX st
( b2 = Polynomial-Function F_Complex ,b1 & b2 is_continuous_on COMPLEX )
proof end;

theorem Th73: :: POLYNOM5:73
for b1 being Polynomial of F_Complex st len b1 > 2 & |.(b1 . ((len b1) -' 1)).| = 1 holds
for b2 being FinSequence of REAL st len b2 = len b1 & ( for b3 being Nat st b3 in dom b2 holds
b2 . b3 = |.(b1 . (b3 -' 1)).| ) holds
for b3 being Element of F_Complex st |.b3.| > Sum b2 holds
|.(eval b1,b3).| > |.(b1 . 0).| + 1
proof end;

theorem Th74: :: POLYNOM5:74
for b1 being Polynomial of F_Complex st len b1 > 2 holds
ex b2 being Element of F_Complex st
for b3 being Element of F_Complex holds |.(eval b1,b3).| >= |.(eval b1,b2).|
proof end;

theorem Th75: :: POLYNOM5:75
for b1 being Polynomial of F_Complex st len b1 > 1 holds
b1 is with_roots
proof end;

registration
cluster F_Complex -> algebraic-closed ;
coherence
F_Complex is algebraic-closed
by Def8, Th75;
end;

registration
cluster non empty associative commutative Abelian add-associative right_zeroed right_complementable right_unital distributive left_unital Field-like non degenerated algebraic-closed doubleLoopStr ;
existence
ex b1 being non empty right_unital left_unital doubleLoopStr st
( b1 is algebraic-closed & b1 is add-associative & b1 is right_zeroed & b1 is right_complementable & b1 is Abelian & b1 is commutative & b1 is associative & b1 is distributive & b1 is Field-like & not b1 is degenerated )
proof end;
end;