Documentation

Mathlib.Analysis.SpecialFunctions.Trigonometric.Angle

The type of angles #

In this file we define Real.Angle to be the quotient group ℝ/2πℤ and prove a few simple lemmas about trigonometric functions and angles.

The type of angles

Equations

The canonical map from to the quotient Angle.

Equations
  • r = r
theorem Real.Angle.induction_on {p : Real.AngleProp} (θ : Real.Angle) (h : ∀ (x : ), p x) :
p θ

An induction principle to deduce results for Angle from those for , used with induction θ using Real.Angle.induction_on.

@[simp]
theorem Real.Angle.coe_zero :
0 = 0
@[simp]
theorem Real.Angle.coe_add (x y : ) :
(x + y) = x + y
@[simp]
theorem Real.Angle.coe_neg (x : ) :
(-x) = -x
@[simp]
theorem Real.Angle.coe_sub (x y : ) :
(x - y) = x - y
theorem Real.Angle.coe_nsmul (n : ) (x : ) :
(n x) = n x
theorem Real.Angle.coe_zsmul (z : ) (x : ) :
(z x) = z x
@[simp]
theorem Real.Angle.natCast_mul_eq_nsmul (x : ) (n : ) :
(n * x) = n x
@[simp]
theorem Real.Angle.intCast_mul_eq_zsmul (x : ) (n : ) :
(n * x) = n x
@[deprecated Real.Angle.natCast_mul_eq_nsmul]
theorem Real.Angle.coe_nat_mul_eq_nsmul (x : ) (n : ) :
(n * x) = n x

Alias of Real.Angle.natCast_mul_eq_nsmul.

@[deprecated Real.Angle.intCast_mul_eq_zsmul]
theorem Real.Angle.coe_int_mul_eq_zsmul (x : ) (n : ) :
(n * x) = n x

Alias of Real.Angle.intCast_mul_eq_zsmul.

theorem Real.Angle.angle_eq_iff_two_pi_dvd_sub {ψ θ : } :
θ = ψ ∃ (k : ), θ - ψ = 2 * Real.pi * k
@[simp]
theorem Real.Angle.coe_two_pi :
(2 * Real.pi) = 0
@[simp]
theorem Real.Angle.two_nsmul_coe_div_two (θ : ) :
2 (θ / 2) = θ
@[simp]
theorem Real.Angle.two_zsmul_coe_div_two (θ : ) :
2 (θ / 2) = θ
theorem Real.Angle.zsmul_eq_iff {ψ θ : Real.Angle} {z : } (hz : z 0) :
z ψ = z θ ∃ (k : Fin z.natAbs), ψ = θ + k (2 * Real.pi / z)
theorem Real.Angle.nsmul_eq_iff {ψ θ : Real.Angle} {n : } (hz : n 0) :
n ψ = n θ ∃ (k : Fin n), ψ = θ + k (2 * Real.pi / n)
theorem Real.Angle.two_zsmul_eq_iff {ψ θ : Real.Angle} :
2 ψ = 2 θ ψ = θ ψ = θ + Real.pi
theorem Real.Angle.two_nsmul_eq_iff {ψ θ : Real.Angle} :
2 ψ = 2 θ ψ = θ ψ = θ + Real.pi
theorem Real.Angle.eq_neg_self_iff {θ : Real.Angle} :
θ = -θ θ = 0 θ = Real.pi
theorem Real.Angle.neg_eq_self_iff {θ : Real.Angle} :
-θ = θ θ = 0 θ = Real.pi
theorem Real.Angle.two_nsmul_eq_pi_iff {θ : Real.Angle} :
2 θ = Real.pi θ = (Real.pi / 2) θ = (-Real.pi / 2)
theorem Real.Angle.two_zsmul_eq_pi_iff {θ : Real.Angle} :
2 θ = Real.pi θ = (Real.pi / 2) θ = (-Real.pi / 2)
theorem Real.Angle.cos_eq_iff_coe_eq_or_eq_neg {θ ψ : } :
Real.cos θ = Real.cos ψ θ = ψ θ = -ψ
theorem Real.Angle.sin_eq_iff_coe_eq_or_add_eq_pi {θ ψ : } :
Real.sin θ = Real.sin ψ θ = ψ θ + ψ = Real.pi
theorem Real.Angle.cos_sin_inj {θ ψ : } (Hcos : Real.cos θ = Real.cos ψ) (Hsin : Real.sin θ = Real.sin ψ) :
θ = ψ

The sine of a Real.Angle.

Equations
@[simp]
theorem Real.Angle.sin_coe (x : ) :
(↑x).sin = Real.sin x

The cosine of a Real.Angle.

