# Trigonometric functions #

## Main definitions #

This file contains the definition of π.

See also Analysis.SpecialFunctions.Trigonometric.Inverse and Analysis.SpecialFunctions.Trigonometric.Arctan for the inverse trigonometric functions.

See also Analysis.SpecialFunctions.Complex.Arg and Analysis.SpecialFunctions.Complex.Log for the complex argument function and the complex logarithm.

## Main statements #

Many basic inequalities on the real trigonometric functions are established.

The continuity of the usual trigonometric functions is proved.

Several facts about the real trigonometric functions have the proofs deferred to Analysis.SpecialFunctions.Trigonometric.Complex, as they are most easily proved by appealing to the corresponding fact for complex trigonometric functions.

See also Analysis.SpecialFunctions.Trigonometric.Chebyshev for the multiple angle formulas in terms of Chebyshev polynomials.

## Tags #

sin, cos, tan, angle

noncomputable def Real.pi :

The number π = 3.14159265... Defined here using choice as twice a zero of cos in [1,2], from which one can derive all its properties. For explicit bounds on π, see Data.Real.Pi.Bounds.

Equations
Instances For

The number π = 3.14159265... Defined here using choice as twice a zero of cos in [1,2], from which one can derive all its properties. For explicit bounds on π, see Data.Real.Pi.Bounds.

Equations
Instances For

Extension for the positivity tactic: π is always positive.

Equations
• One or more equations did not get rendered due to their size.
Instances For
noncomputable def NNReal.pi :

π considered as a nonnegative real.

