Article SIN_COS, MML version 4.99.1005

:: SIN_COS:funcnot 1 => SIN_COS:func 1
definition
  let a1, a2 be Element of NAT;
  func CHK(A1,A2) -> Element of COMPLEX equals
    1
    if a1 <= a2
    otherwise 0;
end;

:: SIN_COS:def 2
theorem
for b1, b2 being Element of NAT holds
(b1 <= b2 implies CHK(b1,b2) = 1) & (b1 <= b2 or CHK(b1,b2) = 0);

:: SIN_COS:funcreg 1
registration
  let a1, a2 be Element of NAT;
  cluster CHK(a1,a2) -> real;
end;

:: SIN_COS:sch 1
scheme SIN_COS:sch 1
{F1 -> Element of COMPLEX}:
for b1 being Element of NAT holds
   ex b2 being Function-like quasi_total Relation of NAT,COMPLEX st
      for b3 being Element of NAT holds
         (b3 <= b1 implies b2 . b3 = F1(b1, b3)) & (b3 <= b1 or b2 . b3 = 0)


:: SIN_COS:sch 2
scheme SIN_COS:sch 2
{F1 -> real set}:
for b1 being Element of NAT holds
   ex b2 being Function-like quasi_total Relation of NAT,REAL st
      for b3 being Element of NAT holds
         (b3 <= b1 implies b2 . b3 = F1(b1, b3)) & (b3 <= b1 or b2 . b3 = 0)


:: SIN_COS:funcnot 2 => SIN_COS:func 2
definition
  func Prod_complex_n -> Function-like quasi_total Relation of NAT,COMPLEX means
    it . 0 = 1 &
     (for b1 being Element of NAT holds
        it . (b1 + 1) = (it . b1) * (b1 + 1));
end;

:: SIN_COS:def 4
theorem
for b1 being Function-like quasi_total Relation of NAT,COMPLEX holds
      b1 = Prod_complex_n
   iff
      b1 . 0 = 1 &
       (for b2 being Element of NAT holds
          b1 . (b2 + 1) = (b1 . b2) * (b2 + 1));

:: SIN_COS:funcnot 3 => SIN_COS:func 3
definition
  func Prod_real_n -> Function-like quasi_total Relation of NAT,REAL means
    it . 0 = 1 &
     (for b1 being Element of NAT holds
        it . (b1 + 1) = (it . b1) * (b1 + 1));
end;

:: SIN_COS:def 5
theorem
for b1 being Function-like quasi_total Relation of NAT,REAL holds
      b1 = Prod_real_n
   iff
      b1 . 0 = 1 &
       (for b2 being Element of NAT holds
          b1 . (b2 + 1) = (b1 . b2) * (b2 + 1));

:: SIN_COS:funcnot 4 => SIN_COS:func 4
definition
  let a1 be Element of NAT;
  func A1 !c -> Element of COMPLEX equals
    Prod_complex_n . a1;
end;

:: SIN_COS:def 6
theorem
for b1 being Element of NAT holds
   b1 !c = Prod_complex_n . b1;

:: SIN_COS:funcnot 5 => SIN_COS:func 5
definition
  let a1 be Element of NAT;
  redefine func A1 ! -> Element of REAL equals
    Prod_real_n . a1;
end;

:: SIN_COS:def 7
theorem
for b1 being Element of NAT holds
   b1 ! = Prod_real_n . b1;