Equations
@[simp]
theorem Real.Angle.cos_coe (x : ) :
(↑x).cos = Real.cos x
theorem Real.Angle.cos_eq_real_cos_iff_eq_or_eq_neg {θ : Real.Angle} {ψ : } :
θ.cos = Real.cos ψ θ = ψ θ = -ψ
theorem Real.Angle.cos_eq_iff_eq_or_eq_neg {θ ψ : Real.Angle} :
θ.cos = ψ.cos θ = ψ θ = -ψ
theorem Real.Angle.sin_eq_real_sin_iff_eq_or_add_eq_pi {θ : Real.Angle} {ψ : } :
θ.sin = Real.sin ψ θ = ψ θ + ψ = Real.pi
theorem Real.Angle.sin_eq_iff_eq_or_add_eq_pi {θ ψ : Real.Angle} :
θ.sin = ψ.sin θ = ψ θ + ψ = Real.pi
theorem Real.Angle.sin_eq_zero_iff {θ : Real.Angle} :
θ.sin = 0 θ = 0 θ = Real.pi
theorem Real.Angle.sin_ne_zero_iff {θ : Real.Angle} :
θ.sin 0 θ 0 θ Real.pi
@[simp]
theorem Real.Angle.sin_neg (θ : Real.Angle) :
(-θ).sin = -θ.sin
@[simp]
theorem Real.Angle.sin_add_pi (θ : Real.Angle) :
(θ + Real.pi).sin = -θ.sin
@[simp]
theorem Real.Angle.sin_sub_pi (θ : Real.Angle) :
(θ - Real.pi).sin = -θ.sin
@[simp]
theorem Real.Angle.cos_neg (θ : Real.Angle) :
(-θ).cos = θ.cos
@[simp]
theorem Real.Angle.cos_add_pi (θ : Real.Angle) :
(θ + Real.pi).cos = -θ.cos
@[simp]
theorem Real.Angle.cos_sub_pi (θ : Real.Angle) :
(θ - Real.pi).cos = -θ.cos
theorem Real.Angle.cos_eq_zero_iff {θ : Real.Angle} :
θ.cos = 0 θ = (Real.pi / 2) θ = (-Real.pi / 2)
theorem Real.Angle.sin_add (θ₁ θ₂ : Real.Angle) :
(θ₁ + θ₂).sin = θ₁.sin * θ₂.cos + θ₁.cos * θ₂.sin
theorem Real.Angle.cos_add (θ₁ θ₂ : Real.Angle) :
(θ₁ + θ₂).cos = θ₁.cos * θ₂.cos - θ₁.sin * θ₂.sin
@[simp]
theorem Real.Angle.cos_sq_add_sin_sq (θ : Real.Angle) :
θ.cos ^ 2 + θ.sin ^ 2 = 1
theorem Real.Angle.sin_add_pi_div_two (θ : Real.Angle) :
(θ + (Real.pi / 2)).sin = θ.cos
theorem Real.Angle.sin_sub_pi_div_two (θ : Real.Angle) :
(θ - (Real.pi / 2)).sin = -θ.cos
theorem Real.Angle.sin_pi_div_two_sub (θ : Real.Angle) :
((Real.pi / 2) - θ).sin = θ.cos
theorem Real.Angle.cos_add_pi_div_two (θ : Real.Angle) :
(θ + (Real.pi / 2)).cos = -θ.sin
theorem Real.Angle.cos_sub_pi_div_two (θ : Real.Angle) :
(θ - (Real.pi / 2)).cos = θ.sin
theorem Real.Angle.cos_pi_div_two_sub (θ : Real.Angle) :
((Real.pi / 2) - θ).cos = θ.sin
theorem Real.Angle.abs_sin_eq_of_two_nsmul_eq {θ ψ : Real.Angle} (h : 2 θ = 2 ψ) :
|θ.sin| = |ψ.sin|
theorem Real.Angle.abs_sin_eq_of_two_zsmul_eq {θ ψ : Real.Angle} (h : 2 θ = 2 ψ) :
|θ.sin| = |ψ.sin|
theorem Real.Angle.abs_cos_eq_of_two_nsmul_eq {θ ψ : Real.Angle} (h : 2 θ = 2 ψ) :
|θ.cos| = |ψ.cos|
theorem Real.Angle.abs_cos_eq_of_two_zsmul_eq {θ ψ : Real.Angle} (h : 2 θ = 2 ψ) :
|θ.cos| = |ψ.cos|
@[simp]
theorem Real.Angle.coe_toIcoMod (θ ψ : ) :
(toIcoMod Real.two_pi_pos ψ θ) = θ
@[simp]
theorem Real.Angle.coe_toIocMod (θ ψ : ) :
(toIocMod Real.two_pi_pos ψ θ) = θ

Convert a Real.Angle to a real number in the interval Ioc (-π) π.

