File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Arctan.lean

full_name: Real.tan_add
code: theorem tan_add {x y : ℝ}
    (h : ((∀ k : ℤ, x ≠ (2 * k + 1) * π / 2) ∧ ∀ l : ℤ, y ≠ (2 * l + 1) * π / 2) ∨
      (∃ k : ℤ, x = (2 * k + 1) * π / 2) ∧ ∃ l : ℤ, y = (2 * l + 1) * π / 2) :
    tan (x + y) = (tan x + tan y) / (1 - tan x * tan y) 
goal: Real.tan (x + y) = (Real.tan x + Real.tan y) / (1 - Real.tan x * Real.tan y)

full_name: Real.tan_add'
code: theorem tan_add' {x y : ℝ}
    (h : (∀ k : ℤ, x ≠ (2 * k + 1) * π / 2) ∧ ∀ l : ℤ, y ≠ (2 * l + 1) * π / 2) :
    tan (x + y) = (tan x + tan y) / (1 - tan x * tan y) 
goal: Real.tan (x + y) = (Real.tan x + Real.tan y) / (1 - Real.tan x * Real.tan y)

full_name: Real.tan_two_mul
code: theorem tan_two_mul {x : ℝ} : tan (2 * x) = 2 * tan x / (1 - tan x ^ 2) 
goal: Real.tan (2 * x) = 2 * Real.tan x / (1 - Real.tan x ^ 2)

full_name: Real.tan_int_mul_pi_div_two
code: theorem tan_int_mul_pi_div_two (n : ℤ) : tan (n * π / 2) = 0 
goal: Real.tan (↑n * Real.pi / 2) = 0

full_name: Real.continuousOn_tan
code: theorem continuousOn_tan : ContinuousOn tan {x | cos x ≠ 0} 
goal: ContinuousOn Real.tan {x | Real.cos x ≠ 0}

full_name: Real.continuous_tan
code: @[continuity]
theorem continuous_tan : Continuous fun x : {x | cos x ≠ 0} => tan x 
goal: Continuous fun x => Real.tan ↑x

full_name: Real.continuousOn_tan_Ioo
code: theorem continuousOn_tan_Ioo : ContinuousOn tan (Ioo (-(π / 2)) (π / 2)) 
goal: ContinuousOn Real.tan (Set.Ioo (-(Real.pi / 2)) (Real.pi / 2))

full_name: Real.surjOn_tan
code: theorem surjOn_tan : SurjOn tan (Ioo (-(π / 2)) (π / 2)) univ 
goal: Set.SurjOn Real.tan (Set.Ioo (-(Real.pi / 2)) (Real.pi / 2)) Set.univ

full_name: Real.tan_surjective
code: theorem tan_surjective : Function.Surjective tan 
goal: Function.Surjective Real.tan

full_name: Real.image_tan_Ioo
code: theorem image_tan_Ioo : tan '' Ioo (-(π / 2)) (π / 2) = univ 
goal: Real.tan '' Set.Ioo (-(Real.pi / 2)) (Real.pi / 2) = Set.univ

full_name: Real.tanOrderIso
code: /-- `Real.tan` as an `OrderIso` between `(-(π / 2), π / 2)` and `ℝ`. -/
def tanOrderIso : Ioo (-(π / 2)) (π / 2) ≃o ℝ 
goal: ↑(Set.Ioo (-(Real.pi / 2)) (Real.pi / 2)) ≃o ℝ

full_name: Real.arctan
code: /-- Inverse of the `tan` function, returns values in the range `-π / 2 < arctan x` and
`arctan x < π / 2` -/
@[pp_nodot]
noncomputable def arctan (x : ℝ) : ℝ 
goal: ℝ

full_name: Real.tan_arctan
code: @[simp]
theorem tan_arctan (x : ℝ) : tan (arctan x) = x 
goal: Real.tan (Real.arctan x) = x

full_name: Real.arctan_mem_Ioo
code: theorem arctan_mem_Ioo (x : ℝ) : arctan x ∈ Ioo (-(π / 2)) (π / 2) 
goal: Real.arctan x ∈ Set.Ioo (-(Real.pi / 2)) (Real.pi / 2)

full_name: Real.range_arctan
code: @[simp]
theorem range_arctan : range arctan = Ioo (-(π / 2)) (π / 2) 
goal: Set.range Real.arctan = Set.Ioo (-(Real.pi / 2)) (Real.pi / 2)

full_name: Real.arctan_tan
code: theorem arctan_tan {x : ℝ} (hx₁ : -(π / 2) < x) (hx₂ : x < π / 2) : arctan (tan x) = x 
goal: Real.arctan (Real.tan x) = x

full_name: Real.cos_arctan_pos
code: theorem cos_arctan_pos (x : ℝ) : 0 < cos (arctan x) 
goal: 0 < Real.cos (Real.arctan x)

full_name: Real.cos_sq_arctan
code: theorem cos_sq_arctan (x : ℝ) : cos (arctan x) ^ 2 = 1 / (1 + x ^ 2) 
goal: Real.cos (Real.arctan x) ^ 2 = 1 / (1 + x ^ 2)

