:: SIN_COS semantic presentation

definition
let c1, c2 be Nat;
canceled;
func CHK c1,c2 -> Element of COMPLEX equals :Def2: :: SIN_COS:def 2
1 if a1 <= a2
otherwise 0;
correctness
coherence
( ( c1 <= c2 implies 1 is Element of COMPLEX ) & ( not c1 <= c2 implies 0 is Element of COMPLEX ) )
;
consistency
for b1 being Element of COMPLEX holds verum
;
by COMPLEX1:def 6, COMPLEX1:def 7;
end;

:: deftheorem Def1 SIN_COS:def 1 :
canceled;

:: deftheorem Def2 defines CHK SIN_COS:def 2 :
for b1, b2 being Nat holds
( ( b1 <= b2 implies CHK b1,b2 = 1 ) & ( not b1 <= b2 implies CHK b1,b2 = 0 ) );

registration
let c1, c2 be Nat;
cluster CHK a1,a2 -> real ;
coherence
CHK c1,c2 is real
proof end;
end;

scheme :: SIN_COS:sch 1
s1{ F1( Nat, Nat) -> Element of COMPLEX } :
for b1 being Nat ex b2 being Complex_Sequence st
for b3 being Nat holds
( ( b3 <= b1 implies b2 . b3 = F1(b1,b3) ) & ( b3 > b1 implies b2 . b3 = 0 ) )
proof end;

scheme :: SIN_COS:sch 2
s2{ F1( Nat, Nat) -> real number } :
for b1 being Nat ex b2 being Real_Sequence st
for b3 being Nat holds
( ( b3 <= b1 implies b2 . b3 = F1(b1,b3) ) & ( b3 > b1 implies b2 . b3 = 0 ) )
proof end;