Equations
theorem Real.Angle.toReal_coe_eq_self_iff {θ : } :
(↑θ).toReal = θ -Real.pi < θ θ Real.pi
@[simp]
theorem Real.Angle.toReal_inj {θ ψ : Real.Angle} :
θ.toReal = ψ.toReal θ = ψ
@[simp]
theorem Real.Angle.coe_toReal (θ : Real.Angle) :
θ.toReal = θ
@[simp]
@[simp]
theorem Real.Angle.toReal_eq_zero_iff {θ : Real.Angle} :
θ.toReal = 0 θ = 0
@[simp]
theorem Real.Angle.toReal_pi :
(↑Real.pi).toReal = Real.pi
@[simp]
theorem Real.Angle.toReal_eq_pi_iff {θ : Real.Angle} :
θ.toReal = Real.pi θ = Real.pi
@[simp]
theorem Real.Angle.toReal_pi_div_two :
(↑(Real.pi / 2)).toReal = Real.pi / 2
@[simp]
theorem Real.Angle.toReal_eq_pi_div_two_iff {θ : Real.Angle} :
θ.toReal = Real.pi / 2 θ = (Real.pi / 2)
@[simp]
@[simp]
theorem Real.Angle.abs_toReal_coe_eq_self_iff {θ : } :
|(↑θ).toReal| = θ 0 θ θ Real.pi
theorem Real.Angle.abs_toReal_neg_coe_eq_self_iff {θ : } :
|(-θ).toReal| = θ 0 θ θ Real.pi
theorem Real.Angle.abs_toReal_eq_pi_div_two_iff {θ : Real.Angle} :
|θ.toReal| = Real.pi / 2 θ = (Real.pi / 2) θ = (-Real.pi / 2)
theorem Real.Angle.nsmul_toReal_eq_mul {n : } (h : n 0) {θ : Real.Angle} :
(n θ).toReal = n * θ.toReal θ.toReal Set.Ioc (-Real.pi / n) (Real.pi / n)
theorem Real.Angle.two_nsmul_toReal_eq_two_mul {θ : Real.Angle} :
(2 θ).toReal = 2 * θ.toReal θ.toReal Set.Ioc (-Real.pi / 2) (Real.pi / 2)
theorem Real.Angle.two_zsmul_toReal_eq_two_mul {θ : Real.Angle} :
(2 θ).toReal = 2 * θ.toReal θ.toReal Set.Ioc (-Real.pi / 2) (Real.pi / 2)
theorem Real.Angle.toReal_coe_eq_self_sub_two_mul_int_mul_pi_iff {θ : } {k : } :
(↑θ).toReal = θ - 2 * k * Real.pi θ Set.Ioc ((2 * k - 1) * Real.pi) ((2 * k + 1) * Real.pi)
theorem Real.Angle.two_nsmul_toReal_eq_two_mul_sub_two_pi {θ : Real.Angle} :
(2 θ).toReal = 2 * θ.toReal - 2 * Real.pi Real.pi / 2 < θ.toReal
theorem Real.Angle.two_zsmul_toReal_eq_two_mul_sub_two_pi {θ : Real.Angle} :
(2 θ).toReal = 2 * θ.toReal - 2 * Real.pi Real.pi / 2 < θ.toReal
theorem Real.Angle.two_nsmul_toReal_eq_two_mul_add_two_pi {θ : Real.Angle} :
(2 θ).toReal = 2 * θ.toReal + 2 * Real.pi θ.toReal -Real.pi / 2
theorem Real.Angle.two_zsmul_toReal_eq_two_mul_add_two_pi {θ : Real.Angle} :
(2 θ).toReal = 2 * θ.toReal + 2 * Real.pi θ.toReal -Real.pi / 2
@[simp]
theorem Real.Angle.sin_toReal (θ : Real.Angle) :
Real.sin θ.toReal = θ.sin
@[simp]
theorem Real.Angle.cos_toReal (θ : Real.Angle) :
Real.cos θ.toReal = θ.cos
theorem Real.Angle.abs_cos_eq_abs_sin_of_two_nsmul_add_two_nsmul_eq_pi {θ ψ : Real.Angle} (h : 2 θ + 2 ψ = Real.pi) :
|θ.cos| = |ψ.sin|
theorem Real.Angle.abs_cos_eq_abs_sin_of_two_zsmul_add_two_zsmul_eq_pi {θ ψ : Real.Angle} (h : 2 θ + 2 ψ = Real.pi) :
|θ.cos| = |ψ.sin|

The tangent of a Real.Angle.

Equations
  • θ.tan = θ.sin / θ.cos