full_name: Real.sin_arctan
code: theorem sin_arctan (x : ℝ) : sin (arctan x) = x / √(1 + x ^ 2) 
goal: Real.sin (Real.arctan x) = x / √(1 + x ^ 2)

full_name: Real.cos_arctan
code: theorem cos_arctan (x : ℝ) : cos (arctan x) = 1 / √(1 + x ^ 2) 
goal: Real.cos (Real.arctan x) = 1 / √(1 + x ^ 2)

full_name: Real.arctan_lt_pi_div_two
code: theorem arctan_lt_pi_div_two (x : ℝ) : arctan x < π / 2 
goal: Real.arctan x < Real.pi / 2

full_name: Real.neg_pi_div_two_lt_arctan
code: theorem neg_pi_div_two_lt_arctan (x : ℝ) : -(π / 2) < arctan x 
goal: -(Real.pi / 2) < Real.arctan x

full_name: Real.arctan_eq_arcsin
code: theorem arctan_eq_arcsin (x : ℝ) : arctan x = arcsin (x / √(1 + x ^ 2)) 
goal: Real.arctan x = Real.arcsin (x / √(1 + x ^ 2))

full_name: Real.arcsin_eq_arctan
code: theorem arcsin_eq_arctan {x : ℝ} (h : x ∈ Ioo (-(1 : ℝ)) 1) :
    arcsin x = arctan (x / √(1 - x ^ 2)) 
goal: Real.arcsin x = Real.arctan (x / √(1 - x ^ 2))

full_name: Real.arctan_zero
code: @[simp]
theorem arctan_zero : arctan 0 = 0 
goal: Real.arctan 0 = 0

full_name: Real.arctan_strictMono
code: @[mono]
theorem arctan_strictMono : StrictMono arctan 
goal: StrictMono Real.arctan

full_name: Real.arctan_injective
code: theorem arctan_injective : arctan.Injective 
goal: Function.Injective Real.arctan

full_name: Real.arctan_eq_zero_iff
code: @[simp]
theorem arctan_eq_zero_iff {x : ℝ} : arctan x = 0 ↔ x = 0 
goal: Real.arctan x = 0 ↔ x = 0

full_name: Real.tendsto_arctan_atTop
code: theorem tendsto_arctan_atTop : Tendsto arctan atTop (𝓝[<] (π / 2)) 
goal: Filter.Tendsto Real.arctan Filter.atTop (nhdsWithin (Real.pi / 2) (Set.Iio (Real.pi / 2)))

full_name: Real.tendsto_arctan_atBot
code: theorem tendsto_arctan_atBot : Tendsto arctan atBot (𝓝[>] (-(π / 2))) 
goal: Filter.Tendsto Real.arctan Filter.atBot (nhdsWithin (-(Real.pi / 2)) (Set.Ioi (-(Real.pi / 2))))

full_name: Real.arctan_eq_of_tan_eq
code: theorem arctan_eq_of_tan_eq {x y : ℝ} (h : tan x = y) (hx : x ∈ Ioo (-(π / 2)) (π / 2)) :
    arctan y = x 
goal: Real.arctan y = x

full_name: Real.arctan_one
code: @[simp]
theorem arctan_one : arctan 1 = π / 4 
goal: Real.arctan 1 = Real.pi / 4

full_name: Real.arctan_neg
code: @[simp]
theorem arctan_neg (x : ℝ) : arctan (-x) = -arctan x 
goal: Real.arctan (-x) = -Real.arctan x

full_name: Real.arctan_eq_arccos
code: theorem arctan_eq_arccos {x : ℝ} (h : 0 ≤ x) : arctan x = arccos (√(1 + x ^ 2))⁻¹ 
goal: Real.arctan x = Real.arccos (√(1 + x ^ 2))⁻¹

full_name: Real.arccos_eq_arctan
code: theorem arccos_eq_arctan {x : ℝ} (h : 0 < x) : arccos x = arctan (√(1 - x ^ 2) / x) 
goal: Real.arccos x = Real.arctan (√(1 - x ^ 2) / x)

full_name: Real.arctan_inv_of_pos
code: theorem arctan_inv_of_pos {x : ℝ} (h : 0 < x) : arctan x⁻¹ = π / 2 - arctan x 
goal: Real.arctan x⁻¹ = Real.pi / 2 - Real.arctan x

full_name: Real.arctan_inv_of_neg
code: theorem arctan_inv_of_neg {x : ℝ} (h : x < 0) : arctan x⁻¹ = -(π / 2) - arctan x 
goal: Real.arctan x⁻¹ = -(Real.pi / 2) - Real.arctan x

full_name: Real.arctan_ne_mul_pi_div_two
code: lemma arctan_ne_mul_pi_div_two {x : ℝ} : ∀ (k : ℤ), arctan x ≠ (2 * k + 1) * π / 2 
goal: Real.arctan x ≠ (2 * ↑k + 1) * Real.pi / 2