Equations
Instances For
@[simp]
@[simp]
theorem Real.sin_pi :
@[simp]
theorem Real.cos_pi :
@[simp]
@[simp]
@[simp]
theorem Real.sin_add_pi (x : ) :
@[simp]
theorem Real.sin_add_two_pi (x : ) :
Real.sin (x + ) =
@[simp]
theorem Real.sin_sub_pi (x : ) :
@[simp]
theorem Real.sin_sub_two_pi (x : ) :
Real.sin (x - ) =
@[simp]
theorem Real.sin_pi_sub (x : ) :
@[simp]
theorem Real.sin_two_pi_sub (x : ) :
Real.sin ( - x) =
@[simp]
theorem Real.sin_nat_mul_pi (n : ) :
Real.sin (n * Real.pi) = 0
@[simp]
theorem Real.sin_int_mul_pi (n : ) :
Real.sin (n * Real.pi) = 0
@[simp]
theorem Real.sin_add_nat_mul_two_pi (x : ) (n : ) :
Real.sin (x + n * (2 * Real.pi)) =
@[simp]
theorem Real.sin_add_int_mul_two_pi (x : ) (n : ) :
Real.sin (x + n * (2 * Real.pi)) =
@[simp]
theorem Real.sin_sub_nat_mul_two_pi (x : ) (n : ) :
Real.sin (x - n * (2 * Real.pi)) =
@[simp]
theorem Real.sin_sub_int_mul_two_pi (x : ) (n : ) :
Real.sin (x - n * (2 * Real.pi)) =
@[simp]
theorem Real.sin_nat_mul_two_pi_sub (x : ) (n : ) :
Real.sin (n * (2 * Real.pi) - x) =
@[simp]
theorem Real.sin_int_mul_two_pi_sub (x : ) (n : ) :
Real.sin (n * (2 * Real.pi) - x) =
theorem Real.sin_add_int_mul_pi (x : ) (n : ) :
Real.sin (x + n * Real.pi) = (-1) ^ n *
theorem Real.sin_add_nat_mul_pi (x : ) (n : ) :
Real.sin (x + n * Real.pi) = (-1) ^ n *
theorem Real.sin_sub_int_mul_pi (x : ) (n : ) :
Real.sin (x - n * Real.pi) = (-1) ^ n *
theorem Real.sin_sub_nat_mul_pi (x : ) (n : ) :
Real.sin (x - n * Real.pi) = (-1) ^ n *
theorem Real.sin_int_mul_pi_sub (x : ) (n : ) :
Real.sin (n * Real.pi - x) = -((-1) ^ n * )
theorem Real.sin_nat_mul_pi_sub (x : ) (n : ) :
Real.sin (n * Real.pi - x) = -((-1) ^ n * )
@[simp]
theorem Real.abs_cos_int_mul_pi (k : ) :
|Real.cos (k * Real.pi)| = 1
@[simp]
theorem Real.cos_add_pi (x : ) :
@[simp]
theorem Real.cos_add_two_pi (x : ) :
Real.cos (x + ) =
@[simp]
theorem Real.cos_sub_pi (x : ) :
@[simp]
theorem Real.cos_sub_two_pi (x : ) :
Real.cos (x - ) =
@[simp]
theorem Real.cos_pi_sub (x : ) :
@[simp]
theorem Real.cos_two_pi_sub (x : ) :
Real.cos ( - x) =
@[simp]
theorem Real.cos_nat_mul_two_pi (n : ) :
Real.cos (n * (2 * Real.pi)) = 1
@[simp]
theorem Real.cos_int_mul_two_pi (n : ) :
Real.cos (n * (2 * Real.pi)) = 1
@[simp]
theorem Real.cos_add_nat_mul_two_pi (x : ) (n : ) :
Real.cos (x + n * (2 * Real.pi)) =
@[simp]
theorem Real.cos_add_int_mul_two_pi (x : ) (n : ) :
Real.cos (x + n * (2 * Real.pi)) =
@[simp]
theorem Real.cos_sub_nat_mul_two_pi (x : ) (n : ) :
Real.cos (x - n * (2 * Real.pi)) =
@[simp]
theorem Real.cos_sub_int_mul_two_pi (x : ) (n : ) :
Real.cos (x - n * (2 * Real.pi)) =
@[simp]
theorem Real.cos_nat_mul_two_pi_sub (x : ) (n : ) :
Real.cos (n * (2 * Real.pi) - x) =
@[simp]
theorem Real.cos_int_mul_two_pi_sub (x : ) (n : ) :
Real.cos (n * (2 * Real.pi) - x) =
theorem Real.cos_add_int_mul_pi (x : ) (n : ) :
Real.cos (x + n * Real.pi) = (-1) ^ n *
theorem Real.cos_add_nat_mul_pi (x : ) (n : ) :
Real.cos (x + n * Real.pi) = (-1) ^ n *
theorem Real.cos_sub_int_mul_pi (x : ) (n : ) :
Real.cos (x - n * Real.pi) = (-1) ^ n *
theorem Real.cos_sub_nat_mul_pi (x : ) (n : ) :
Real.cos (x - n * Real.pi) = (-1) ^ n *
theorem Real.cos_int_mul_pi_sub (x : ) (n : ) :
Real.cos (n * Real.pi - x) = (-1) ^ n *
theorem Real.cos_nat_mul_pi_sub (x : ) (n : ) :
Real.cos (n * Real.pi - x) = (-1) ^ n *
theorem Real.sin_pos_of_pos_of_lt_pi {x : } (h0x : 0 < x) (hxp : ) :
0 <
theorem Real.sin_pos_of_mem_Ioo {x : } (hx : x ) :
0 <
theorem Real.sin_nonneg_of_mem_Icc {x : } (hx : x ) :
0
theorem Real.sin_nonneg_of_nonneg_of_le_pi {x : } (h0x : 0 x) (hxp : ) :
0
theorem Real.sin_neg_of_neg_of_neg_pi_lt {x : } (hx0 : x < 0) (hpx : ) :
< 0
theorem Real.sin_nonpos_of_nonnpos_of_neg_pi_le {x : } (hx0 : x 0) (hpx : ) :
0
theorem Real.cos_pos_of_mem_Ioo {x : } (hx : x Set.Ioo (-(Real.pi / 2)) (Real.pi / 2)) :
0 <
theorem Real.cos_nonneg_of_mem_Icc {x : } (hx : x Set.Icc (-(Real.pi / 2)) (Real.pi / 2)) :
0
theorem Real.cos_nonneg_of_neg_pi_div_two_le_of_le {x : } (hl : -(Real.pi / 2) x) (hu : x ) :
0
theorem Real.cos_neg_of_pi_div_two_lt_of_lt {x : } (hx₁ : < x) (hx₂ : x < ) :
< 0
theorem Real.cos_nonpos_of_pi_div_two_le_of_le {x : } (hx₁ : x) (hx₂ : x ) :
0
theorem Real.sin_eq_sqrt_one_sub_cos_sq {x : } (hl : 0 x) (hu : ) :
= (1 - ^ 2)
theorem Real.cos_eq_sqrt_one_sub_sin_sq {x : } (hl : -(Real.pi / 2) x) (hu : x ) :
= (1 - ^ 2)
theorem Real.cos_half {x : } (hl : ) (hr : ) :
Real.cos (x / 2) = ((1 + ) / 2)
theorem Real.abs_sin_half (x : ) :
|Real.sin (x / 2)| = ((1 - ) / 2)
theorem Real.sin_half_eq_sqrt {x : } (hl : 0 x) (hr : x ) :
Real.sin (x / 2) = ((1 - ) / 2)
theorem Real.sin_half_eq_neg_sqrt {x : } (hl : -(2 * Real.pi) x) (hr : x 0) :
Real.sin (x / 2) = -((1 - ) / 2)
theorem Real.sin_eq_zero_iff_of_lt_of_lt {x : } (hx₁ : ) (hx₂ : ) :
= 0 x = 0
theorem Real.sin_eq_zero_iff {x : } :
= 0 ∃ (n : ), n * Real.pi = x
theorem Real.sin_ne_zero_iff {x : } :
0 ∀ (n : ), n * Real.pi x
theorem Real.cos_eq_one_iff (x : ) :
= 1 ∃ (n : ), n * (2 * Real.pi) = x
theorem Real.cos_eq_one_iff_of_lt_of_lt {x : } (hx₁ : -(2 * Real.pi) < x) (hx₂ : x < ) :
= 1 x = 0
theorem Real.sin_lt_sin_of_lt_of_le_pi_div_two {x : } {y : } (hx₁ : -(Real.pi / 2) x) (hy₂ : y ) (hxy : x < y) :
theorem Real.cos_lt_cos_of_nonneg_of_le_pi {x : } {y : } (hx₁ : 0 x) (hy₂ : ) (hxy : x < y) :
theorem Real.cos_lt_cos_of_nonneg_of_le_pi_div_two {x : } {y : } (hx₁ : 0 x) (hy₂ : y ) (hxy : x < y) :
theorem Real.cos_le_cos_of_nonneg_of_le_pi {x : } {y : } (hx₁ : 0 x) (hy₂ : ) (hxy : x y) :
theorem Real.sin_le_sin_of_le_of_le_pi_div_two {x : } {y : } (hx₁ : -(Real.pi / 2) x) (hy₂ : y ) (hxy : x y) :
theorem Real.sin_mem_Icc (x : ) :
Set.Icc (-1) 1
theorem Real.cos_mem_Icc (x : ) :
Set.Icc (-1) 1
@[simp]
theorem Real.range_cos :
= Set.Icc (-1) 1
@[simp]
theorem Real.range_sin :
= Set.Icc (-1) 1
noncomputable def Real.sqrtTwoAddSeries (x : ) :