:: SIN_COS:funcnot 6 => SIN_COS:func 6
definition
  let a1 be complex set;
  func A1 ExpSeq -> Function-like quasi_total Relation of NAT,COMPLEX means
    for b1 being Element of NAT holds
       it . b1 = (a1 #N b1) / (b1 !c);
end;

:: SIN_COS:def 8
theorem
for b1 being complex set
for b2 being Function-like quasi_total Relation of NAT,COMPLEX holds
      b2 = b1 ExpSeq
   iff
      for b3 being Element of NAT holds
         b2 . b3 = (b1 #N b3) / (b3 !c);

:: SIN_COS:funcnot 7 => SIN_COS:func 7
definition
  let a1 be real set;
  func A1 ExpSeq -> Function-like quasi_total Relation of NAT,REAL means
    for b1 being Element of NAT holds
       it . b1 = (a1 |^ b1) / (b1 !);
end;

:: SIN_COS:def 9
theorem
for b1 being real set
for b2 being Function-like quasi_total Relation of NAT,REAL holds
      b2 = b1 ExpSeq
   iff
      for b3 being Element of NAT holds
         b2 . b3 = (b1 |^ b3) / (b3 !);

:: SIN_COS:th 1
theorem
for b1 being Element of NAT holds
   0 !c = 1 &
    b1 !c <> 0 &
    (b1 + 1) !c = b1 !c * (b1 + 1);

:: SIN_COS:th 2
theorem
for b1 being Element of NAT holds
   (b1 + 1) ! = b1 ! * (b1 + 1);

:: SIN_COS:th 3
theorem
for b1, b2 being Element of NAT holds
(b1 <= 0 or (b1 -' 1) !c * b1 = b1 !c) &
 (b1 <= b2 implies (b2 -' b1) !c * ((b2 + 1) - b1) = ((b2 + 1) -' b1) !c);

:: SIN_COS:funcnot 8 => SIN_COS:func 8
definition
  let a1 be Element of NAT;
  func Coef A1 -> Function-like quasi_total Relation of NAT,COMPLEX means
    for b1 being Element of NAT holds
       (b1 <= a1 implies it . b1 = a1 !c / (b1 !c * ((a1 -' b1) !c))) &
        (b1 <= a1 or it . b1 = 0);
end;

:: SIN_COS:def 10
theorem
for b1 being Element of NAT
for b2 being Function-like quasi_total Relation of NAT,COMPLEX holds
      b2 = Coef b1
   iff
      for b3 being Element of NAT holds
         (b3 <= b1 implies b2 . b3 = b1 !c / (b3 !c * ((b1 -' b3) !c))) &
          (b3 <= b1 or b2 . b3 = 0);

:: SIN_COS:funcnot 9 => SIN_COS:func 9
definition
  let a1 be Element of NAT;
  func Coef_e A1 -> Function-like quasi_total Relation of NAT,COMPLEX means
    for b1 being Element of NAT holds
       (b1 <= a1 implies it . b1 = 1r / (b1 !c * ((a1 -' b1) !c))) &
        (b1 <= a1 or it . b1 = 0);
end;

:: SIN_COS:def 11
theorem
for b1 being Element of NAT
for b2 being Function-like quasi_total Relation of NAT,COMPLEX holds
      b2 = Coef_e b1
   iff
      for b3 being Element of NAT holds
         (b3 <= b1 implies b2 . b3 = 1r / (b3 !c * ((b1 -' b3) !c))) &
          (b3 <= b1 or b2 . b3 = 0);

:: SIN_COS:funcnot 10 => SIN_COS:func 10
definition
  let a1 be Function-like quasi_total Relation of NAT,COMPLEX;
  func Shift A1 -> Function-like quasi_total Relation of NAT,COMPLEX means
    it . 0 = 0 &
     (for b1 being Element of NAT holds
        it . (b1 + 1) = a1 . b1);
end;

:: SIN_COS:def 12
theorem
for b1, b2 being Function-like quasi_total Relation of NAT,COMPLEX holds
   b2 = Shift b1
iff
   b2 . 0 = 0 &
    (for b3 being Element of NAT holds
       b2 . (b3 + 1) = b1 . b3);

:: SIN_COS:funcnot 11 => SIN_COS:func 11
definition
  let a1 be Element of NAT;
  let a2, a3 be Element of COMPLEX;
  func Expan(A1,A2,A3) -> Function-like quasi_total Relation of NAT,COMPLEX means
    for b1 being Element of NAT holds
       (b1 <= a1 implies it . b1 = (((Coef a1) . b1) * (a2 |^ b1)) * (a3 |^ (a1 -' b1))) &
        (b1 <= a1 or it . b1 = 0);
end;

:: SIN_COS:def 13
theorem
for b1 being Element of NAT
for b2, b3 being Element of COMPLEX
for b4 being Function-like quasi_total Relation of NAT,COMPLEX holds
      b4 = Expan(b1,b2,b3)
   iff
      for b5 being Element of NAT holds
         (b5 <= b1 implies b4 . b5 = (((Coef b1) . b5) * (b2 |^ b5)) * (b3 |^ (b1 -' b5))) &
          (b5 <= b1 or b4 . b5 = 0);

:: SIN_COS:funcnot 12 => SIN_COS:func 12
definition
  let a1 be Element of NAT;
  let a2, a3 be Element of COMPLEX;
  func Expan_e(A1,A2,A3) -> Function-like quasi_total Relation of NAT,COMPLEX means
    for b1 being Element of NAT holds
       (b1 <= a1 implies it . b1 = (((Coef_e a1) . b1) * (a2 |^ b1)) * (a3 |^ (a1 -' b1))) &
        (b1 <= a1 or it . b1 = 0);
end;

:: SIN_COS:def 14
theorem
for b1 being Element of NAT
for b2, b3 being Element of COMPLEX
for b4 being Function-like quasi_total Relation of NAT,COMPLEX holds
      b4 = Expan_e(b1,b2,b3)
   iff
      for b5 being Element of NAT holds
         (b5 <= b1 implies b4 . b5 = (((Coef_e b1) . b5) * (b2 |^ b5)) * (b3 |^ (b1 -' b5))) &
          (b5 <= b1 or b4 . b5 = 0);

:: SIN_COS:funcnot 13 => SIN_COS:func 13
definition
  let a1 be Element of NAT;
  let a2, a3 be Element of COMPLEX;
  func Alfa(A1,A2,A3) -> Function-like quasi_total Relation of NAT,COMPLEX means
    for b1 being Element of NAT holds
       (b1 <= a1 implies it . b1 = (a2 ExpSeq . b1) * ((Partial_Sums (a3 ExpSeq)) . (a1 -' b1))) &
        (b1 <= a1 or it . b1 = 0);
end;

:: SIN_COS:def 15
theorem
for b1 being Element of NAT
for b2, b3 being Element of COMPLEX
for b4 being Function-like quasi_total Relation of NAT,COMPLEX holds
      b4 = Alfa(b1,b2,b3)
   iff
      for b5 being Element of NAT holds
         (b5 <= b1 implies b4 . b5 = (b2 ExpSeq . b5) * ((Partial_Sums (b3 ExpSeq)) . (b1 -' b5))) &
          (b5 <= b1 or b4 . b5 = 0);

:: SIN_COS:funcnot 14 => SIN_COS:func 14
definition
  let a1, a2 be real set;
  let a3 be Element of NAT;
  func Conj(A3,A1,A2) -> Function-like quasi_total Relation of NAT,REAL means
    for b1 being Element of NAT holds
       (b1 <= a3 implies it . b1 = (a1 ExpSeq . b1) * (((Partial_Sums (a2 ExpSeq)) . a3) - ((Partial_Sums (a2 ExpSeq)) . (a3 -' b1)))) &
        (b1 <= a3 or it . b1 = 0);
end;

:: SIN_COS:def 16
theorem
for b1, b2 being real set
for b3 being Element of NAT
for b4 being Function-like quasi_total Relation of NAT,REAL holds
      b4 = Conj(b3,b1,b2)
   iff
      for b5 being Element of NAT holds
         (b5 <= b3 implies b4 . b5 = (b1 ExpSeq . b5) * (((Partial_Sums (b2 ExpSeq)) . b3) - ((Partial_Sums (b2 ExpSeq)) . (b3 -' b5)))) &
          (b5 <= b3 or b4 . b5 = 0);

:: SIN_COS:funcnot 15 => SIN_COS:func 15
definition
  let a1, a2 be Element of COMPLEX;
  let a3 be Element of NAT;
  func Conj(A3,A1,A2) -> Function-like quasi_total Relation of NAT,COMPLEX means
    for b1 being Element of NAT holds
       (b1 <= a3 implies it . b1 = (a1 ExpSeq . b1) * (((Partial_Sums (a2 ExpSeq)) . a3) - ((Partial_Sums (a2 ExpSeq)) . (a3 -' b1)))) &
        (b1 <= a3 or it . b1 = 0);
end;

:: SIN_COS:def 17
theorem
for b1, b2 being Element of COMPLEX
for b3 being Element of NAT
for b4 being Function-like quasi_total Relation of NAT,COMPLEX holds
      b4 = Conj(b3,b1,b2)
   iff
      for b5 being Element of NAT holds
         (b5 <= b3 implies b4 . b5 = (b1 ExpSeq . b5) * (((Partial_Sums (b2 ExpSeq)) . b3) - ((Partial_Sums (b2 ExpSeq)) . (b3 -' b5)))) &
          (b5 <= b3 or b4 . b5 = 0);

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

:: SIN_COS:th 5
theorem
for b1 being Element of NAT
for b2 being Function-like quasi_total Relation of NAT,COMPLEX
      st 0 < b1
   holds (Shift b2) . b1 = b2 . (b1 -' 1);

:: SIN_COS:th 6
theorem
for b1 being Element of NAT
for b2 being Function-like quasi_total Relation of NAT,COMPLEX holds
   (Partial_Sums b2) . b1 = ((Partial_Sums Shift b2) . b1) + (b2 . b1);

:: SIN_COS:th 7
theorem
for b1, b2 being Element of COMPLEX
for b3 being Element of NAT holds
   (b1 + b2) |^ b3 = (Partial_Sums Expan(b3,b1,b2)) . b3;

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

:: SIN_COS:th 9
theorem
for b1, b2 being Element of COMPLEX
for b3 being Element of NAT holds
   ((b1 + b2) |^ b3) / (b3 !c) = (Partial_Sums Expan_e(b3,b1,b2)) . b3;

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

:: SIN_COS:funcreg 2
registration
  let a1 be Element of COMPLEX;
  cluster a1 ExpSeq -> Function-like quasi_total absolutely_summable;
end;

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

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

:: SIN_COS:th 13
theorem
for b1, b2 being Element of COMPLEX
for b3 being Element of 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);

:: SIN_COS:th 14
theorem
for b1, b2 being Element of COMPLEX
for b3 being Element of NAT holds
   b1 ExpSeq . b3 = (Expan_e(b3,b1,b2)) . b3;

:: SIN_COS:th 15
theorem
for b1, b2 being Element of COMPLEX
for b3 being Element of NAT holds
   (Partial_Sums ((b1 + b2) ExpSeq)) . b3 = (Partial_Sums Alfa(b3,b1,b2)) . b3;

:: SIN_COS:th 16
theorem
for b1, b2 being Element of COMPLEX
for b3 being Element of 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;

:: SIN_COS:th 17
theorem
for b1 being Element of COMPLEX
for b2 being Element of 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);

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

:: SIN_COS:th 19
theorem
for b1 being Element of COMPLEX
for b2 being Element of NAT holds
   0 <= |.b1.| ExpSeq . b2;

:: SIN_COS:th 20
theorem
for b1 being Element of COMPLEX
for b2, b3 being Element of 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));

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

:: SIN_COS:th 22
theorem
for b1, b2 being Element of COMPLEX
for b3 being real set
      st 0 < b3
   holds ex b4 being Element of NAT st
      for b5 being Element of NAT
            st b4 <= b5
         holds abs ((Partial_Sums |.Conj(b5,b1,b2).|) . b5) < b3;

:: SIN_COS:th 23
theorem
for b1, b2 being Element of COMPLEX
for b3 being Function-like quasi_total Relation of NAT,COMPLEX
      st for b4 being Element of NAT holds
           b3 . b4 = (Partial_Sums Conj(b4,b1,b2)) . b4
   holds b3 is convergent & lim b3 = 0;

:: SIN_COS:funcnot 16 => SIN_COS:func 16
definition
  func exp -> Function-like quasi_total Relation of COMPLEX,COMPLEX means
    for b1 being Element of COMPLEX holds
       it . b1 = Sum (b1 ExpSeq);
end;

:: SIN_COS:def 18
theorem
for b1 being Function-like quasi_total Relation of COMPLEX,COMPLEX holds
      b1 = exp
   iff
      for b2 being Element of COMPLEX holds
         b1 . b2 = Sum (b2 ExpSeq);

:: SIN_COS:funcnot 17 => SIN_COS:func 17
definition
  let a1 be complex set;
  func exp A1 -> complex set equals
    exp . a1;
end;

:: SIN_COS:def 19
theorem
for b1 being complex set holds
   exp b1 = exp . b1;

:: SIN_COS:funcnot 18 => SIN_COS:func 18
definition
  let a1 be complex set;
  redefine func exp a1 -> Element of COMPLEX;
end;

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

:: SIN_COS:funcnot 19 => SIN_COS:func 19
definition
  func sin -> Function-like quasi_total Relation of REAL,REAL means
    for b1 being Element of REAL holds
       it . b1 = Im Sum ([*0,b1*] ExpSeq);
end;

:: SIN_COS:def 20
theorem
for b1 being Function-like quasi_total Relation of REAL,REAL holds
      b1 = sin
   iff
      for b2 being Element of REAL holds
         b1 . b2 = Im Sum ([*0,b2*] ExpSeq);

:: SIN_COS:funcnot 20 => SIN_COS:func 20
definition
  let a1 be real set;
  func sin A1 -> set equals
    sin . a1;
end;

:: SIN_COS:def 21
theorem
for b1 being real set holds
   sin b1 = sin . b1;

:: SIN_COS:funcreg 3
registration
  let a1 be real set;
  cluster sin a1 -> real;
end;

:: SIN_COS:funcnot 21 => SIN_COS:func 21
definition
  let a1 be Element of REAL;
  redefine func sin a1 -> Element of REAL;
end;

:: SIN_COS:funcnot 22 => SIN_COS:func 22
definition
  func cos -> Function-like quasi_total Relation of REAL,REAL means
    for b1 being Element of REAL holds
       it . b1 = Re Sum ([*0,b1*] ExpSeq);
end;

:: SIN_COS:def 22
theorem
for b1 being Function-like quasi_total Relation of REAL,REAL holds
      b1 = cos
   iff
      for b2 being Element of REAL holds
         b1 . b2 = Re Sum ([*0,b2*] ExpSeq);

:: SIN_COS:funcnot 23 => SIN_COS:func 23
definition
  let a1 be real set;
  func cos A1 -> set equals
    cos . a1;
end;

:: SIN_COS:def 23
theorem
for b1 being real set holds
   cos b1 = cos . b1;

:: SIN_COS:funcreg 4
registration
  let a1 be real set;
  cluster cos a1 -> real;
end;

:: SIN_COS:funcnot 24 => SIN_COS:func 24
definition
  let a1 be Element of REAL;
  redefine func cos a1 -> Element of REAL;
end;

:: SIN_COS:th 27
theorem
dom sin = REAL & dom cos = REAL;

:: SIN_COS:th 28
theorem
for b1 being Element of REAL holds
   exp [*0,b1*] = (cos b1) + ((sin b1) * <i>);

:: SIN_COS:th 29
theorem
for b1 being Element of REAL holds
   (exp [*0,b1*]) *' = exp - [*0,b1*];

:: SIN_COS:th 30
theorem
for b1 being Element of REAL holds
   |.exp [*0,b1*].| = 1 &
    (for b2 being real set holds
       abs sin b2 <= 1 & abs cos b2 <= 1);

:: SIN_COS:th 31
theorem
for b1 being real set holds
   (cos . b1) ^2 + ((sin . b1) ^2) = 1 &
    ((cos . b1) * (cos . b1)) + ((sin . b1) * (sin . b1)) = 1;

:: SIN_COS:th 32
theorem
for b1 being real set holds
   (cos b1) ^2 + ((sin b1) ^2) = 1 &
    ((cos b1) * cos b1) + ((sin b1) * sin b1) = 1;

:: SIN_COS:th 33
theorem
for b1 being real set holds
   cos . 0 = 1 &
    sin . 0 = 0 &
    cos . - b1 = cos . b1 &
    sin . - b1 = - (sin . b1);

:: SIN_COS:th 34
theorem
for b1 being real set holds
   cos 0 = 1 & sin 0 = 0 & cos - b1 = cos b1 & sin - b1 = - sin b1;

:: SIN_COS:funcnot 25 => SIN_COS:func 25
definition
  let a1 be real set;
  func A1 P_sin -> Function-like quasi_total Relation of NAT,REAL means
    for b1 being Element of NAT holds
       it . b1 = (((- 1) |^ b1) * (a1 |^ ((2 * b1) + 1))) / (((2 * b1) + 1) !);
end;

:: SIN_COS:def 24
theorem
for b1 being real set
for b2 being Function-like quasi_total Relation of NAT,REAL holds
      b2 = b1 P_sin
   iff
      for b3 being Element of NAT holds
         b2 . b3 = (((- 1) |^ b3) * (b1 |^ ((2 * b3) + 1))) / (((2 * b3) + 1) !);

:: SIN_COS:funcnot 26 => SIN_COS:func 26
definition
  let a1 be real set;
  func A1 P_cos -> Function-like quasi_total Relation of NAT,REAL means
    for b1 being Element of NAT holds
       it . b1 = (((- 1) |^ b1) * (a1 |^ (2 * b1))) / ((2 * b1) !);
end;

:: SIN_COS:def 25
theorem
for b1 being real set
for b2 being Function-like quasi_total Relation of NAT,REAL holds
      b2 = b1 P_cos
   iff
      for b3 being Element of NAT holds
         b2 . b3 = (((- 1) |^ b3) * (b1 |^ (2 * b3))) / ((2 * b3) !);

:: SIN_COS:th 35
theorem
for b1 being Element of COMPLEX
for b2 being Element of NAT holds
   b1 |^ (2 * b2) = (b1 |^ b2) |^ 2 &
    b1 |^ (2 * b2) = (b1 |^ 2) |^ b2;

:: SIN_COS:th 36
theorem
for b1 being Element of NAT
for b2 being Element of REAL holds
   [*0,b2*] |^ (2 * b1) = [*((- 1) |^ b1) * (b2 |^ (2 * b1)),0*] &
    [*0,b2*] |^ ((2 * b1) + 1) = [*0,((- 1) |^ b1) * (b2 |^ ((2 * b1) + 1))*];

:: SIN_COS:th 37
theorem
for b1 being Element of NAT holds
   b1 !c = b1 !;

:: SIN_COS:th 38
theorem
for b1 being Element of NAT
for b2 being Element of 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);

:: SIN_COS:th 39
theorem
for b1 being Element of 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);

:: SIN_COS:th 40
theorem
for b1 being real set holds
   cos . b1 = Sum (b1 P_cos) & sin . b1 = Sum (b1 P_sin);

:: SIN_COS:th 41
theorem
for b1, b2 being real set
for b3 being Function-like quasi_total Relation of NAT,REAL
      st b3 is convergent &
         lim b3 = b2 &
         (for b4 being Element of NAT holds
            b1 <= b3 . b4)
   holds b1 <= b2;

:: SIN_COS:th 42
theorem
for b1, b2 being Element of NAT
      st b1 <= b2
   holds b1 ! <= b2 !;

:: SIN_COS:th 43
theorem
for b1, b2 being Element of NAT
for b3 being real set
      st 0 <= b3 & b3 <= 1 & b1 <= b2
   holds b3 |^ b2 <= b3 |^ b1;

:: SIN_COS:th 44
theorem
for b1 being Element of NAT
for b2 being Element of REAL holds
   [*b2,0*] |^ b1 = [*b2 |^ b1,0*];

:: SIN_COS:th 45
theorem
for b1 being Element of NAT
for b2 being Element of REAL holds
   (b2 |^ b1) / (b1 !c) = (b2 |^ b1) / (b1 !);

:: SIN_COS:th 46
theorem
for b1 being Element of REAL holds
   Im Sum ([*b1,0*] ExpSeq) = 0;

:: SIN_COS:th 47
theorem
0 < cos . 1 &
 0 < sin . 1 &
 cos . 1 < sin . 1;

:: SIN_COS:th 48
theorem
for b1 being Element of REAL holds
   b1 ExpSeq = Re ([*b1,0*] ExpSeq);

:: SIN_COS:th 49
theorem
for b1 being Element of REAL holds
   b1 ExpSeq is summable &
    Sum (b1 ExpSeq) = Re Sum ([*b1,0*] ExpSeq);

:: SIN_COS:th 50
theorem
for b1, b2 being real set holds
Sum ((b1 + b2) ExpSeq) = (Sum (b1 ExpSeq)) * Sum (b2 ExpSeq);

:: SIN_COS:funcnot 27 => SIN_COS:func 27
definition
  func exp_R -> Function-like quasi_total Relation of REAL,REAL means
    for b1 being real set holds
       it . b1 = Sum (b1 ExpSeq);
end;

:: SIN_COS:def 26
theorem
for b1 being Function-like quasi_total Relation of REAL,REAL holds
      b1 = exp_R
   iff
      for b2 being real set holds
         b1 . b2 = Sum (b2 ExpSeq);

:: SIN_COS:funcnot 28 => SIN_COS:func 28
definition
  let a1 be real set;
  func exp_R A1 -> set equals
    exp_R . a1;
end;

:: SIN_COS:def 27
theorem
for b1 being real set holds
   exp_R b1 = exp_R . b1;

:: SIN_COS:funcreg 5
registration
  let a1 be real set;
  cluster exp_R a1 -> real;
end;

:: SIN_COS:funcnot 29 => SIN_COS:func 29
definition
  let a1 be Element of REAL;
  redefine func exp_R a1 -> Element of REAL;
end;

:: SIN_COS:th 51
theorem
dom exp_R = REAL;

:: SIN_COS:th 53
theorem
for b1 being Element of REAL holds
   exp_R . b1 = Re Sum ([*b1,0*] ExpSeq);

:: SIN_COS:th 54
theorem
for b1 being Element of REAL holds
   exp [*b1,0*] = [*exp_R b1,0*];

:: SIN_COS:th 55
theorem
for b1, b2 being real set holds
exp_R (b1 + b2) = (exp_R b1) * exp_R b2;

:: SIN_COS:th 56
theorem
exp_R 0 = 1;

:: SIN_COS:th 57
theorem
for b1 being real set
      st 0 < b1
   holds 1 <= exp_R . b1;

:: SIN_COS:th 58
theorem
for b1 being real set
      st b1 < 0
   holds 0 < exp_R . b1 & exp_R . b1 <= 1;

:: SIN_COS:th 59
theorem
for b1 being real set holds
   0 < exp_R . b1;

:: SIN_COS:th 60
theorem
for b1 being real set holds
   0 < exp_R b1;

:: SIN_COS:funcnot 30 => SIN_COS:func 30
definition
  let a1 be Element of COMPLEX;
  func A1 P_dt -> Function-like quasi_total Relation of NAT,COMPLEX means
    for b1 being Element of NAT holds
       it . b1 = (a1 |^ (b1 + 1)) / ((b1 + 2) !c);
end;

:: SIN_COS:def 28
theorem
for b1 being Element of COMPLEX
for b2 being Function-like quasi_total Relation of NAT,COMPLEX holds
      b2 = b1 P_dt
   iff
      for b3 being Element of NAT holds
         b2 . b3 = (b1 |^ (b3 + 1)) / ((b3 + 2) !c);

:: SIN_COS:funcnot 31 => SIN_COS:func 31
definition
  let a1 be Element of COMPLEX;
  func A1 P_t -> Function-like quasi_total Relation of NAT,COMPLEX means
    for b1 being Element of NAT holds
       it . b1 = (a1 #N b1) / ((b1 + 2) !c);
end;

:: SIN_COS:def 29
theorem
for b1 being Element of COMPLEX
for b2 being Function-like quasi_total Relation of NAT,COMPLEX holds
      b2 = b1 P_t
   iff
      for b3 being Element of NAT holds
         b2 . b3 = (b1 #N b3) / ((b3 + 2) !c);

:: SIN_COS:th 61
theorem
for b1 being Element of COMPLEX holds
   b1 P_dt is absolutely_summable;

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

:: SIN_COS:th 63
theorem
for b1 being real set
      st 0 < b1
   holds ex b2 being Element of REAL st
      0 < b2 &
       (for b3 being Element of COMPLEX
             st |.b3.| < b2
          holds |.Sum (b3 P_dt).| < b1);

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

:: SIN_COS:th 65
theorem
for b1, b2 being Element of REAL holds
(cos . (b1 + b2)) - (cos . b1) = (- (b2 * (sin . b1))) - (b2 * Im ((Sum ([*0,b2*] P_dt)) * [*cos . b1,sin . b1*]));

:: SIN_COS:th 66
theorem
for b1, b2 being Element of REAL holds
(sin . (b1 + b2)) - (sin . b1) = (b2 * (cos . b1)) + (b2 * Re ((Sum ([*0,b2*] P_dt)) * [*cos . b1,sin . b1*]));

:: SIN_COS:th 67
theorem
for b1, b2 being Element of REAL holds
(exp_R . (b1 + b2)) - (exp_R . b1) = (b2 * (exp_R . b1)) + ((b2 * (exp_R . b1)) * Re Sum ([*b2,0*] P_dt));

:: SIN_COS:th 68
theorem
for b1 being real set holds
   cos is_differentiable_in b1 & diff(cos,b1) = - (sin . b1);

:: SIN_COS:th 69
theorem
for b1 being real set holds
   sin is_differentiable_in b1 & diff(sin,b1) = cos . b1;

:: SIN_COS:th 70
theorem
for b1 being real set holds
   exp_R is_differentiable_in b1 & diff(exp_R,b1) = exp_R . b1;

:: SIN_COS:th 71
theorem
for b1 being real set holds
   exp_R is_differentiable_on REAL & diff(exp_R,b1) = exp_R . b1;

:: SIN_COS:th 72
theorem
for b1 being real set holds
   cos is_differentiable_on REAL & diff(cos,b1) = - (sin . b1);

:: SIN_COS:th 73
theorem
for b1 being real set holds
   sin is_differentiable_on REAL & diff(sin,b1) = cos . b1;

:: SIN_COS:th 74
theorem
for b1 being real set
      st b1 in [.0,1.]
   holds 0 < cos . b1 & 1 / 2 <= cos . b1;

:: SIN_COS:funcnot 32 => SIN_COS:func 32
definition
  func tan -> Function-like Relation of REAL,REAL equals
    sin / cos;
end;

:: SIN_COS:def 30
theorem
tan = sin / cos;

:: SIN_COS:funcnot 33 => SIN_COS:func 33
definition
  func cot -> Function-like Relation of REAL,REAL equals
    cos / sin;
end;

:: SIN_COS:def 31
theorem
cot = cos / sin;

:: SIN_COS:th 75
theorem
[.0,1.] c= dom tan &
 ].0,1.[ c= dom tan;

:: SIN_COS:th 76
theorem
tan is_continuous_on [.0,1.];

:: SIN_COS:th 77
theorem
for b1, b2 being real set
      st b1 in ].0,1.[ & b2 in ].0,1.[ & tan . b1 = tan . b2
   holds b1 = b2;

:: SIN_COS:funcnot 34 => SIN_COS:func 34
definition
  func PI -> real set means
    tan . (it / 4) = 1 & it in ].0,4.[;
end;

:: SIN_COS:def 32
theorem
for b1 being real set holds
      b1 = PI
   iff
      tan . (b1 / 4) = 1 & b1 in ].0,4.[;

:: SIN_COS:funcnot 35 => SIN_COS:func 35
definition
  redefine func PI -> Element of REAL;
end;

:: SIN_COS:th 78
theorem
sin . (PI / 4) = cos . (PI / 4);

:: SIN_COS:th 79
theorem
for b1, b2 being real set holds
sin . (b1 + b2) = ((sin . b1) * (cos . b2)) + ((cos . b1) * (sin . b2)) &
 cos . (b1 + b2) = ((cos . b1) * (cos . b2)) - ((sin . b1) * (sin . b2));

:: SIN_COS:th 80
theorem
for b1, b2 being real set holds
sin (b1 + b2) = ((sin b1) * cos b2) + ((cos b1) * sin b2) &
 cos (b1 + b2) = ((cos b1) * cos b2) - ((sin b1) * sin b2);

:: SIN_COS:th 81
theorem
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;

:: SIN_COS:th 82
theorem
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;

:: SIN_COS:th 83
theorem
for b1 being real set 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);

:: SIN_COS:th 84
theorem
for b1 being real set 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;

:: SIN_COS:th 85
theorem
for b1 being real set
      st b1 in ].0,PI / 2.[
   holds 0 < cos . b1;

:: SIN_COS:th 86
theorem
for b1 being real set
      st b1 in ].0,PI / 2.[
   holds 0 < cos b1;

:: SIN_COS:th 87
theorem
for b1, b2 being real set holds
sin (b1 - b2) = ((sin b1) * cos b2) - ((cos b1) * sin b2) &
 cos (b1 - b2) = ((cos b1) * cos b2) + ((sin b1) * sin b2);

:: SIN_COS:th 88
theorem
for b1, b2 being real set holds
sin (b1 - b2) = ((sin b1) * cos b2) - ((cos b1) * sin b2);

:: SIN_COS:th 89
theorem
for b1, b2 being real set holds
cos (b1 - b2) = ((cos b1) * cos b2) + ((sin b1) * sin b2);

:: SIN_COS:funcnot 36 => SIN_COS:func 4
definition
  let a1 be Element of NAT;
  func A1 !c -> Element of COMPLEX equals
    a1 !;
end;

:: SIN_COS:def 33
theorem
for b1 being Element of NAT holds
   b1 !c = b1 !;