full_name: Real.arctan_add_arctan_lt_pi_div_two
code: lemma arctan_add_arctan_lt_pi_div_two {x y : ℝ} (h : x * y < 1) : arctan x + arctan y < π / 2 
goal: Real.arctan x + Real.arctan y < Real.pi / 2

full_name: Real.arctan_add
code: theorem arctan_add {x y : ℝ} (h : x * y < 1) :
    arctan x + arctan y = arctan ((x + y) / (1 - x * y)) 
goal: Real.arctan x + Real.arctan y = Real.arctan ((x + y) / (1 - x * y))

full_name: Real.arctan_add_eq_add_pi
code: theorem arctan_add_eq_add_pi {x y : ℝ} (h : 1 < x * y) (hx : 0 < x) :
    arctan x + arctan y = arctan ((x + y) / (1 - x * y)) + π 
goal: Real.arctan x + Real.arctan y = Real.arctan ((x + y) / (1 - x * y)) + Real.pi

full_name: Real.arctan_add_eq_sub_pi
code: theorem arctan_add_eq_sub_pi {x y : ℝ} (h : 1 < x * y) (hx : x < 0) :
    arctan x + arctan y = arctan ((x + y) / (1 - x * y)) - π 
goal: Real.arctan x + Real.arctan y = Real.arctan ((x + y) / (1 - x * y)) - Real.pi

full_name: Real.two_mul_arctan
code: theorem two_mul_arctan {x : ℝ} (h₁ : -1 < x) (h₂ : x < 1) :
    2 * arctan x = arctan (2 * x / (1 - x ^ 2)) 
goal: 2 * Real.arctan x = Real.arctan (2 * x / (1 - x ^ 2))

full_name: Real.two_mul_arctan_add_pi
code: theorem two_mul_arctan_add_pi {x : ℝ} (h : 1 < x) :
    2 * arctan x = arctan (2 * x / (1 - x ^ 2)) + π 
goal: 2 * Real.arctan x = Real.arctan (2 * x / (1 - x ^ 2)) + Real.pi

full_name: Real.two_mul_arctan_sub_pi
code: theorem two_mul_arctan_sub_pi {x : ℝ} (h : x < -1) :
    2 * arctan x = arctan (2 * x / (1 - x ^ 2)) - π 
goal: 2 * Real.arctan x = Real.arctan (2 * x / (1 - x ^ 2)) - Real.pi

full_name: Real.arctan_inv_2_add_arctan_inv_3
code: theorem arctan_inv_2_add_arctan_inv_3 : arctan 2⁻¹ + arctan 3⁻¹ = π / 4 
goal: Real.arctan 2⁻¹ + Real.arctan 3⁻¹ = Real.pi / 4

full_name: Real.two_mul_arctan_inv_2_sub_arctan_inv_7
code: theorem two_mul_arctan_inv_2_sub_arctan_inv_7 : 2 * arctan 2⁻¹ - arctan 7⁻¹ = π / 4 
goal: 2 * Real.arctan 2⁻¹ - Real.arctan 7⁻¹ = Real.pi / 4

full_name: Real.two_mul_arctan_inv_3_add_arctan_inv_7
code: theorem two_mul_arctan_inv_3_add_arctan_inv_7 : 2 * arctan 3⁻¹ + arctan 7⁻¹ = π / 4 
goal: 2 * Real.arctan 3⁻¹ + Real.arctan 7⁻¹ = Real.pi / 4

full_name: Real.four_mul_arctan_inv_5_sub_arctan_inv_239
code: /-- **John Machin's 1706 formula**, which he used to compute π to 100 decimal places. -/
theorem four_mul_arctan_inv_5_sub_arctan_inv_239 : 4 * arctan 5⁻¹ - arctan 239⁻¹ = π / 4 
goal: 4 * Real.arctan 5⁻¹ - Real.arctan 239⁻¹ = Real.pi / 4

full_name: Real.continuous_arctan
code: @[continuity]
theorem continuous_arctan : Continuous arctan 
goal: Continuous Real.arctan

full_name: Real.continuousAt_arctan
code: theorem continuousAt_arctan {x : ℝ} : ContinuousAt arctan x 
goal: ContinuousAt Real.arctan x

full_name: Real.tanPartialHomeomorph
code: /-- `Real.tan` as a `PartialHomeomorph` between `(-(π / 2), π / 2)` and the whole line. -/
def tanPartialHomeomorph : PartialHomeomorph ℝ ℝ 
goal: PartialHomeomorph ℝ ℝ

full_name: Real.coe_tanPartialHomeomorph
code: @[simp]
theorem coe_tanPartialHomeomorph : ⇑tanPartialHomeomorph = tan 
goal: ↑Real.tanPartialHomeomorph = Real.tan

full_name: Real.coe_tanPartialHomeomorph_symm
code: @[simp]
theorem coe_tanPartialHomeomorph_symm : ⇑tanPartialHomeomorph.symm = arctan 
goal: ↑Real.tanPartialHomeomorph.symm = Real.arctan