the series sqrtTwoAddSeries x n is sqrt(2 + sqrt(2 + ... )) with n square roots, starting with x. We define it here because cos (pi / 2 ^ (n+1)) = sqrtTwoAddSeries 0 n / 2

Equations
Instances For
theorem Real.sqrtTwoAddSeries_zero (x : ) :
theorem Real.sqrtTwoAddSeries_nonneg {x : } (h : 0 x) (n : ) :
theorem Real.sqrtTwoAddSeries_succ (x : ) (n : ) :
theorem Real.sqrtTwoAddSeries_monotone_left {x : } {y : } (h : x y) (n : ) :
@[simp]
theorem Real.cos_pi_over_two_pow (n : ) :
Real.cos (Real.pi / 2 ^ (n + 1)) =
theorem Real.sin_sq_pi_over_two_pow (n : ) :
Real.sin (Real.pi / 2 ^ (n + 1)) ^ 2 = 1 - ( / 2) ^ 2
theorem Real.sin_sq_pi_over_two_pow_succ (n : ) :
Real.sin (Real.pi / 2 ^ (n + 2)) ^ 2 = 1 / 2 -
@[simp]
theorem Real.sin_pi_over_two_pow_succ (n : ) :
Real.sin (Real.pi / 2 ^ (n + 2)) = (2 - ) / 2
@[simp]
@[simp]
@[simp]
@[simp]
@[simp]
@[simp]
@[simp]