definition
canceled;
func Prod_complex_n -> Complex_Sequence means :Def4: :: SIN_COS:def 4
( a1 . 0 = 1 & ( for b1 being Nat holds a1 . (b1 + 1) = (a1 . b1) * (b1 + 1) ) );
existence
ex b1 being Complex_Sequence st
( b1 . 0 = 1 & ( for b2 being Nat holds b1 . (b2 + 1) = (b1 . b2) * (b2 + 1) ) )
proof end;
uniqueness
for b1, b2 being Complex_Sequence st b1 . 0 = 1 & ( for b3 being Nat holds b1 . (b3 + 1) = (b1 . b3) * (b3 + 1) ) & b2 . 0 = 1 & ( for b3 being Nat holds b2 . (b3 + 1) = (b2 . b3) * (b3 + 1) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def3 SIN_COS:def 3 :
canceled;

:: deftheorem Def4 defines Prod_complex_n SIN_COS:def 4 :
for b1 being Complex_Sequence holds
( b1 = Prod_complex_n iff ( b1 . 0 = 1 & ( for b2 being Nat holds b1 . (b2 + 1) = (b1 . b2) * (b2 + 1) ) ) );

definition
func Prod_real_n -> Real_Sequence means :Def5: :: SIN_COS:def 5
( a1 . 0 = 1 & ( for b1 being Nat holds a1 . (b1 + 1) = (a1 . b1) * (b1 + 1) ) );
existence
ex b1 being Real_Sequence st
( b1 . 0 = 1 & ( for b2 being Nat holds b1 . (b2 + 1) = (b1 . b2) * (b2 + 1) ) )
proof end;
uniqueness
for b1, b2 being Real_Sequence st b1 . 0 = 1 & ( for b3 being Nat holds b1 . (b3 + 1) = (b1 . b3) * (b3 + 1) ) & b2 . 0 = 1 & ( for b3 being Nat holds b2 . (b3 + 1) = (b2 . b3) * (b3 + 1) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def5 defines Prod_real_n SIN_COS:def 5 :
for b1 being Real_Sequence holds
( b1 = Prod_real_n iff ( b1 . 0 = 1 & ( for b2 being Nat holds b1 . (b2 + 1) = (b1 . b2) * (b2 + 1) ) ) );

definition
let c1 be Nat;
func c1 !c -> Element of COMPLEX equals :: SIN_COS:def 6
Prod_complex_n . a1;
coherence
Prod_complex_n . c1 is Element of COMPLEX
;
end;

:: deftheorem Def6 defines !c SIN_COS:def 6 :
for b1 being Nat holds b1 !c = Prod_complex_n . b1;

definition
let c1 be Nat;
redefine func ! as c1 ! -> Real equals :: SIN_COS:def 7
Prod_real_n . a1;
coherence
c1 ! is Real
by XREAL_0:def 1;
compatibility
for b1 being Real holds
( b1 = c1 ! iff b1 = Prod_real_n . c1 )
proof end;
end;

:: deftheorem Def7 defines ! SIN_COS:def 7 :
for b1 being Nat holds b1 ! = Prod_real_n . b1;

definition
let c1 be Element of COMPLEX ;
deffunc H1( Nat) -> Element of COMPLEX = (c1 #N a1) / (a1 !c );
func c1 ExpSeq -> Complex_Sequence means :Def8: :: SIN_COS:def 8
for b1 being Nat holds a2 . b1 = (a1 #N b1) / (b1 !c );
existence
ex b1 being Complex_Sequence st
for b2 being Nat holds b1 . b2 = (c1 #N b2) / (b2 !c )
proof end;
uniqueness
for b1, b2 being Complex_Sequence st ( for b3 being Nat holds b1 . b3 = (c1 #N b3) / (b3 !c ) ) & ( for b3 being Nat holds b2 . b3 = (c1 #N b3) / (b3 !c ) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def8 defines ExpSeq SIN_COS:def 8 :
for b1 being Element of COMPLEX
for b2 being Complex_Sequence holds
( b2 = b1 ExpSeq iff for b3 being Nat holds b2 . b3 = (b1 #N b3) / (b3 !c ) );

definition
let c1 be real number ;
deffunc H1( Nat) -> set = (c1 |^ a1) / (a1 ! );
func c1 ExpSeq -> Real_Sequence means :Def9: :: SIN_COS:def 9
for b1 being Nat holds a2 . b1 = (a1 |^ b1) / (b1 ! );
existence
ex b1 being Real_Sequence st
for b2 being Nat holds b1 . b2 = (c1 |^ b2) / (b2 ! )
proof end;
uniqueness
for b1, b2 being Real_Sequence st ( for b3 being Nat holds b1 . b3 = (c1 |^ b3) / (b3 ! ) ) & ( for b3 being Nat holds b2 . b3 = (c1 |^ b3) / (b3 ! ) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def9 defines ExpSeq SIN_COS:def 9 :
for b1 being real number
for b2 being Real_Sequence holds
( b2 = b1 ExpSeq iff for b3 being Nat holds b2 . b3 = (b1 |^ b3) / (b3 ! ) );

theorem Th1: :: SIN_COS:1
for b1 being Nat holds
( 0 !c = 1 & b1 !c <> 0 & (b1 + 1) !c = (b1 !c ) * (b1 + 1) )
proof end;

theorem Th2: :: SIN_COS:2
for b1 being Nat holds
( b1 ! <> 0 & (b1 + 1) ! = (b1 ! ) * (b1 + 1) ) by NEWTON:21, NEWTON:23;

theorem Th3: :: SIN_COS:3
( ( for b1 being Nat st 0 < b1 holds
((b1 -' 1) !c ) * b1 = b1 !c ) & ( for b1, b2 being Nat st b2 <= b1 holds
((b1 -' b2) !c ) * ((b1 + 1) - b2) = ((b1 + 1) -' b2) !c ) )
proof end;

definition
let c1 be Nat;
func Coef c1 -> Complex_Sequence means :Def10: :: SIN_COS:def 10
for b1 being Nat holds
( ( b1 <= a1 implies a2 . b1 = (a1 !c ) / ((b1 !c ) * ((a1 -' b1) !c )) ) & ( b1 > a1 implies a2 . b1 = 0 ) );
existence
ex b1 being Complex_Sequence st
for b2 being Nat holds
( ( b2 <= c1 implies b1 . b2 = (c1 !c ) / ((b2 !c ) * ((c1 -' b2) !c )) ) & ( b2 > c1 implies b1 . b2 = 0 ) )
proof end;
uniqueness
for b1, b2 being Complex_Sequence st ( for b3 being Nat holds
( ( b3 <= c1 implies b1 . b3 = (c1 !c ) / ((b3 !c ) * ((c1 -' b3) !c )) ) & ( b3 > c1 implies b1 . b3 = 0 ) ) ) & ( for b3 being Nat holds
( ( b3 <= c1 implies b2 . b3 = (c1 !c ) / ((b3 !c ) * ((c1 -' b3) !c )) ) & ( b3 > c1 implies b2 . b3 = 0 ) ) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def10 defines Coef SIN_COS:def 10 :
for b1 being Nat
for b2 being Complex_Sequence holds
( b2 = Coef b1 iff for b3 being Nat holds
( ( b3 <= b1 implies b2 . b3 = (b1 !c ) / ((b3 !c ) * ((b1 -' b3) !c )) ) & ( b3 > b1 implies b2 . b3 = 0 ) ) );

definition
let c1 be Nat;
func Coef_e c1 -> Complex_Sequence means :Def11: :: SIN_COS:def 11
for b1 being Nat holds
( ( b1 <= a1 implies a2 . b1 = 1r / ((b1 !c ) * ((a1 -' b1) !c )) ) & ( b1 > a1 implies a2 . b1 = 0 ) );
existence
ex b1 being Complex_Sequence st
for b2 being Nat holds
( ( b2 <= c1 implies b1 . b2 = 1r / ((b2 !c ) * ((c1 -' b2) !c )) ) & ( b2 > c1 implies b1 . b2 = 0 ) )
proof end;
uniqueness
for b1, b2 being Complex_Sequence st ( for b3 being Nat holds
( ( b3 <= c1 implies b1 . b3 = 1r / ((b3 !c ) * ((c1 -' b3) !c )) ) & ( b3 > c1 implies b1 . b3 = 0 ) ) ) & ( for b3 being Nat holds
( ( b3 <= c1 implies b2 . b3 = 1r / ((b3 !c ) * ((c1 -' b3) !c )) ) & ( b3 > c1 implies b2 . b3 = 0 ) ) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def11 defines Coef_e SIN_COS:def 11 :
for b1 being Nat
for b2 being Complex_Sequence holds
( b2 = Coef_e b1 iff for b3 being Nat holds
( ( b3 <= b1 implies b2 . b3 = 1r / ((b3 !c ) * ((b1 -' b3) !c )) ) & ( b3 > b1 implies b2 . b3 = 0 ) ) );

definition
let c1 be Complex_Sequence;
func Sift c1 -> Complex_Sequence means :Def12: :: SIN_COS:def 12
( a2 . 0 = 0 & ( for b1 being Nat holds a2 . (b1 + 1) = a1 . b1 ) );
existence
ex b1 being Complex_Sequence st
( b1 . 0 = 0 & ( for b2 being Nat holds b1 . (b2 + 1) = c1 . b2 ) )
proof end;
uniqueness
for b1, b2 being Complex_Sequence st b1 . 0 = 0 & ( for b3 being Nat holds b1 . (b3 + 1) = c1 . b3 ) & b2 . 0 = 0 & ( for b3 being Nat holds b2 . (b3 + 1) = c1 . b3 ) holds
b1 = b2
proof end;
end;

:: deftheorem Def12 defines Sift SIN_COS:def 12 :
for b1, b2 being Complex_Sequence holds
( b2 = Sift b1 iff ( b2 . 0 = 0 & ( for b3 being Nat holds b2 . (b3 + 1) = b1 . b3 ) ) );

definition
let c1 be Nat;
let c2, c3 be Element of COMPLEX ;
func Expan c1,c2,c3 -> Complex_Sequence means :Def13: :: SIN_COS:def 13
for b1 being Nat holds
( ( b1 <= a1 implies a4 . b1 = (((Coef a1) . b1) * (a2 #N b1)) * (a3 #N (a1 -' b1)) ) & ( a1 < b1 implies a4 . b1 = 0 ) );
existence
ex b1 being Complex_Sequence st
for b2 being Nat holds
( ( b2 <= c1 implies b1 . b2 = (((Coef c1) . b2) * (c2 #N b2)) * (c3 #N (c1 -' b2)) ) & ( c1 < b2 implies b1 . b2 = 0 ) )
proof end;
uniqueness
for b1, b2 being Complex_Sequence st ( for b3 being Nat holds
( ( b3 <= c1 implies b1 . b3 = (((Coef c1) . b3) * (c2 #N b3)) * (c3 #N (c1 -' b3)) ) & ( c1 < b3 implies b1 . b3 = 0 ) ) ) & ( for b3 being Nat holds
( ( b3 <= c1 implies b2 . b3 = (((Coef c1) . b3) * (c2 #N b3)) * (c3 #N (c1 -' b3)) ) & ( c1 < b3 implies b2 . b3 = 0 ) ) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def13 defines Expan SIN_COS:def 13 :
for b1 being Nat
for b2, b3 being Element of COMPLEX
for b4 being Complex_Sequence holds
( b4 = Expan b1,b2,b3 iff for b5 being Nat holds
( ( b5 <= b1 implies b4 . b5 = (((Coef b1) . b5) * (b2 #N b5)) * (b3 #N (b1 -' b5)) ) & ( b1 < b5 implies b4 . b5 = 0 ) ) );

definition
let c1 be Nat;
let c2, c3 be Element of COMPLEX ;
func Expan_e c1,c2,c3 -> Complex_Sequence means :Def14: :: SIN_COS:def 14
for b1 being Nat holds
( ( b1 <= a1 implies a4 . b1 = (((Coef_e a1) . b1) * (a2 #N b1)) * (a3 #N (a1 -' b1)) ) & ( a1 < b1 implies a4 . b1 = 0 ) );
existence
ex b1 being Complex_Sequence st
for b2 being Nat holds
( ( b2 <= c1 implies b1 . b2 = (((Coef_e c1) . b2) * (c2 #N b2)) * (c3 #N (c1 -' b2)) ) & ( c1 < b2 implies b1 . b2 = 0 ) )
proof end;
uniqueness
for b1, b2 being Complex_Sequence st ( for b3 being Nat holds
( ( b3 <= c1 implies b1 . b3 = (((Coef_e c1) . b3) * (c2 #N b3)) * (c3 #N (c1 -' b3)) ) & ( c1 < b3 implies b1 . b3 = 0 ) ) ) & ( for b3 being Nat holds
( ( b3 <= c1 implies b2 . b3 = (((Coef_e c1) . b3) * (c2 #N b3)) * (c3 #N (c1 -' b3)) ) & ( c1 < b3 implies b2 . b3 = 0 ) ) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def14 defines Expan_e SIN_COS:def 14 :
for b1 being Nat
for b2, b3 being Element of COMPLEX
for b4 being Complex_Sequence holds
( b4 = Expan_e b1,b2,b3 iff for b5 being Nat holds
( ( b5 <= b1 implies b4 . b5 = (((Coef_e b1) . b5) * (b2 #N b5)) * (b3 #N (b1 -' b5)) ) & ( b1 < b5 implies b4 . b5 = 0 ) ) );

definition
let c1 be Nat;
let c2, c3 be Element of COMPLEX ;
func Alfa c1,c2,c3 -> Complex_Sequence means :Def15: :: SIN_COS:def 15
for b1 being Nat holds
( ( b1 <= a1 implies a4 . b1 = ((a2 ExpSeq ) . b1) * ((Partial_Sums (a3 ExpSeq )) . (a1 -' b1)) ) & ( a1 < b1 implies a4 . b1 = 0 ) );
existence
ex b1 being Complex_Sequence st
for b2 being Nat holds
( ( b2 <= c1 implies b1 . b2 = ((c2 ExpSeq ) . b2) * ((Partial_Sums (c3 ExpSeq )) . (c1 -' b2)) ) & ( c1 < b2 implies b1 . b2 = 0 ) )
proof end;
uniqueness
for b1, b2 being Complex_Sequence st ( for b3 being Nat holds
( ( b3 <= c1 implies b1 . b3 = ((c2 ExpSeq ) . b3) * ((Partial_Sums (c3 ExpSeq )) . (c1 -' b3)) ) & ( c1 < b3 implies b1 . b3 = 0 ) ) ) & ( for b3 being Nat holds
( ( b3 <= c1 implies b2 . b3 = ((c2 ExpSeq ) . b3) * ((Partial_Sums (c3 ExpSeq )) . (c1 -' b3)) ) & ( c1 < b3 implies b2 . b3 = 0 ) ) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def15 defines Alfa SIN_COS:def 15 :
for b1 being Nat
for b2, b3 being Element of COMPLEX
for b4 being Complex_Sequence holds
( b4 = Alfa b1,b2,b3 iff for b5 being Nat holds
( ( b5 <= b1 implies b4 . b5 = ((b2 ExpSeq ) . b5) * ((Partial_Sums (b3 ExpSeq )) . (b1 -' b5)) ) & ( b1 < b5 implies b4 . b5 = 0 ) ) );

definition
let c1, c2 be real number ;
let c3 be Nat;
func Conj c3,c1,c2 -> Real_Sequence means :: SIN_COS:def 16
for b1 being Nat holds
( ( b1 <= a3 implies a4 . b1 = ((a1 ExpSeq ) . b1) * (((Partial_Sums (a2 ExpSeq )) . a3) - ((Partial_Sums (a2 ExpSeq )) . (a3 -' b1))) ) & ( a3 < b1 implies a4 . b1 = 0 ) );
existence
ex b1 being Real_Sequence st
for b2 being Nat holds
( ( b2 <= c3 implies b1 . b2 = ((c1 ExpSeq ) . b2) * (((Partial_Sums (c2 ExpSeq )) . c3) - ((Partial_Sums (c2 ExpSeq )) . (c3 -' b2))) ) & ( c3 < b2 implies b1 . b2 = 0 ) )
proof end;
uniqueness
for b1, b2 being Real_Sequence st ( for b3 being Nat holds
( ( b3 <= c3 implies b1 . b3 = ((c1 ExpSeq ) . b3) * (((Partial_Sums (c2 ExpSeq )) . c3) - ((Partial_Sums (c2 ExpSeq )) . (c3 -' b3))) ) & ( c3 < b3 implies b1 . b3 = 0 ) ) ) & ( for b3 being Nat holds
( ( b3 <= c3 implies b2 . b3 = ((c1 ExpSeq ) . b3) * (((Partial_Sums (c2 ExpSeq )) . c3) - ((Partial_Sums (c2 ExpSeq )) . (c3 -' b3))) ) & ( c3 < b3 implies b2 . b3 = 0 ) ) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def16 defines Conj SIN_COS:def 16 :
for b1, b2 being real number
for b3 being Nat
for b4 being Real_Sequence holds
( b4 = Conj b3,b1,b2 iff for b5 being Nat holds
( ( b5 <= b3 implies b4 . b5 = ((b1 ExpSeq ) . b5) * (((Partial_Sums (b2 ExpSeq )) . b3) - ((Partial_Sums (b2 ExpSeq )) . (b3 -' b5))) ) & ( b3 < b5 implies b4 . b5 = 0 ) ) );

definition
let c1, c2 be Element of COMPLEX ;
let c3 be Nat;
func Conj c3,c1,c2 -> Complex_Sequence means :Def17: :: SIN_COS:def 17
for b1 being Nat holds
( ( b1 <= a3 implies a4 . b1 = ((a1 ExpSeq ) . b1) * (((Partial_Sums (a2 ExpSeq )) . a3) - ((Partial_Sums (a2 ExpSeq )) . (a3 -' b1))) ) & ( a3 < b1 implies a4 . b1 = 0 ) );
existence
ex b1 being Complex_Sequence st
for b2 being Nat holds
( ( b2 <= c3 implies b1 . b2 = ((c1 ExpSeq ) . b2) * (((Partial_Sums (c2 ExpSeq )) . c3) - ((Partial_Sums (c2 ExpSeq )) . (c3 -' b2))) ) & ( c3 < b2 implies b1 . b2 = 0 ) )
proof end;
uniqueness
for b1, b2 being Complex_Sequence st ( for b3 being Nat holds
( ( b3 <= c3 implies b1 . b3 = ((c1 ExpSeq ) . b3) * (((Partial_Sums (c2 ExpSeq )) . c3) - ((Partial_Sums (c2 ExpSeq )) . (c3 -' b3))) ) & ( c3 < b3 implies b1 . b3 = 0 ) ) ) & ( for b3 being Nat holds
( ( b3 <= c3 implies b2 . b3 = ((c1 ExpSeq ) . b3) * (((Partial_Sums (c2 ExpSeq )) . c3) - ((Partial_Sums (c2 ExpSeq )) . (c3 -' b3))) ) & ( c3 < b3 implies b2 . b3 = 0 ) ) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def17 defines Conj SIN_COS:def 17 :
for b1, b2 being Element of COMPLEX
for b3 being Nat
for b4 being Complex_Sequence holds
( b4 = Conj b3,b1,b2 iff for b5 being Nat holds
( ( b5 <= b3 implies b4 . b5 = ((b1 ExpSeq ) . b5) * (((Partial_Sums (b2 ExpSeq )) . b3) - ((Partial_Sums (b2 ExpSeq )) . (b3 -' b5))) ) & ( b3 < b5 implies b4 . b5 = 0 ) ) );

Lemma15: for b1, b2, b3, b4 being Element of REAL holds
( (b1 + (b3 * <i> )) * (b2 + (b4 * <i> )) = ((b1 * b2) - (b3 * b4)) + (((b1 * b4) + (b2 * b3)) * <i> ) & (b2 + (b4 * <i> )) *' = b2 + ((- b4) * <i> ) )
proof end;

theorem Th4: :: SIN_COS:4
for b1 being Element of COMPLEX
for b2 being Nat holds
( (b1 ExpSeq ) . (b2 + 1) = (((b1 ExpSeq ) . b2) * b1) / ((b2 + 1) + (0 * <i> )) & (b1 ExpSeq ) . 0 = 1 & |.((b1 ExpSeq ) . b2).| = (|.b1.| ExpSeq ) . b2 )
proof end;

theorem Th5: :: SIN_COS:5
for b1 being Nat
for b2 being Complex_Sequence st 0 < b1 holds
(Sift b2) . b1 = b2 . (b1 -' 1)
proof end;

theorem Th6: :: SIN_COS:6
for b1 being Nat
for b2 being Complex_Sequence holds (Partial_Sums b2) . b1 = ((Partial_Sums (Sift b2)) . b1) + (b2 . b1)
proof end;

theorem Th7: :: SIN_COS:7
for b1, b2 being Element of COMPLEX
for b3 being Nat holds (b1 + b2) #N b3 = (Partial_Sums (Expan b3,b1,b2)) . b3
proof end;

theorem Th8: :: SIN_COS:8
for b1, b2 being Element of COMPLEX
for b3 being Nat holds Expan_e b3,b1,b2 = (1r / (b3 !c )) (#) (Expan b3,b1,b2)
proof end;

theorem Th9: :: SIN_COS:9
for b1, b2 being Element of COMPLEX
for b3 being Nat holds ((b1 + b2) #N b3) / (b3 !c ) = (Partial_Sums (Expan_e b3,b1,b2)) . b3
proof end;

theorem Th10: :: SIN_COS:10
( 0c ExpSeq is absolutely_summable & Sum (0c ExpSeq ) = 1r )
proof end;

registration
let c1 be Element of COMPLEX ;
cluster a1 ExpSeq -> absolutely_summable ;
coherence
c1 ExpSeq is absolutely_summable
proof end;
end;

theorem Th11: :: SIN_COS:11
for b1, b2 being Element of COMPLEX holds
( (b1 ExpSeq ) . 0 = 1 & (Expan 0,b1,b2) . 0 = 1 )
proof end;

theorem Th12: :: SIN_COS:12
for b1, b2 being Element of COMPLEX
for b3, b4 being Nat st b3 <= b4 holds
(Alfa (b4 + 1),b1,b2) . b3 = ((Alfa b4,b1,b2) . b3) + ((Expan_e (b4 + 1),b1,b2) . b3)
proof end;

theorem Th13: :: SIN_COS:13
for b1, b2 being Element of COMPLEX
for b3 being Nat holds (Partial_Sums (Alfa (b3 + 1),b1,b2)) . b3 = ((Partial_Sums (Alfa b3,b1,b2)) . b3) + ((Partial_Sums (Expan_e (b3 + 1),b1,b2)) . b3)
proof end;

theorem Th14: :: SIN_COS:14
for b1, b2 being Element of COMPLEX
for b3 being Nat holds (b1 ExpSeq ) . b3 = (Expan_e b3,b1,b2) . b3
proof end;

theorem Th15: :: SIN_COS:15
for b1, b2 being Element of COMPLEX
for b3 being Nat holds (Partial_Sums ((b1 + b2) ExpSeq )) . b3 = (Partial_Sums (Alfa b3,b1,b2)) . b3
proof end;

theorem Th16: :: SIN_COS:16
for b1, b2 being Element of COMPLEX
for b3 being Nat holds (((Partial_Sums (b1 ExpSeq )) . b3) * ((Partial_Sums (b2 ExpSeq )) . b3)) - ((Partial_Sums ((b1 + b2) ExpSeq )) . b3) = (Partial_Sums (Conj b3,b1,b2)) . b3
proof end;

theorem Th17: :: SIN_COS:17
for b1 being Element of COMPLEX
for b2 being Nat holds
( |.((Partial_Sums (b1 ExpSeq )) . b2).| <= (Partial_Sums (|.b1.| ExpSeq )) . b2 & (Partial_Sums (|.b1.| ExpSeq )) . b2 <= Sum (|.b1.| ExpSeq ) & |.((Partial_Sums (b1 ExpSeq )) . b2).| <= Sum (|.b1.| ExpSeq ) )
proof end;

theorem Th18: :: SIN_COS:18
for b1 being Element of COMPLEX holds 1 <= Sum (|.b1.| ExpSeq )
proof end;

theorem Th19: :: SIN_COS:19
for b1 being Element of COMPLEX
for b2 being Nat holds 0 <= (|.b1.| ExpSeq ) . b2
proof end;

theorem Th20: :: SIN_COS:20
for b1 being Element of COMPLEX
for b2, b3 being Nat holds
( abs ((Partial_Sums (|.b1.| ExpSeq )) . b2) = (Partial_Sums (|.b1.| ExpSeq )) . b2 & ( b2 <= b3 implies abs (((Partial_Sums (|.b1.| ExpSeq )) . b3) - ((Partial_Sums (|.b1.| ExpSeq )) . b2)) = ((Partial_Sums (|.b1.| ExpSeq )) . b3) - ((Partial_Sums (|.b1.| ExpSeq )) . b2) ) )
proof end;

theorem Th21: :: SIN_COS:21
for b1, b2 being Element of COMPLEX
for b3, b4 being Nat holds abs ((Partial_Sums |.(Conj b3,b1,b2).|) . b4) = (Partial_Sums |.(Conj b3,b1,b2).|) . b4
proof end;

theorem Th22: :: SIN_COS:22
for b1, b2 being Element of COMPLEX
for b3 being real number st b3 > 0 holds
ex b4 being Nat st
for b5 being Nat st b4 <= b5 holds
abs ((Partial_Sums |.(Conj b5,b1,b2).|) . b5) < b3
proof end;

theorem Th23: :: SIN_COS:23
for b1, b2 being Element of COMPLEX
for b3 being Complex_Sequence st ( for b4 being Nat holds b3 . b4 = (Partial_Sums (Conj b4,b1,b2)) . b4 ) holds
( b3 is convergent & lim b3 = 0 )
proof end;

Lemma36: for b1, b2 being Element of COMPLEX holds (Sum (b1 ExpSeq )) * (Sum (b2 ExpSeq )) = Sum ((b1 + b2) ExpSeq )
proof end;

definition
func exp -> PartFunc of COMPLEX , COMPLEX means :Def18: :: SIN_COS:def 18
( dom a1 = COMPLEX & ( for b1 being Element of COMPLEX holds a1 . b1 = Sum (b1 ExpSeq ) ) );
existence
ex b1 being PartFunc of COMPLEX , COMPLEX st
( dom b1 = COMPLEX & ( for b2 being Element of COMPLEX holds b1 . b2 = Sum (b2 ExpSeq ) ) )
proof end;
uniqueness
for b1, b2 being PartFunc of COMPLEX , COMPLEX st dom b1 = COMPLEX & ( for b3 being Element of COMPLEX holds b1 . b3 = Sum (b3 ExpSeq ) ) & dom b2 = COMPLEX & ( for b3 being Element of COMPLEX holds b2 . b3 = Sum (b3 ExpSeq ) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def18 defines exp SIN_COS:def 18 :
for b1 being PartFunc of COMPLEX , COMPLEX holds
( b1 = exp iff ( dom b1 = COMPLEX & ( for b2 being Element of COMPLEX holds b1 . b2 = Sum (b2 ExpSeq ) ) ) );

definition
let c1 be Element of COMPLEX ;
func exp c1 -> Element of COMPLEX equals :: SIN_COS:def 19
exp . a1;
correctness
coherence
exp . c1 is Element of COMPLEX
;
proof end;
end;

:: deftheorem Def19 defines exp SIN_COS:def 19 :
for b1 being Element of COMPLEX holds exp b1 = exp . b1;

Lemma38: for b1 being Element of COMPLEX holds exp b1 = Sum (b1 ExpSeq )
by Def18;

theorem Th24: :: SIN_COS:24
for b1, b2 being Element of COMPLEX holds exp (b1 + b2) = (exp b1) * (exp b2)
proof end;

definition
func sin -> PartFunc of REAL , REAL means :Def20: :: SIN_COS:def 20
( dom a1 = REAL & ( for b1 being Element of REAL holds a1 . b1 = Im (Sum ([*0,b1*] ExpSeq )) ) );
existence
ex b1 being PartFunc of REAL , REAL st
( dom b1 = REAL & ( for b2 being Element of REAL holds b1 . b2 = Im (Sum ([*0,b2*] ExpSeq )) ) )
proof end;
uniqueness
for b1, b2 being PartFunc of REAL , REAL st dom b1 = REAL & ( for b3 being Element of REAL holds b1 . b3 = Im (Sum ([*0,b3*] ExpSeq )) ) & dom b2 = REAL & ( for b3 being Element of REAL holds b2 . b3 = Im (Sum ([*0,b3*] ExpSeq )) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def20 defines sin SIN_COS:def 20 :
for b1 being PartFunc of REAL , REAL holds
( b1 = sin iff ( dom b1 = REAL & ( for b2 being Element of REAL holds b1 . b2 = Im (Sum ([*0,b2*] ExpSeq )) ) ) );

definition
let c1 be real number ;
func sin c1 -> set equals :: SIN_COS:def 21
sin . a1;
correctness
coherence
sin . c1 is set
;
;
end;

:: deftheorem Def21 defines sin SIN_COS:def 21 :
for b1 being real number holds sin b1 = sin . b1;

registration
let c1 be real number ;
cluster sin a1 -> real ;
correctness
coherence
sin c1 is real
;
;
end;

definition
let c1 be Real;
redefine func sin as sin c1 -> Real;
correctness
coherence
sin c1 is Real
;
;
end;

theorem Th25: :: SIN_COS:25
sin is Function of REAL , REAL
proof end;

definition
func cos -> PartFunc of REAL , REAL means :Def22: :: SIN_COS:def 22
( dom a1 = REAL & ( for b1 being Real holds a1 . b1 = Re (Sum ([*0,b1*] ExpSeq )) ) );
existence
ex b1 being PartFunc of REAL , REAL st
( dom b1 = REAL & ( for b2 being Real holds b1 . b2 = Re (Sum ([*0,b2*] ExpSeq )) ) )
proof end;
uniqueness
for b1, b2 being PartFunc of REAL , REAL st dom b1 = REAL & ( for b3 being Real holds b1 . b3 = Re (Sum ([*0,b3*] ExpSeq )) ) & dom b2 = REAL & ( for b3 being Real holds b2 . b3 = Re (Sum ([*0,b3*] ExpSeq )) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def22 defines cos SIN_COS:def 22 :
for b1 being PartFunc of REAL , REAL holds
( b1 = cos iff ( dom b1 = REAL & ( for b2 being Real holds b1 . b2 = Re (Sum ([*0,b2*] ExpSeq )) ) ) );

definition
let c1 be real number ;
func cos c1 -> set equals :: SIN_COS:def 23
cos . a1;
correctness
coherence
cos . c1 is set
;
;
end;

:: deftheorem Def23 defines cos SIN_COS:def 23 :
for b1 being real number holds cos b1 = cos . b1;

registration
let c1 be real number ;
cluster cos a1 -> real ;
correctness
coherence
cos c1 is real
;
;
end;

definition
let c1 be Real;
redefine func cos as cos c1 -> Real;
correctness
coherence
cos c1 is Real
;
;
end;

theorem Th26: :: SIN_COS:26
cos is Function of REAL , REAL
proof end;

theorem Th27: :: SIN_COS:27
( dom sin = REAL & dom cos = REAL ) by Def20, Def22;

Lemma42: for b1 being Real holds Sum ([*0,b1*] ExpSeq ) = (cos . b1) + ((sin . b1) * <i> )
proof end;

theorem Th28: :: SIN_COS:28
for b1 being Real holds exp [*0,b1*] = (cos b1) + ((sin b1) * <i> )
proof end;

Lemma43: for b1 being Real holds (Sum ([*0,b1*] ExpSeq )) *' = Sum ((- [*0,b1*]) ExpSeq )
proof end;

theorem Th29: :: SIN_COS:29
for b1 being Real holds (exp [*0,b1*]) *' = exp (- [*0,b1*])
proof end;

Lemma44: for b1 being Real
for b2 being real number st b1 = b2 holds
( |.(Sum ([*0,b1*] ExpSeq )).| = 1 & abs (sin . b2) <= 1 & abs (cos . b2) <= 1 )
proof end;

theorem Th30: :: SIN_COS:30
for b1 being Real holds
( |.(exp [*0,b1*]).| = 1 & ( for b2 being real number holds
( abs (sin b2) <= 1 & abs (cos b2) <= 1 ) ) )
proof end;

theorem Th31: :: SIN_COS:31
for b1 being real number holds
( ((cos . b1) ^2 ) + ((sin . b1) ^2 ) = 1 & ((cos . b1) * (cos . b1)) + ((sin . b1) * (sin . b1)) = 1 )
proof end;

theorem Th32: :: SIN_COS:32
for b1 being real number holds
( ((cos b1) ^2 ) + ((sin b1) ^2 ) = 1 & ((cos b1) * (cos b1)) + ((sin b1) * (sin b1)) = 1 ) by Th31;

Lemma46: 0c = [*0,0*]
by ARYTM_0:def 7;

theorem Th33: :: SIN_COS:33
for b1 being real number holds
( cos . 0 = 1 & sin . 0 = 0 & cos . (- b1) = cos . b1 & sin . (- b1) = - (sin . b1) )
proof end;

theorem Th34: :: SIN_COS:34
for b1 being real number holds
( cos 0 = 1 & sin 0 = 0 & cos (- b1) = cos b1 & sin (- b1) = - (sin b1) ) by Th33;

definition
let c1 be real number ;
deffunc H1( Nat) -> set = (((- 1) |^ a1) * (c1 |^ ((2 * a1) + 1))) / (((2 * a1) + 1) ! );
func c1 P_sin -> Real_Sequence means :Def24: :: SIN_COS:def 24
for b1 being Nat holds a2 . b1 = (((- 1) |^ b1) * (a1 |^ ((2 * b1) + 1))) / (((2 * b1) + 1) ! );
existence
ex b1 being Real_Sequence st
for b2 being Nat holds b1 . b2 = (((- 1) |^ b2) * (c1 |^ ((2 * b2) + 1))) / (((2 * b2) + 1) ! )
proof end;
uniqueness
for b1, b2 being Real_Sequence st ( for b3 being Nat holds b1 . b3 = (((- 1) |^ b3) * (c1 |^ ((2 * b3) + 1))) / (((2 * b3) + 1) ! ) ) & ( for b3 being Nat holds b2 . b3 = (((- 1) |^ b3) * (c1 |^ ((2 * b3) + 1))) / (((2 * b3) + 1) ! ) ) holds
b1 = b2
proof end;
deffunc H2( Nat) -> set = (((- 1) |^ a1) * (c1 |^ (2 * a1))) / ((2 * a1) ! );
func c1 P_cos -> Real_Sequence means :Def25: :: SIN_COS:def 25
for b1 being Nat holds a2 . b1 = (((- 1) |^ b1) * (a1 |^ (2 * b1))) / ((2 * b1) ! );
existence
ex b1 being Real_Sequence st
for b2 being Nat holds b1 . b2 = (((- 1) |^ b2) * (c1 |^ (2 * b2))) / ((2 * b2) ! )
proof end;
uniqueness
for b1, b2 being Real_Sequence st ( for b3 being Nat holds b1 . b3 = (((- 1) |^ b3) * (c1 |^ (2 * b3))) / ((2 * b3) ! ) ) & ( for b3 being Nat holds b2 . b3 = (((- 1) |^ b3) * (c1 |^ (2 * b3))) / ((2 * b3) ! ) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def24 defines P_sin SIN_COS:def 24 :
for b1 being real number
for b2 being Real_Sequence holds
( b2 = b1 P_sin iff for b3 being Nat holds b2 . b3 = (((- 1) |^ b3) * (b1 |^ ((2 * b3) + 1))) / (((2 * b3) + 1) ! ) );

:: deftheorem Def25 defines P_cos SIN_COS:def 25 :
for b1 being real number
for b2 being Real_Sequence holds
( b2 = b1 P_cos iff for b3 being Nat holds b2 . b3 = (((- 1) |^ b3) * (b1 |^ (2 * b3))) / ((2 * b3) ! ) );

Lemma50: for b1, b2, b3 being Real st b3 <> 0 holds
( [*b1,b2*] / [*b3,0*] = [*(b1 / b3),(b2 / b3)*] & [*b1,b2*] / [*0,b3*] = [*(b2 / b3),(- (b1 / b3))*] )
proof end;

Lemma51: for b1, b2, b3 being Real holds
( [*b1,b2*] * [*b3,0*] = [*(b1 * b3),(b2 * b3)*] & [*b1,b2*] * [*0,b3*] = [*(- (b2 * b3)),(b1 * b3)*] )
proof end;

theorem Th35: :: SIN_COS:35
for b1 being Element of COMPLEX
for b2 being Nat holds
( b1 #N (2 * b2) = (b1 #N b2) #N 2 & b1 #N (2 * b2) = (b1 #N 2) #N b2 )
proof end;

Lemma53: 1r = [*1,0*]
by ARYTM_0:def 7, COMPLEX1:def 7;

theorem Th36: :: SIN_COS:36
for b1 being Nat
for b2 being Real holds
( [*0,b2*] #N (2 * b1) = [*(((- 1) |^ b1) * (b2 |^ (2 * b1))),0*] & [*0,b2*] #N ((2 * b1) + 1) = [*0,(((- 1) |^ b1) * (b2 |^ ((2 * b1) + 1)))*] )
proof end;

theorem Th37: :: SIN_COS:37
for b1 being Nat holds b1 !c = [*(b1 ! ),0*]
proof end;

theorem Th38: :: SIN_COS:38
for b1 being Nat
for b2 being Real holds
( (Partial_Sums (b2 P_sin )) . b1 = (Partial_Sums (Im ([*0,b2*] ExpSeq ))) . ((2 * b1) + 1) & (Partial_Sums (b2 P_cos )) . b1 = (Partial_Sums (Re ([*0,b2*] ExpSeq ))) . (2 * b1) )
proof end;

theorem Th39: :: SIN_COS:39
for b1 being Real holds
( Partial_Sums (b1 P_sin ) is convergent & Sum (b1 P_sin ) = Im (Sum ([*0,b1*] ExpSeq )) & Partial_Sums (b1 P_cos ) is convergent & Sum (b1 P_cos ) = Re (Sum ([*0,b1*] ExpSeq )) )
proof end;

theorem Th40: :: SIN_COS:40
for b1 being real number holds
( cos . b1 = Sum (b1 P_cos ) & sin . b1 = Sum (b1 P_sin ) )
proof end;

theorem Th41: :: SIN_COS:41
for b1, b2 being real number
for b3 being Real_Sequence st b3 is convergent & lim b3 = b2 & ( for b4 being Nat holds b3 . b4 >= b1 ) holds
b2 >= b1
proof end;

deffunc H1( Real) -> Element of REAL = (2 * a1) + 1;

consider c1 being Real_Sequence such that
Lemma60: for b1 being Nat holds c1 . b1 = H1(b1) from SEQ_1:sch 1();

c1 is increasing Seq_of_Nat
proof end;

then reconsider c2 = c1 as increasing Seq_of_Nat ;

Lemma61: for b1 being Nat
for b2, b3, b4, b5 being real number holds
( b2 |^ 0 = 1 & b2 |^ (2 * b1) = (b2 |^ b1) |^ 2 & b2 |^ 1 = b2 & b2 |^ 2 = b2 * b2 & (- 1) |^ (2 * b1) = 1 & (- 1) |^ ((2 * b1) + 1) = - 1 )
proof end;

Lemma62: for b1, b2, b3, b4 being Real holds
( [*b1,b2*] + [*b3,b4*] = [*(b1 + b3),(b2 + b4)*] & (5 / 6) ^2 = 25 / 36 )
proof end;

theorem Th42: :: SIN_COS:42
for b1, b2, b3 being Nat st b1 < b2 holds
( b3 ! > 0 & b1 ! <= b2 ! )
proof end;

theorem Th43: :: SIN_COS:43
for b1 being real number
for b2, b3 being Nat st 0 <= b1 & b1 <= 1 & b2 <= b3 holds
b1 |^ b3 <= b1 |^ b2
proof end;

theorem Th44: :: SIN_COS:44
for b1 being Nat
for b2 being Real holds [*b2,0*] #N b1 = [*(b2 |^ b1),0*]
proof end;

theorem Th45: :: SIN_COS:45
for b1 being Nat
for b2 being Real holds ([*b2,0*] #N b1) / (b1 !c ) = [*((b2 |^ b1) / (b1 ! )),0*]
proof end;

theorem Th46: :: SIN_COS:46
for b1 being Real holds Im (Sum ([*b1,0*] ExpSeq )) = 0
proof end;

theorem Th47: :: SIN_COS:47
( cos . 1 > 0 & sin . 1 > 0 & cos . 1 < sin . 1 )
proof end;

theorem Th48: :: SIN_COS:48
for b1 being Real holds b1 ExpSeq = Re ([*b1,0*] ExpSeq )
proof end;

theorem Th49: :: SIN_COS:49
for b1 being Real holds
( b1 ExpSeq is summable & Sum (b1 ExpSeq ) = Re (Sum ([*b1,0*] ExpSeq )) )
proof end;

Lemma71: for b1 being Element of COMPLEX
for b2 being Nat holds
( b1 * (b1 #N b2) = b1 #N (b2 + 1) & (b1 ExpSeq ) . 1 = b1 & (b1 ExpSeq ) . 0 = 1r & b1 #N 1 = b1 & |.(b1 #N b2).| = |.b1.| |^ b2 )
proof end;

Lemma72: for b1 being Real holds Sum ([*b1,0*] ExpSeq ) = [*(Sum (b1 ExpSeq )),0*]
proof end;

theorem Th50: :: SIN_COS:50
for b1, b2 being real number holds Sum ((b1 + b2) ExpSeq ) = (Sum (b1 ExpSeq )) * (Sum (b2 ExpSeq ))
proof end;

definition
func exp -> PartFunc of REAL , REAL means :Def26: :: SIN_COS:def 26
( dom a1 = REAL & ( for b1 being real number holds a1 . b1 = Sum (b1 ExpSeq ) ) );
existence
ex b1 being PartFunc of REAL , REAL st
( dom b1 = REAL & ( for b2 being real number holds b1 . b2 = Sum (b2 ExpSeq ) ) )
proof end;
uniqueness
for b1, b2 being PartFunc of REAL , REAL st dom b1 = REAL & ( for b3 being real number holds b1 . b3 = Sum (b3 ExpSeq ) ) & dom b2 = REAL & ( for b3 being real number holds b2 . b3 = Sum (b3 ExpSeq ) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def26 defines exp SIN_COS:def 26 :
for b1 being PartFunc of REAL , REAL holds
( b1 = exp iff ( dom b1 = REAL & ( for b2 being real number holds b1 . b2 = Sum (b2 ExpSeq ) ) ) );

definition
let c3 be real number ;
func exp c1 -> set equals :: SIN_COS:def 27
exp . a1;
correctness
coherence
exp . c3 is set
;
;
end;

:: deftheorem Def27 defines exp SIN_COS:def 27 :
for b1 being real number holds exp b1 = exp . b1;

registration
let c3 be real number ;
cluster exp a1 -> real ;
correctness
coherence
exp c3 is real
;
;
end;

definition
let c3 be Real;
redefine func exp as exp c1 -> Real;
correctness
coherence
exp c3 is Real
;
;
end;

theorem Th51: :: SIN_COS:51
dom exp = REAL by Def26;

theorem Th52: :: SIN_COS:52
canceled;

theorem Th53: :: SIN_COS:53
for b1 being Real holds exp . b1 = Re (Sum ([*b1,0*] ExpSeq ))
proof end;

theorem Th54: :: SIN_COS:54
for b1 being Real holds exp [*b1,0*] = [*(exp b1),0*]
proof end;

Lemma77: for b1, b2 being real number holds exp . (b1 + b2) = (exp . b1) * (exp . b2)
proof end;

theorem Th55: :: SIN_COS:55
for b1, b2 being real number holds exp (b1 + b2) = (exp b1) * (exp b2) by Lemma77;

Lemma78: exp . 0 = 1
proof end;

theorem Th56: :: SIN_COS:56
exp 0 = 1 by Lemma78;

theorem Th57: :: SIN_COS:57
for b1 being real number st b1 > 0 holds
exp . b1 >= 1
proof end;

theorem Th58: :: SIN_COS:58
for b1 being real number st b1 < 0 holds
( 0 < exp . b1 & exp . b1 <= 1 )
proof end;

theorem Th59: :: SIN_COS:59
for b1 being real number holds exp . b1 > 0
proof end;

theorem Th60: :: SIN_COS:60
for b1 being real number holds exp b1 > 0 by Th59;

definition
let c3 be Element of COMPLEX ;
deffunc H2( Nat) -> Element of COMPLEX = (c3 #N (a1 + 1)) / ((a1 + 2) !c );
func c1 P_dt -> Complex_Sequence means :Def28: :: SIN_COS:def 28
for b1 being Nat holds a2 . b1 = (a1 #N (b1 + 1)) / ((b1 + 2) !c );
existence
ex b1 being Complex_Sequence st
for b2 being Nat holds b1 . b2 = (c3 #N (b2 + 1)) / ((b2 + 2) !c )
proof end;
uniqueness
for b1, b2 being Complex_Sequence st ( for b3 being Nat holds b1 . b3 = (c3 #N (b3 + 1)) / ((b3 + 2) !c ) ) & ( for b3 being Nat holds b2 . b3 = (c3 #N (b3 + 1)) / ((b3 + 2) !c ) ) holds
b1 = b2
proof end;
deffunc H3( Nat) -> Element of COMPLEX = (c3 #N a1) / ((a1 + 2) !c );
func c1 P_t -> Complex_Sequence means :: SIN_COS:def 29
for b1 being Nat holds a2 . b1 = (a1 #N b1) / ((b1 + 2) !c );
existence
ex b1 being Complex_Sequence st
for b2 being Nat holds b1 . b2 = (c3 #N b2) / ((b2 + 2) !c )
proof end;
uniqueness
for b1, b2 being Complex_Sequence st ( for b3 being Nat holds b1 . b3 = (c3 #N b3) / ((b3 + 2) !c ) ) & ( for b3 being Nat holds b2 . b3 = (c3 #N b3) / ((b3 + 2) !c ) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def28 defines P_dt SIN_COS:def 28 :
for b1 being Element of COMPLEX
for b2 being Complex_Sequence holds
( b2 = b1 P_dt iff for b3 being Nat holds b2 . b3 = (b1 #N (b3 + 1)) / ((b3 + 2) !c ) );

:: deftheorem Def29 defines P_t SIN_COS:def 29 :
for b1 being Element of COMPLEX
for b2 being Complex_Sequence holds
( b2 = b1 P_t iff for b3 being Nat holds b2 . b3 = (b1 #N b3) / ((b3 + 2) !c ) );

Lemma83: for b1 being Element of COMPLEX
for b2 being Real holds
( Re ([*0,b2*] * b1) = - (b2 * (Im b1)) & Im ([*0,b2*] * b1) = b2 * (Re b1) & Re ([*b2,0*] * b1) = b2 * (Re b1) & Im ([*b2,0*] * b1) = b2 * (Im b1) )
proof end;

Lemma84: for b1 being Element of COMPLEX
for b2 being Real st b2 > 0 holds
( Re (b1 / [*0,b2*]) = (Im b1) / b2 & Im (b1 / [*0,b2*]) = - ((Re b1) / b2) & |.(b1 / [*b2,0*]).| = |.b1.| / b2 )
proof end;

theorem Th61: :: SIN_COS:61
for b1 being Element of COMPLEX holds b1 P_dt is absolutely_summable
proof end;

theorem Th62: :: SIN_COS:62
for b1 being Element of COMPLEX holds b1 * (Sum (b1 P_dt )) = ((Sum (b1 ExpSeq )) - 1r ) - b1
proof end;

theorem Th63: :: SIN_COS:63
for b1 being real number st b1 > 0 holds
ex b2 being Real st
( b2 > 0 & ( for b3 being Element of COMPLEX st |.b3.| < b2 holds
|.(Sum (b3 P_dt )).| < b1 ) )
proof end;

theorem Th64: :: SIN_COS:64
for b1, b2 being Element of COMPLEX holds (Sum ((b2 + b1) ExpSeq )) - (Sum (b2 ExpSeq )) = ((Sum (b2 ExpSeq )) * b1) + ((b1 * (Sum (b1 P_dt ))) * (Sum (b2 ExpSeq )))
proof end;

theorem Th65: :: SIN_COS:65
for b1, b2 being Real holds (cos . (b1 + b2)) - (cos . b1) = (- (b2 * (sin . b1))) - (b2 * (Im ((Sum ([*0,b2*] P_dt )) * [*(cos . b1),(sin . b1)*])))
proof end;

theorem Th66: :: SIN_COS:66
for b1, b2 being Real holds (sin . (b1 + b2)) - (sin . b1) = (b2 * (cos . b1)) + (b2 * (Re ((Sum ([*0,b2*] P_dt )) * [*(cos . b1),(sin . b1)*])))
proof end;

theorem Th67: :: SIN_COS:67
for b1, b2 being Real holds (exp . (b1 + b2)) - (exp . b1) = (b2 * (exp . b1)) + ((b2 * (exp . b1)) * (Re (Sum ([*b2,0*] P_dt ))))
proof end;

theorem Th68: :: SIN_COS:68
for b1 being real number holds
( cos is_differentiable_in b1 & diff cos ,b1 = - (sin . b1) )
proof end;

theorem Th69: :: SIN_COS:69
for b1 being real number holds
( sin is_differentiable_in b1 & diff sin ,b1 = cos . b1 )
proof end;

theorem Th70: :: SIN_COS:70
for b1 being real number holds
( exp is_differentiable_in b1 & diff exp ,b1 = exp . b1 )
proof end;

theorem Th71: :: SIN_COS:71
( exp is_differentiable_on REAL & ( for b1 being real number st b1 in REAL holds
diff exp ,b1 = exp . b1 ) )
proof end;

theorem Th72: :: SIN_COS:72
( cos is_differentiable_on REAL & ( for b1 being real number st b1 in REAL holds
diff cos ,b1 = - (sin . b1) ) )
proof end;

theorem Th73: :: SIN_COS:73
for b1 being real number holds
( sin is_differentiable_on REAL & diff sin ,b1 = cos . b1 )
proof end;

theorem Th74: :: SIN_COS:74
for b1 being real number st b1 in [.0,1.] holds
( 0 < cos . b1 & cos . b1 >= 1 / 2 )
proof end;

theorem Th75: :: SIN_COS:75
( [.0,1.] c= dom (sin / cos ) & ].0,1.[ c= dom (sin / cos ) )
proof end;

Lemma99: ( dom ((sin / cos ) | [.0,1.]) = [.0,1.] & ( for b1 being real number st b1 in [.0,1.] holds
((sin / cos ) | [.0,1.]) . b1 = (sin / cos ) . b1 ) )
proof end;

Lemma100: ( sin / cos is_differentiable_on ].0,1.[ & ( for b1 being real number st b1 in ].0,1.[ holds
diff (sin / cos ),b1 > 0 ) )
proof end;

theorem Th76: :: SIN_COS:76
sin / cos is_continuous_on [.0,1.]
proof end;

theorem Th77: :: SIN_COS:77
for b1, b2 being real number st b1 in ].0,1.[ & b2 in ].0,1.[ & (sin / cos ) . b1 = (sin / cos ) . b2 holds
b1 = b2
proof end;

Lemma103: ( (sin / cos ) . 0 = 0 & (sin / cos ) . 1 > 1 )
proof end;

definition
func PI -> real number means :Def30: :: SIN_COS:def 30
( (sin / cos ) . (a1 / 4) = 1 & a1 in ].0,4.[ );
existence
ex b1 being real number st
( (sin / cos ) . (b1 / 4) = 1 & b1 in ].0,4.[ )
proof end;
uniqueness
for b1, b2 being real number st (sin / cos ) . (b1 / 4) = 1 & b1 in ].0,4.[ & (sin / cos ) . (b2 / 4) = 1 & b2 in ].0,4.[ holds
b1 = b2
proof end;
end;

:: deftheorem Def30 defines PI SIN_COS:def 30 :
for b1 being real number holds
( b1 = PI iff ( (sin / cos ) . (b1 / 4) = 1 & b1 in ].0,4.[ ) );

definition
redefine func PI as PI -> Real;
coherence
PI is Real
by XREAL_0:def 1;
end;

theorem Th78: :: SIN_COS:78
sin . (PI / 4) = cos . (PI / 4)
proof end;

theorem Th79: :: SIN_COS:79
for b1, b2 being real number holds
( sin . (b1 + b2) = ((sin . b1) * (cos . b2)) + ((cos . b1) * (sin . b2)) & cos . (b1 + b2) = ((cos . b1) * (cos . b2)) - ((sin . b1) * (sin . b2)) )
proof end;

theorem Th80: :: SIN_COS:80
for b1, b2 being real number holds
( sin (b1 + b2) = ((sin b1) * (cos b2)) + ((cos b1) * (sin b2)) & cos (b1 + b2) = ((cos b1) * (cos b2)) - ((sin b1) * (sin b2)) ) by Th79;

theorem Th81: :: SIN_COS:81
( cos . (PI / 2) = 0 & sin . (PI / 2) = 1 & cos . PI = - 1 & sin . PI = 0 & cos . (PI + (PI / 2)) = 0 & sin . (PI + (PI / 2)) = - 1 & cos . (2 * PI ) = 1 & sin . (2 * PI ) = 0 )
proof end;

theorem Th82: :: SIN_COS:82
( cos (PI / 2) = 0 & sin (PI / 2) = 1 & cos PI = - 1 & sin PI = 0 & cos (PI + (PI / 2)) = 0 & sin (PI + (PI / 2)) = - 1 & cos (2 * PI ) = 1 & sin (2 * PI ) = 0 ) by Th81;

theorem Th83: :: SIN_COS:83
for b1 being real number holds
( sin . (b1 + (2 * PI )) = sin . b1 & cos . (b1 + (2 * PI )) = cos . b1 & sin . ((PI / 2) - b1) = cos . b1 & cos . ((PI / 2) - b1) = sin . b1 & sin . ((PI / 2) + b1) = cos . b1 & cos . ((PI / 2) + b1) = - (sin . b1) & sin . (PI + b1) = - (sin . b1) & cos . (PI + b1) = - (cos . b1) )
proof end;

theorem Th84: :: SIN_COS:84
for b1 being real number holds
( sin (b1 + (2 * PI )) = sin b1 & cos (b1 + (2 * PI )) = cos b1 & sin ((PI / 2) - b1) = cos b1 & cos ((PI / 2) - b1) = sin b1 & sin ((PI / 2) + b1) = cos b1 & cos ((PI / 2) + b1) = - (sin b1) & sin (PI + b1) = - (sin b1) & cos (PI + b1) = - (cos b1) ) by Th83;

Lemma109: for b1 being real number st b1 in [.0,1.] holds
sin . b1 >= 0
proof end;

theorem Th85: :: SIN_COS:85
for b1 being real number st b1 in ].0,(PI / 2).[ holds
cos . b1 > 0
proof end;

theorem Th86: :: SIN_COS:86
for b1 being real number st b1 in ].0,(PI / 2).[ holds
cos b1 > 0 by Th85;