begin
Lm1:
for j being Integer holds
( j >= 0 or j = - 1 or j < - 1 )
Lm2:
for j being Integer holds
( j >= 1 or j = 0 or j < 0 )
theorem Th1:
theorem Th2:
theorem Th3:
theorem Th4:
theorem Th5:
:: deftheorem defines emb POLYNOM8:def 1 :
for L being non empty well-unital doubleLoopStr
for m being Element of NAT holds emb (m,L) = m * (1. L);
theorem Th6:
theorem Th7:
theorem Th8:
theorem Th9:
theorem Th10:
begin
:: deftheorem Def2 defines * POLYNOM8:def 2 :
for L being non empty doubleLoopStr
for m1, m2, b4 being sequence of L holds
( b4 = m1 * m2 iff for i being Nat holds b4 . i = (m1 . i) * (m2 . i) );
theorem Th11:
theorem
begin
:: deftheorem Def3 defines pow POLYNOM8:def 3 :
for L being non empty almost_left_invertible associative commutative well-unital distributive doubleLoopStr
for a being Element of L
for i being Integer holds
( ( 0 <= i implies pow (a,i) = (power L) . (a,i) ) & ( not 0 <= i implies pow (a,i) = ((power L) . (a,(abs i))) " ) );
theorem Th13:
Lm3:
for L being non empty almost_left_invertible associative commutative well-unital distributive doubleLoopStr
for a being Element of L
for i being Integer st 0 > i holds
pow (a,i) = (pow (a,(abs i))) "
Lm4:
for L being non empty non degenerated almost_left_invertible associative commutative well-unital distributive doubleLoopStr
for i being Integer
for x being Element of L st i <= 0 holds
pow (x,i) = (pow (x,(abs i))) "
theorem Th14:
theorem Th15:
Lm5:
for L being non empty almost_left_invertible associative commutative well-unital distributive doubleLoopStr
for i being Element of NAT holds pow ((1. L),i) = 1. L
theorem Th16:
theorem Th17:
Lm6:
for L being non empty well-unital doubleLoopStr
for n being Element of NAT holds (1. L) |^ n = 1. L
Lm7:
for L being non empty almost_left_invertible associative commutative well-unital distributive doubleLoopStr
for m being Element of NAT
for x being Element of L st x <> 0. L holds
(x |^ m) * ((x ") |^ m) = 1. L
theorem Th18:
theorem Th19:
theorem Th20:
theorem Th21:
Lm8:
for L being non empty non degenerated right_complementable almost_left_invertible associative commutative left-distributive well-unital add-associative right_zeroed doubleLoopStr
for k being Element of NAT
for x being Element of L st x <> 0. L holds
(x ") |^ k = (x |^ k) "
theorem Th22:
theorem Th23:
theorem Th24:
Lm9:
for L being non empty non degenerated right_complementable almost_left_invertible associative commutative well-unital distributive add-associative right_zeroed doubleLoopStr
for x being Element of L st x <> 0. L holds
for n being Element of NAT holds pow ((x "),n) = (pow (x,n)) "
theorem Th25:
theorem Th26:
theorem Th27:
Lm10:
for L being non empty almost_left_invertible associative commutative well-unital distributive doubleLoopStr
for x being Element of L
for m being Element of NAT st x <> 0. L & x |^ m = 1. L holds
(x ") |^ m = 1. L
Lm11:
for L being non empty non degenerated almost_left_invertible associative commutative well-unital distributive doubleLoopStr
for x being Element of L
for i being Element of NAT st x <> 0. L & (x ") |^ i = 1. L holds
x |^ i = 1. L
begin
definition
let m be
Nat;
let L be non
empty ZeroStr ;
let p be
AlgSequence of
L;
func mConv (
p,
m)
-> Matrix of
m,1,
L means :
Def4:
for
i being
Nat st 1
<= i &
i <= m holds
it * (
i,1)
= p . (i - 1);
existence
ex b1 being Matrix of m,1,L st
for i being Nat st 1 <= i & i <= m holds
b1 * (i,1) = p . (i - 1)
uniqueness
for b1, b2 being Matrix of m,1,L st ( for i being Nat st 1 <= i & i <= m holds
b1 * (i,1) = p . (i - 1) ) & ( for i being Nat st 1 <= i & i <= m holds
b2 * (i,1) = p . (i - 1) ) holds
b1 = b2
end;
:: deftheorem Def4 defines mConv POLYNOM8:def 4 :
for m being Nat
for L being non empty ZeroStr
for p being AlgSequence of L
for b4 being Matrix of m,1,L holds
( b4 = mConv (p,m) iff for i being Nat st 1 <= i & i <= m holds
b4 * (i,1) = p . (i - 1) );
theorem Th28:
theorem Th29:
:: deftheorem Def5 defines aConv POLYNOM8:def 5 :
for L being non empty ZeroStr
for M being Matrix of L
for b3 being AlgSequence of L holds
( b3 = aConv M iff ( ( for i being Nat st i < len M holds
b3 . i = M * ((i + 1),1) ) & ( for i being Nat st i >= len M holds
b3 . i = 0. L ) ) );
begin
:: deftheorem Def6 defines is_primitive_root_of_degree POLYNOM8:def 6 :
for L being non empty well-unital doubleLoopStr
for x being Element of L
for n being Element of NAT holds
( x is_primitive_root_of_degree n iff ( n <> 0 & x |^ n = 1. L & ( for i being Element of NAT st 0 < i & i < n holds
x |^ i <> 1. L ) ) );
theorem Th30:
theorem Th31:
theorem Th32:
:: deftheorem Def7 defines DFT POLYNOM8:def 7 :
for m being Nat
for L being non empty well-unital doubleLoopStr
for p being Polynomial of L
for x being Element of L
for b5 being AlgSequence of L holds
( b5 = DFT (p,x,m) iff ( ( for i being Nat st i < m holds
b5 . i = eval (p,(x |^ i)) ) & ( for i being Nat st i >= m holds
b5 . i = 0. L ) ) );
theorem Th33:
theorem Th34:
definition
let L be non
empty almost_left_invertible associative commutative well-unital distributive doubleLoopStr ;
let m be
Nat;
let x be
Element of
L;
func Vandermonde (
x,
m)
-> Matrix of
m,
L means :
Def8:
for
i,
j being
Nat st 1
<= i &
i <= m & 1
<= j &
j <= m holds
it * (
i,
j)
= pow (
x,
((i - 1) * (j - 1)));
existence
ex b1 being Matrix of m,L st
for i, j being Nat st 1 <= i & i <= m & 1 <= j & j <= m holds
b1 * (i,j) = pow (x,((i - 1) * (j - 1)))
uniqueness
for b1, b2 being Matrix of m,L st ( for i, j being Nat st 1 <= i & i <= m & 1 <= j & j <= m holds
b1 * (i,j) = pow (x,((i - 1) * (j - 1))) ) & ( for i, j being Nat st 1 <= i & i <= m & 1 <= j & j <= m holds
b2 * (i,j) = pow (x,((i - 1) * (j - 1))) ) holds
b1 = b2
end;
:: deftheorem Def8 defines Vandermonde POLYNOM8:def 8 :
for L being non empty almost_left_invertible associative commutative well-unital distributive doubleLoopStr
for m being Nat
for x being Element of L
for b4 being Matrix of m,L holds
( b4 = Vandermonde (x,m) iff for i, j being Nat st 1 <= i & i <= m & 1 <= j & j <= m holds
b4 * (i,j) = pow (x,((i - 1) * (j - 1))) );
theorem Th35:
for
L being
Field for
m,
n being
Nat st
m > 0 holds
for
M being
Matrix of
m,
n,
L holds
(1. (L,m)) * M = M
theorem Th36:
Lm12:
for L being Field
for m being Element of NAT st m > 0 holds
for p, q being Polynomial of L holds (emb ((2 * m),L)) * ((1. (L,(2 * m))) * (mConv ((p *' q),(2 * m)))) = (emb ((2 * m),L)) * (mConv ((p *' q),(2 * m)))
theorem Th37:
theorem Th38:
theorem Th39:
theorem Th40:
begin
theorem Th41:
theorem Th42:
theorem Th43:
theorem