The cosine of π / 3 is 1 / 2.

@[simp]

The cosine of π / 6 is √3 / 2.

The square of the cosine of π / 6 is 3 / 4 (this is sometimes more convenient than the result for cosine itself).

@[simp]

The sine of π / 6 is 1 / 2.

The square of the sine of π / 3 is 3 / 4 (this is sometimes more convenient than the result for cosine itself).

@[simp]

The sine of π / 3 is √3 / 2.

def Real.sinOrderIso :
(Set.Icc (-(Real.pi / 2)) (Real.pi / 2)) ≃o (Set.Icc (-1) 1)

Real.sin as an OrderIso between [-(π / 2), π / 2] and [-1, 1].

Equations
• One or more equations did not get rendered due to their size.
Instances For
@[simp]
theorem Real.coe_sinOrderIso_apply (x : (Set.Icc (-(Real.pi / 2)) (Real.pi / 2))) :
(Real.sinOrderIso x) = Real.sin x
theorem Real.sinOrderIso_apply (x : (Set.Icc (-(Real.pi / 2)) (Real.pi / 2))) :
Real.sinOrderIso x = Real.sin x,
theorem Real.tan_pos_of_pos_of_lt_pi_div_two {x : } (h0x : 0 < x) (hxp : x < ) :
0 <
theorem Real.tan_nonneg_of_nonneg_of_le_pi_div_two {x : } (h0x : 0 x) (hxp : x ) :
0
theorem Real.tan_neg_of_neg_of_pi_div_two_lt {x : } (hx0 : x < 0) (hpx : -(Real.pi / 2) < x) :
< 0
theorem Real.tan_nonpos_of_nonpos_of_neg_pi_div_two_le {x : } (hx0 : x 0) (hpx : -(Real.pi / 2) x) :
0
theorem Real.tan_lt_tan_of_lt_of_lt_pi_div_two {x : } {y : } (hx₁ : -(Real.pi / 2) < x) (hy₂ : y < ) (hxy : x < y) :
theorem Real.tan_lt_tan_of_nonneg_of_lt_pi_div_two {x : } {y : } (hx₁ : 0 x) (hy₂ : y < ) (hxy : x < y) :
theorem Real.tan_inj_of_lt_of_lt_pi_div_two {x : } {y : } (hx₁ : -(Real.pi / 2) < x) (hx₂ : x < ) (hy₁ : -(Real.pi / 2) < y) (hy₂ : y < ) (hxy : ) :
x = y
@[simp]
theorem Real.tan_pi :
theorem Real.tan_add_nat_mul_pi (x : ) (n : ) :
Real.tan (x + n * Real.pi) =
theorem Real.tan_add_int_mul_pi (x : ) (n : ) :
Real.tan (x + n * Real.pi) =
theorem Real.tan_sub_nat_mul_pi (x : ) (n : ) :
Real.tan (x - n * Real.pi) =
theorem Real.tan_sub_int_mul_pi (x : ) (n : ) :
Real.tan (x - n * Real.pi) =
theorem Real.tan_nat_mul_pi_sub (x : ) (n : ) :
Real.tan (n * Real.pi - x) =
theorem Real.tan_int_mul_pi_sub (x : ) (n : ) :
Real.tan (n * Real.pi - x) =
@[simp]
theorem Complex.sin_pi :
@[simp]
theorem Complex.cos_pi :
@[simp]
@[simp]
theorem Complex.sin_add_nat_mul_two_pi (x : ) (n : ) :
Complex.sin (x + n * (2 * )) =
theorem Complex.sin_add_int_mul_two_pi (x : ) (n : ) :
Complex.sin (x + n * (2 * )) =
theorem Complex.sin_sub_nat_mul_two_pi (x : ) (n : ) :
Complex.sin (x - n * (2 * )) =
theorem Complex.sin_sub_int_mul_two_pi (x : ) (n : ) :
Complex.sin (x - n * (2 * )) =
theorem Complex.sin_nat_mul_two_pi_sub (x : ) (n : ) :
Complex.sin (n * (2 * ) - x) =
theorem Complex.sin_int_mul_two_pi_sub (x : ) (n : ) :
Complex.sin (n * (2 * ) - x) =
theorem Complex.cos_nat_mul_two_pi (n : ) :
Complex.cos (n * (2 * )) = 1
theorem Complex.cos_int_mul_two_pi (n : ) :
Complex.cos (n * (2 * )) = 1
theorem Complex.cos_add_nat_mul_two_pi (x : ) (n : ) :
Complex.cos (x + n * (2 * )) =
theorem Complex.cos_add_int_mul_two_pi (x : ) (n : ) :
Complex.cos (x + n * (2 * )) =
theorem Complex.cos_sub_nat_mul_two_pi (x : ) (n : ) :
Complex.cos (x - n * (2 * )) =
theorem Complex.cos_sub_int_mul_two_pi (x : ) (n : ) :
Complex.cos (x - n * (2 * )) =
theorem Complex.cos_nat_mul_two_pi_sub (x : ) (n : ) :
Complex.cos (n * (2 * ) - x) =
theorem Complex.cos_int_mul_two_pi_sub (x : ) (n : ) :
Complex.cos (n * (2 * ) - x) =
theorem Complex.tan_add_nat_mul_pi (x : ) (n : ) :
Complex.tan (x + n * ) =
theorem Complex.tan_add_int_mul_pi (x : ) (n : ) :
Complex.tan (x + n * ) =
theorem Complex.tan_sub_nat_mul_pi (x : ) (n : ) :
Complex.tan (x - n * ) =
theorem Complex.tan_sub_int_mul_pi (x : ) (n : ) :
Complex.tan (x - n * ) =
theorem Complex.tan_nat_mul_pi_sub (x : ) (n : ) :
Complex.tan (n * - x) =
theorem Complex.tan_int_mul_pi_sub (x : ) (n : ) :
Complex.tan (n * - x) =
@[simp]
theorem Complex.exp_pi_mul_I :
= -1
@[simp]
@[simp]
theorem Complex.abs_exp_mul_exp_add_exp_neg_le_of_abs_im_le {a : } {b : } (ha : a 0) {z : } (hz : |z.im| b) (hb : b ) :
Complex.abs (Complex.exp (a * ( + Complex.exp (-z)))) Real.exp (a * * Real.exp |z.re|)

A supporting lemma for the Phragmen-Lindelöf principle in a horizontal strip. If z : ℂ belongs to a horizontal strip |Complex.im z| ≤ b, b ≤ π / 2, and a ≤ 0, then $$\left|exp^{a\left(e^{z}+e^{-z}\right)}\right| \le e^{a\cos b \exp^{|re z|}}.$$