theorem Real.Angle.tan_eq_sin_div_cos (θ : Real.Angle) :
θ.tan = θ.sin / θ.cos
@[simp]
theorem Real.Angle.tan_coe (x : ) :
(↑x).tan = Real.tan x
@[simp]
theorem Real.Angle.tan_add_pi (θ : Real.Angle) :
(θ + Real.pi).tan = θ.tan
@[simp]
theorem Real.Angle.tan_sub_pi (θ : Real.Angle) :
(θ - Real.pi).tan = θ.tan
@[simp]
theorem Real.Angle.tan_toReal (θ : Real.Angle) :
Real.tan θ.toReal = θ.tan
theorem Real.Angle.tan_eq_of_two_nsmul_eq {θ ψ : Real.Angle} (h : 2 θ = 2 ψ) :
θ.tan = ψ.tan
theorem Real.Angle.tan_eq_of_two_zsmul_eq {θ ψ : Real.Angle} (h : 2 θ = 2 ψ) :
θ.tan = ψ.tan

The sign of a Real.Angle is 0 if the angle is 0 or π, 1 if the angle is strictly between 0 and π and -1 is the angle is strictly between and 0. It is defined as the sign of the sine of the angle.

Equations
  • θ.sign = SignType.sign θ.sin
@[simp]
theorem Real.Angle.sign_coe_pi :
(↑Real.pi).sign = 0
@[simp]
theorem Real.Angle.sign_neg (θ : Real.Angle) :
(-θ).sign = -θ.sign
@[simp]
theorem Real.Angle.sign_add_pi (θ : Real.Angle) :
(θ + Real.pi).sign = -θ.sign
@[simp]
theorem Real.Angle.sign_pi_add (θ : Real.Angle) :
(Real.pi + θ).sign = -θ.sign
@[simp]
theorem Real.Angle.sign_sub_pi (θ : Real.Angle) :
(θ - Real.pi).sign = -θ.sign
@[simp]
theorem Real.Angle.sign_pi_sub (θ : Real.Angle) :
(Real.pi - θ).sign = θ.sign
theorem Real.Angle.sign_eq_zero_iff {θ : Real.Angle} :
θ.sign = 0 θ = 0 θ = Real.pi
theorem Real.Angle.sign_ne_zero_iff {θ : Real.Angle} :
θ.sign 0 θ 0 θ Real.pi
theorem Real.Angle.toReal_neg_iff_sign_neg {θ : Real.Angle} :
θ.toReal < 0 θ.sign = -1
@[simp]
theorem Real.Angle.sign_toReal {θ : Real.Angle} (h : θ Real.pi) :
SignType.sign θ.toReal = θ.sign
theorem Real.Angle.coe_abs_toReal_of_sign_nonneg {θ : Real.Angle} (h : 0 θ.sign) :
|θ.toReal| = θ
theorem Real.Angle.neg_coe_abs_toReal_of_sign_nonpos {θ : Real.Angle} (h : θ.sign 0) :
-|θ.toReal| = θ
theorem Real.Angle.eq_iff_sign_eq_and_abs_toReal_eq {θ ψ : Real.Angle} :
θ = ψ θ.sign = ψ.sign |θ.toReal| = |ψ.toReal|
theorem Real.Angle.eq_iff_abs_toReal_eq_of_sign_eq {θ ψ : Real.Angle} (h : θ.sign = ψ.sign) :
θ = ψ |θ.toReal| = |ψ.toReal|
@[simp]
theorem Real.Angle.sign_coe_pi_div_two :
(↑(Real.pi / 2)).sign = 1
@[simp]
theorem Real.Angle.sign_coe_nonneg_of_nonneg_of_le_pi {θ : } (h0 : 0 θ) (hpi : θ Real.pi) :
0 (↑θ).sign
theorem Real.Angle.sign_neg_coe_nonpos_of_nonneg_of_le_pi {θ : } (h0 : 0 θ) (hpi : θ Real.pi) :
(-θ).sign 0
theorem Real.Angle.sign_two_nsmul_eq_sign_iff {θ : Real.Angle} :
(2 θ).sign = θ.sign θ = Real.pi |θ.toReal| < Real.pi / 2
theorem Real.Angle.sign_two_zsmul_eq_sign_iff {θ : Real.Angle} :
(2 θ).sign = θ.sign θ = Real.pi |θ.toReal| < Real.pi / 2
theorem ContinuousOn.angle_sign_comp {α : Type u_1} [TopologicalSpace α] {f : αReal.Angle} {s : Set α} (hf : ContinuousOn f s) (hs : zs, f z 0 f z Real.pi) :
theorem Real.Angle.sign_eq_of_continuousOn {α : Type u_1} [TopologicalSpace α] {f : αReal.Angle} {s : Set α} {x y : α} (hc : IsConnected s) (hf : ContinuousOn f s) (hs : zs, f z 0 f z Real.pi) (hx : x s) (hy : y s) :
(f y).sign = (f x).sign

Suppose a function to angles is continuous on a connected set and never takes the values 0 or π on that set. Then the values of the function on that set all have the same sign.