analysis.special_functions.trigonometric.arctan_derivMathlib.Analysis.SpecialFunctions.Trigonometric.ArctanDeriv

This file has been ported!

Changes since the initial port

The following section lists changes to this file in mathlib3 and mathlib4 that occured after the initial port. Most recent changes are shown first. Hovering over a commit will show all commits associated with the same mathlib3 commit.

Changes in mathlib3

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(last sync)

Changes in mathlib3port

mathlib3
mathlib3port
Diff
@@ -144,7 +144,7 @@ theorem deriv_arctan : deriv arctan = fun x => 1 / (1 + x ^ 2) :=
 theorem contDiff_arctan {n : ℕ∞} : ContDiff ℝ n arctan :=
   contDiff_iff_contDiffAt.2 fun x =>
     have : cos (arctan x) ≠ 0 := (cos_arctan_pos x).ne'
-    tanLocalHomeomorph.contDiffAt_symm_deriv (by simpa) trivial (hasDerivAt_tan this)
+    tanPartialHomeomorph.contDiffAt_symm_deriv (by simpa) trivial (hasDerivAt_tan this)
       (contDiffAt_tan.2 this)
 #align real.cont_diff_arctan Real.contDiff_arctan
 -/
Diff
@@ -3,8 +3,8 @@ Copyright (c) 2018 Chris Hughes. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Chris Hughes, Abhimanyu Pallavi Sudhir, Jean Lo, Calle Sönne, Benjamin Davidson
 -/
-import Mathbin.Analysis.SpecialFunctions.Trigonometric.Arctan
-import Mathbin.Analysis.SpecialFunctions.Trigonometric.ComplexDeriv
+import Analysis.SpecialFunctions.Trigonometric.Arctan
+import Analysis.SpecialFunctions.Trigonometric.ComplexDeriv
 
 #align_import analysis.special_functions.trigonometric.arctan_deriv from "leanprover-community/mathlib"@"7e5137f579de09a059a5ce98f364a04e221aabf0"
 
Diff
@@ -2,15 +2,12 @@
 Copyright (c) 2018 Chris Hughes. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Chris Hughes, Abhimanyu Pallavi Sudhir, Jean Lo, Calle Sönne, Benjamin Davidson
-
-! This file was ported from Lean 3 source module analysis.special_functions.trigonometric.arctan_deriv
-! leanprover-community/mathlib commit 7e5137f579de09a059a5ce98f364a04e221aabf0
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathbin.Analysis.SpecialFunctions.Trigonometric.Arctan
 import Mathbin.Analysis.SpecialFunctions.Trigonometric.ComplexDeriv
 
+#align_import analysis.special_functions.trigonometric.arctan_deriv from "leanprover-community/mathlib"@"7e5137f579de09a059a5ce98f364a04e221aabf0"
+
 /-!
 # Derivatives of the `tan` and `arctan` functions.
 
Diff
@@ -29,14 +29,19 @@ open Set Filter
 
 open scoped Topology Real
 
+#print Real.hasStrictDerivAt_tan /-
 theorem hasStrictDerivAt_tan {x : ℝ} (h : cos x ≠ 0) : HasStrictDerivAt tan (1 / cos x ^ 2) x := by
   exact_mod_cast (Complex.hasStrictDerivAt_tan (by exact_mod_cast h)).real_of_complex
 #align real.has_strict_deriv_at_tan Real.hasStrictDerivAt_tan
+-/
 
+#print Real.hasDerivAt_tan /-
 theorem hasDerivAt_tan {x : ℝ} (h : cos x ≠ 0) : HasDerivAt tan (1 / cos x ^ 2) x := by
   exact_mod_cast (Complex.hasDerivAt_tan (by exact_mod_cast h)).real_of_complex
 #align real.has_deriv_at_tan Real.hasDerivAt_tan
+-/
 
+#print Real.tendsto_abs_tan_of_cos_eq_zero /-
 theorem tendsto_abs_tan_of_cos_eq_zero {x : ℝ} (hx : cos x = 0) :
     Tendsto (fun x => abs (tan x)) (𝓝[≠] x) atTop :=
   by
@@ -46,12 +51,16 @@ theorem tendsto_abs_tan_of_cos_eq_zero {x : ℝ} (hx : cos x = 0) :
   refine' tendsto.inf complex.continuous_of_real.continuous_at _
   exact tendsto_principal_principal.2 fun y => mt Complex.ofReal_inj.1
 #align real.tendsto_abs_tan_of_cos_eq_zero Real.tendsto_abs_tan_of_cos_eq_zero
+-/
 
+#print Real.tendsto_abs_tan_atTop /-
 theorem tendsto_abs_tan_atTop (k : ℤ) :
     Tendsto (fun x => abs (tan x)) (𝓝[≠] ((2 * k + 1) * π / 2)) atTop :=
   tendsto_abs_tan_of_cos_eq_zero <| cos_eq_zero_iff.2 ⟨k, rfl⟩
 #align real.tendsto_abs_tan_at_top Real.tendsto_abs_tan_atTop
+-/
 
+#print Real.continuousAt_tan /-
 theorem continuousAt_tan {x : ℝ} : ContinuousAt tan x ↔ cos x ≠ 0 :=
   by
   refine' ⟨fun hc h₀ => _, fun h => (has_deriv_at_tan h).ContinuousAt⟩
@@ -59,11 +68,15 @@ theorem continuousAt_tan {x : ℝ} : ContinuousAt tan x ↔ cos x ≠ 0 :=
     not_tendsto_nhds_of_tendsto_atTop (tendsto_abs_tan_of_cos_eq_zero h₀) _
       (hc.norm.tendsto.mono_left inf_le_left)
 #align real.continuous_at_tan Real.continuousAt_tan
+-/
 
+#print Real.differentiableAt_tan /-
 theorem differentiableAt_tan {x : ℝ} : DifferentiableAt ℝ tan x ↔ cos x ≠ 0 :=
   ⟨fun h => continuousAt_tan.1 h.ContinuousAt, fun h => (hasDerivAt_tan h).DifferentiableAt⟩
 #align real.differentiable_at_tan Real.differentiableAt_tan
+-/
 
+#print Real.deriv_tan /-
 @[simp]
 theorem deriv_tan (x : ℝ) : deriv tan x = 1 / cos x ^ 2 :=
   if h : cos x = 0 then
@@ -72,33 +85,44 @@ theorem deriv_tan (x : ℝ) : deriv tan x = 1 / cos x ^ 2 :=
     simp [deriv_zero_of_not_differentiableAt this, h, sq]
   else (hasDerivAt_tan h).deriv
 #align real.deriv_tan Real.deriv_tan
+-/
 
+#print Real.contDiffAt_tan /-
 @[simp]
 theorem contDiffAt_tan {n x} : ContDiffAt ℝ n tan x ↔ cos x ≠ 0 :=
   ⟨fun h => continuousAt_tan.1 h.ContinuousAt, fun h =>
     (Complex.contDiffAt_tan.2 <| by exact_mod_cast h).real_of_complex⟩
 #align real.cont_diff_at_tan Real.contDiffAt_tan
+-/
 
+#print Real.hasDerivAt_tan_of_mem_Ioo /-
 theorem hasDerivAt_tan_of_mem_Ioo {x : ℝ} (h : x ∈ Ioo (-(π / 2) : ℝ) (π / 2)) :
     HasDerivAt tan (1 / cos x ^ 2) x :=
   hasDerivAt_tan (cos_pos_of_mem_Ioo h).ne'
 #align real.has_deriv_at_tan_of_mem_Ioo Real.hasDerivAt_tan_of_mem_Ioo
+-/
 
+#print Real.differentiableAt_tan_of_mem_Ioo /-
 theorem differentiableAt_tan_of_mem_Ioo {x : ℝ} (h : x ∈ Ioo (-(π / 2) : ℝ) (π / 2)) :
     DifferentiableAt ℝ tan x :=
   (hasDerivAt_tan_of_mem_Ioo h).DifferentiableAt
 #align real.differentiable_at_tan_of_mem_Ioo Real.differentiableAt_tan_of_mem_Ioo
+-/
 
+#print Real.hasStrictDerivAt_arctan /-
 theorem hasStrictDerivAt_arctan (x : ℝ) : HasStrictDerivAt arctan (1 / (1 + x ^ 2)) x :=
   by
   have A : cos (arctan x) ≠ 0 := (cos_arctan_pos x).ne'
   simpa [cos_sq_arctan] using
     tan_local_homeomorph.has_strict_deriv_at_symm trivial (by simpa) (has_strict_deriv_at_tan A)
 #align real.has_strict_deriv_at_arctan Real.hasStrictDerivAt_arctan
+-/
 
+#print Real.hasDerivAt_arctan /-
 theorem hasDerivAt_arctan (x : ℝ) : HasDerivAt arctan (1 / (1 + x ^ 2)) x :=
   (hasStrictDerivAt_arctan x).HasDerivAt
 #align real.has_deriv_at_arctan Real.hasDerivAt_arctan
+-/
 
 #print Real.differentiableAt_arctan /-
 theorem differentiableAt_arctan (x : ℝ) : DifferentiableAt ℝ arctan x :=
@@ -112,10 +136,12 @@ theorem differentiable_arctan : Differentiable ℝ arctan :=
 #align real.differentiable_arctan Real.differentiable_arctan
 -/
 
+#print Real.deriv_arctan /-
 @[simp]
 theorem deriv_arctan : deriv arctan = fun x => 1 / (1 + x ^ 2) :=
   funext fun x => (hasDerivAt_arctan x).deriv
 #align real.deriv_arctan Real.deriv_arctan
+-/
 
 #print Real.contDiff_arctan /-
 theorem contDiff_arctan {n : ℕ∞} : ContDiff ℝ n arctan :=
@@ -143,31 +169,41 @@ section deriv
 
 variable {f : ℝ → ℝ} {f' x : ℝ} {s : Set ℝ}
 
+#print HasStrictDerivAt.arctan /-
 theorem HasStrictDerivAt.arctan (hf : HasStrictDerivAt f f' x) :
     HasStrictDerivAt (fun x => arctan (f x)) (1 / (1 + f x ^ 2) * f') x :=
   (Real.hasStrictDerivAt_arctan (f x)).comp x hf
 #align has_strict_deriv_at.arctan HasStrictDerivAt.arctan
+-/
 
+#print HasDerivAt.arctan /-
 theorem HasDerivAt.arctan (hf : HasDerivAt f f' x) :
     HasDerivAt (fun x => arctan (f x)) (1 / (1 + f x ^ 2) * f') x :=
   (Real.hasDerivAt_arctan (f x)).comp x hf
 #align has_deriv_at.arctan HasDerivAt.arctan
+-/
 
+#print HasDerivWithinAt.arctan /-
 theorem HasDerivWithinAt.arctan (hf : HasDerivWithinAt f f' s x) :
     HasDerivWithinAt (fun x => arctan (f x)) (1 / (1 + f x ^ 2) * f') s x :=
   (Real.hasDerivAt_arctan (f x)).comp_hasDerivWithinAt x hf
 #align has_deriv_within_at.arctan HasDerivWithinAt.arctan
+-/
 
+#print derivWithin_arctan /-
 theorem derivWithin_arctan (hf : DifferentiableWithinAt ℝ f s x) (hxs : UniqueDiffWithinAt ℝ s x) :
     derivWithin (fun x => arctan (f x)) s x = 1 / (1 + f x ^ 2) * derivWithin f s x :=
   hf.HasDerivWithinAt.arctan.derivWithin hxs
 #align deriv_within_arctan derivWithin_arctan
+-/
 
+#print deriv_arctan /-
 @[simp]
 theorem deriv_arctan (hc : DifferentiableAt ℝ f x) :
     deriv (fun x => arctan (f x)) x = 1 / (1 + f x ^ 2) * deriv f x :=
   hc.HasDerivAt.arctan.deriv
 #align deriv_arctan deriv_arctan
+-/
 
 end deriv
 
@@ -176,31 +212,41 @@ section fderiv
 variable {E : Type _} [NormedAddCommGroup E] [NormedSpace ℝ E] {f : E → ℝ} {f' : E →L[ℝ] ℝ} {x : E}
   {s : Set E} {n : ℕ∞}
 
+#print HasStrictFDerivAt.arctan /-
 theorem HasStrictFDerivAt.arctan (hf : HasStrictFDerivAt f f' x) :
     HasStrictFDerivAt (fun x => arctan (f x)) ((1 / (1 + f x ^ 2)) • f') x :=
   (hasStrictDerivAt_arctan (f x)).comp_hasStrictFDerivAt x hf
 #align has_strict_fderiv_at.arctan HasStrictFDerivAt.arctan
+-/
 
+#print HasFDerivAt.arctan /-
 theorem HasFDerivAt.arctan (hf : HasFDerivAt f f' x) :
     HasFDerivAt (fun x => arctan (f x)) ((1 / (1 + f x ^ 2)) • f') x :=
   (hasDerivAt_arctan (f x)).comp_hasFDerivAt x hf
 #align has_fderiv_at.arctan HasFDerivAt.arctan
+-/
 
+#print HasFDerivWithinAt.arctan /-
 theorem HasFDerivWithinAt.arctan (hf : HasFDerivWithinAt f f' s x) :
     HasFDerivWithinAt (fun x => arctan (f x)) ((1 / (1 + f x ^ 2)) • f') s x :=
   (hasDerivAt_arctan (f x)).comp_hasFDerivWithinAt x hf
 #align has_fderiv_within_at.arctan HasFDerivWithinAt.arctan
+-/
 
+#print fderivWithin_arctan /-
 theorem fderivWithin_arctan (hf : DifferentiableWithinAt ℝ f s x) (hxs : UniqueDiffWithinAt ℝ s x) :
     fderivWithin ℝ (fun x => arctan (f x)) s x = (1 / (1 + f x ^ 2)) • fderivWithin ℝ f s x :=
   hf.HasFDerivWithinAt.arctan.fderivWithin hxs
 #align fderiv_within_arctan fderivWithin_arctan
+-/
 
+#print fderiv_arctan /-
 @[simp]
 theorem fderiv_arctan (hc : DifferentiableAt ℝ f x) :
     fderiv ℝ (fun x => arctan (f x)) x = (1 / (1 + f x ^ 2)) • fderiv ℝ f x :=
   hc.HasFDerivAt.arctan.fderiv
 #align fderiv_arctan fderiv_arctan
+-/
 
 #print DifferentiableWithinAt.arctan /-
 theorem DifferentiableWithinAt.arctan (hf : DifferentiableWithinAt ℝ f s x) :
Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Chris Hughes, Abhimanyu Pallavi Sudhir, Jean Lo, Calle Sönne, Benjamin Davidson
 
 ! This file was ported from Lean 3 source module analysis.special_functions.trigonometric.arctan_deriv
-! leanprover-community/mathlib commit f2ce6086713c78a7f880485f7917ea547a215982
+! leanprover-community/mathlib commit 7e5137f579de09a059a5ce98f364a04e221aabf0
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -14,6 +14,9 @@ import Mathbin.Analysis.SpecialFunctions.Trigonometric.ComplexDeriv
 /-!
 # Derivatives of the `tan` and `arctan` functions.
 
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
 Continuity and derivatives of the tangent and arctangent functions.
 -/
 
Diff
@@ -97,25 +97,31 @@ theorem hasDerivAt_arctan (x : ℝ) : HasDerivAt arctan (1 / (1 + x ^ 2)) x :=
   (hasStrictDerivAt_arctan x).HasDerivAt
 #align real.has_deriv_at_arctan Real.hasDerivAt_arctan
 
+#print Real.differentiableAt_arctan /-
 theorem differentiableAt_arctan (x : ℝ) : DifferentiableAt ℝ arctan x :=
   (hasDerivAt_arctan x).DifferentiableAt
 #align real.differentiable_at_arctan Real.differentiableAt_arctan
+-/
 
+#print Real.differentiable_arctan /-
 theorem differentiable_arctan : Differentiable ℝ arctan :=
   differentiableAt_arctan
 #align real.differentiable_arctan Real.differentiable_arctan
+-/
 
 @[simp]
 theorem deriv_arctan : deriv arctan = fun x => 1 / (1 + x ^ 2) :=
   funext fun x => (hasDerivAt_arctan x).deriv
 #align real.deriv_arctan Real.deriv_arctan
 
+#print Real.contDiff_arctan /-
 theorem contDiff_arctan {n : ℕ∞} : ContDiff ℝ n arctan :=
   contDiff_iff_contDiffAt.2 fun x =>
     have : cos (arctan x) ≠ 0 := (cos_arctan_pos x).ne'
     tanLocalHomeomorph.contDiffAt_symm_deriv (by simpa) trivial (hasDerivAt_tan this)
       (contDiffAt_tan.2 this)
 #align real.cont_diff_arctan Real.contDiff_arctan
+-/
 
 end Real
 
@@ -193,42 +199,58 @@ theorem fderiv_arctan (hc : DifferentiableAt ℝ f x) :
   hc.HasFDerivAt.arctan.fderiv
 #align fderiv_arctan fderiv_arctan
 
+#print DifferentiableWithinAt.arctan /-
 theorem DifferentiableWithinAt.arctan (hf : DifferentiableWithinAt ℝ f s x) :
     DifferentiableWithinAt ℝ (fun x => Real.arctan (f x)) s x :=
   hf.HasFDerivWithinAt.arctan.DifferentiableWithinAt
 #align differentiable_within_at.arctan DifferentiableWithinAt.arctan
+-/
 
+#print DifferentiableAt.arctan /-
 @[simp]
 theorem DifferentiableAt.arctan (hc : DifferentiableAt ℝ f x) :
     DifferentiableAt ℝ (fun x => arctan (f x)) x :=
   hc.HasFDerivAt.arctan.DifferentiableAt
 #align differentiable_at.arctan DifferentiableAt.arctan
+-/
 
+#print DifferentiableOn.arctan /-
 theorem DifferentiableOn.arctan (hc : DifferentiableOn ℝ f s) :
     DifferentiableOn ℝ (fun x => arctan (f x)) s := fun x h => (hc x h).arctan
 #align differentiable_on.arctan DifferentiableOn.arctan
+-/
 
+#print Differentiable.arctan /-
 @[simp]
 theorem Differentiable.arctan (hc : Differentiable ℝ f) : Differentiable ℝ fun x => arctan (f x) :=
   fun x => (hc x).arctan
 #align differentiable.arctan Differentiable.arctan
+-/
 
+#print ContDiffAt.arctan /-
 theorem ContDiffAt.arctan (h : ContDiffAt ℝ n f x) : ContDiffAt ℝ n (fun x => arctan (f x)) x :=
   contDiff_arctan.ContDiffAt.comp x h
 #align cont_diff_at.arctan ContDiffAt.arctan
+-/
 
+#print ContDiff.arctan /-
 theorem ContDiff.arctan (h : ContDiff ℝ n f) : ContDiff ℝ n fun x => arctan (f x) :=
   contDiff_arctan.comp h
 #align cont_diff.arctan ContDiff.arctan
+-/
 
+#print ContDiffWithinAt.arctan /-
 theorem ContDiffWithinAt.arctan (h : ContDiffWithinAt ℝ n f s x) :
     ContDiffWithinAt ℝ n (fun x => arctan (f x)) s x :=
   contDiff_arctan.comp_contDiffWithinAt h
 #align cont_diff_within_at.arctan ContDiffWithinAt.arctan
+-/
 
+#print ContDiffOn.arctan /-
 theorem ContDiffOn.arctan (h : ContDiffOn ℝ n f s) : ContDiffOn ℝ n (fun x => arctan (f x)) s :=
   contDiff_arctan.comp_contDiffOn h
 #align cont_diff_on.arctan ContDiffOn.arctan
+-/
 
 end fderiv
 
Diff
@@ -24,7 +24,7 @@ namespace Real
 
 open Set Filter
 
-open Topology Real
+open scoped Topology Real
 
 theorem hasStrictDerivAt_tan {x : ℝ} (h : cos x ≠ 0) : HasStrictDerivAt tan (1 / cos x ^ 2) x := by
   exact_mod_cast (Complex.hasStrictDerivAt_tan (by exact_mod_cast h)).real_of_complex
Diff
@@ -167,41 +167,41 @@ section fderiv
 variable {E : Type _} [NormedAddCommGroup E] [NormedSpace ℝ E] {f : E → ℝ} {f' : E →L[ℝ] ℝ} {x : E}
   {s : Set E} {n : ℕ∞}
 
-theorem HasStrictFderivAt.arctan (hf : HasStrictFderivAt f f' x) :
-    HasStrictFderivAt (fun x => arctan (f x)) ((1 / (1 + f x ^ 2)) • f') x :=
-  (hasStrictDerivAt_arctan (f x)).comp_hasStrictFderivAt x hf
-#align has_strict_fderiv_at.arctan HasStrictFderivAt.arctan
+theorem HasStrictFDerivAt.arctan (hf : HasStrictFDerivAt f f' x) :
+    HasStrictFDerivAt (fun x => arctan (f x)) ((1 / (1 + f x ^ 2)) • f') x :=
+  (hasStrictDerivAt_arctan (f x)).comp_hasStrictFDerivAt x hf
+#align has_strict_fderiv_at.arctan HasStrictFDerivAt.arctan
 
-theorem HasFderivAt.arctan (hf : HasFderivAt f f' x) :
-    HasFderivAt (fun x => arctan (f x)) ((1 / (1 + f x ^ 2)) • f') x :=
-  (hasDerivAt_arctan (f x)).comp_hasFderivAt x hf
-#align has_fderiv_at.arctan HasFderivAt.arctan
+theorem HasFDerivAt.arctan (hf : HasFDerivAt f f' x) :
+    HasFDerivAt (fun x => arctan (f x)) ((1 / (1 + f x ^ 2)) • f') x :=
+  (hasDerivAt_arctan (f x)).comp_hasFDerivAt x hf
+#align has_fderiv_at.arctan HasFDerivAt.arctan
 
-theorem HasFderivWithinAt.arctan (hf : HasFderivWithinAt f f' s x) :
-    HasFderivWithinAt (fun x => arctan (f x)) ((1 / (1 + f x ^ 2)) • f') s x :=
-  (hasDerivAt_arctan (f x)).comp_hasFderivWithinAt x hf
-#align has_fderiv_within_at.arctan HasFderivWithinAt.arctan
+theorem HasFDerivWithinAt.arctan (hf : HasFDerivWithinAt f f' s x) :
+    HasFDerivWithinAt (fun x => arctan (f x)) ((1 / (1 + f x ^ 2)) • f') s x :=
+  (hasDerivAt_arctan (f x)).comp_hasFDerivWithinAt x hf
+#align has_fderiv_within_at.arctan HasFDerivWithinAt.arctan
 
 theorem fderivWithin_arctan (hf : DifferentiableWithinAt ℝ f s x) (hxs : UniqueDiffWithinAt ℝ s x) :
     fderivWithin ℝ (fun x => arctan (f x)) s x = (1 / (1 + f x ^ 2)) • fderivWithin ℝ f s x :=
-  hf.HasFderivWithinAt.arctan.fderivWithin hxs
+  hf.HasFDerivWithinAt.arctan.fderivWithin hxs
 #align fderiv_within_arctan fderivWithin_arctan
 
 @[simp]
 theorem fderiv_arctan (hc : DifferentiableAt ℝ f x) :
     fderiv ℝ (fun x => arctan (f x)) x = (1 / (1 + f x ^ 2)) • fderiv ℝ f x :=
-  hc.HasFderivAt.arctan.fderiv
+  hc.HasFDerivAt.arctan.fderiv
 #align fderiv_arctan fderiv_arctan
 
 theorem DifferentiableWithinAt.arctan (hf : DifferentiableWithinAt ℝ f s x) :
     DifferentiableWithinAt ℝ (fun x => Real.arctan (f x)) s x :=
-  hf.HasFderivWithinAt.arctan.DifferentiableWithinAt
+  hf.HasFDerivWithinAt.arctan.DifferentiableWithinAt
 #align differentiable_within_at.arctan DifferentiableWithinAt.arctan
 
 @[simp]
 theorem DifferentiableAt.arctan (hc : DifferentiableAt ℝ f x) :
     DifferentiableAt ℝ (fun x => arctan (f x)) x :=
-  hc.HasFderivAt.arctan.DifferentiableAt
+  hc.HasFDerivAt.arctan.DifferentiableAt
 #align differentiable_at.arctan DifferentiableAt.arctan
 
 theorem DifferentiableOn.arctan (hc : DifferentiableOn ℝ f s) :
Diff
@@ -38,7 +38,7 @@ theorem tendsto_abs_tan_of_cos_eq_zero {x : ℝ} (hx : cos x = 0) :
     Tendsto (fun x => abs (tan x)) (𝓝[≠] x) atTop :=
   by
   have hx : Complex.cos x = 0 := by exact_mod_cast hx
-  simp only [← Complex.abs_ofReal, Complex.of_real_tan]
+  simp only [← Complex.abs_ofReal, Complex.ofReal_tan]
   refine' (Complex.tendsto_abs_tan_of_cos_eq_zero hx).comp _
   refine' tendsto.inf complex.continuous_of_real.continuous_at _
   exact tendsto_principal_principal.2 fun y => mt Complex.ofReal_inj.1
Diff
@@ -38,10 +38,10 @@ theorem tendsto_abs_tan_of_cos_eq_zero {x : ℝ} (hx : cos x = 0) :
     Tendsto (fun x => abs (tan x)) (𝓝[≠] x) atTop :=
   by
   have hx : Complex.cos x = 0 := by exact_mod_cast hx
-  simp only [← Complex.abs_of_real, Complex.of_real_tan]
+  simp only [← Complex.abs_ofReal, Complex.of_real_tan]
   refine' (Complex.tendsto_abs_tan_of_cos_eq_zero hx).comp _
   refine' tendsto.inf complex.continuous_of_real.continuous_at _
-  exact tendsto_principal_principal.2 fun y => mt Complex.of_real_inj.1
+  exact tendsto_principal_principal.2 fun y => mt Complex.ofReal_inj.1
 #align real.tendsto_abs_tan_of_cos_eq_zero Real.tendsto_abs_tan_of_cos_eq_zero
 
 theorem tendsto_abs_tan_atTop (k : ℤ) :

Changes in mathlib4

mathlib3
mathlib4
feat: improper integrals of 1/(1 + x^2) (#10234)

Co-authored-by: L Lllvvuu <git@llllvvuu.dev>

Diff
@@ -89,6 +89,9 @@ theorem hasDerivAt_arctan (x : ℝ) : HasDerivAt arctan (1 / (1 + x ^ 2)) x :=
   (hasStrictDerivAt_arctan x).hasDerivAt
 #align real.has_deriv_at_arctan Real.hasDerivAt_arctan
 
+theorem hasDerivAt_arctan' (x : ℝ) : HasDerivAt arctan (1 + x ^ 2)⁻¹ x :=
+  one_div (1 + x ^ 2) ▸ hasDerivAt_arctan x
+
 theorem differentiableAt_arctan (x : ℝ) : DifferentiableAt ℝ arctan x :=
   (hasDerivAt_arctan x).differentiableAt
 #align real.differentiable_at_arctan Real.differentiableAt_arctan
chore: rename LocalHomeomorph to PartialHomeomorph (#8982)

LocalHomeomorph evokes a "local homeomorphism": this is not what this means. Instead, this is a homeomorphism on an open set of the domain (extended to the whole space, by the junk value pattern). Hence, partial homeomorphism is more appropriate, and avoids confusion with IsLocallyHomeomorph.

A future PR will rename LocalEquiv to PartialEquiv.

Zulip discussion

Diff
@@ -82,7 +82,7 @@ theorem differentiableAt_tan_of_mem_Ioo {x : ℝ} (h : x ∈ Ioo (-(π / 2) : 
 theorem hasStrictDerivAt_arctan (x : ℝ) : HasStrictDerivAt arctan (1 / (1 + x ^ 2)) x := by
   have A : cos (arctan x) ≠ 0 := (cos_arctan_pos x).ne'
   simpa [cos_sq_arctan] using
-    tanLocalHomeomorph.hasStrictDerivAt_symm trivial (by simpa) (hasStrictDerivAt_tan A)
+    tanPartialHomeomorph.hasStrictDerivAt_symm trivial (by simpa) (hasStrictDerivAt_tan A)
 #align real.has_strict_deriv_at_arctan Real.hasStrictDerivAt_arctan
 
 theorem hasDerivAt_arctan (x : ℝ) : HasDerivAt arctan (1 / (1 + x ^ 2)) x :=
@@ -105,7 +105,7 @@ theorem deriv_arctan : deriv arctan = fun (x : ℝ) => 1 / (1 + x ^ 2) :=
 theorem contDiff_arctan {n : ℕ∞} : ContDiff ℝ n arctan :=
   contDiff_iff_contDiffAt.2 fun x =>
     have : cos (arctan x) ≠ 0 := (cos_arctan_pos x).ne'
-    tanLocalHomeomorph.contDiffAt_symm_deriv (by simpa) trivial (hasDerivAt_tan this)
+    tanPartialHomeomorph.contDiffAt_symm_deriv (by simpa) trivial (hasDerivAt_tan this)
       (contDiffAt_tan.2 this)
 #align real.cont_diff_arctan Real.contDiff_arctan
 
chore: replace exact_mod_cast tactic with mod_cast elaborator where possible (#8404)

We still have the exact_mod_cast tactic, used in a few places, which somehow (?) works a little bit harder to prevent the expected type influencing the elaboration of the term. I would like to get to the bottom of this, and it will be easier once the only usages of exact_mod_cast are the ones that don't work using the term elaborator by itself.

Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -23,17 +23,17 @@ open Set Filter
 
 open scoped Topology Real
 
-theorem hasStrictDerivAt_tan {x : ℝ} (h : cos x ≠ 0) : HasStrictDerivAt tan (1 / cos x ^ 2) x := by
-  exact_mod_cast (Complex.hasStrictDerivAt_tan (by exact_mod_cast h)).real_of_complex
+theorem hasStrictDerivAt_tan {x : ℝ} (h : cos x ≠ 0) : HasStrictDerivAt tan (1 / cos x ^ 2) x :=
+  mod_cast (Complex.hasStrictDerivAt_tan (by exact mod_cast h)).real_of_complex
 #align real.has_strict_deriv_at_tan Real.hasStrictDerivAt_tan
 
-theorem hasDerivAt_tan {x : ℝ} (h : cos x ≠ 0) : HasDerivAt tan (1 / cos x ^ 2) x := by
-  exact_mod_cast (Complex.hasDerivAt_tan (by exact_mod_cast h)).real_of_complex
+theorem hasDerivAt_tan {x : ℝ} (h : cos x ≠ 0) : HasDerivAt tan (1 / cos x ^ 2) x :=
+  mod_cast (Complex.hasDerivAt_tan (by exact mod_cast h)).real_of_complex
 #align real.has_deriv_at_tan Real.hasDerivAt_tan
 
 theorem tendsto_abs_tan_of_cos_eq_zero {x : ℝ} (hx : cos x = 0) :
     Tendsto (fun x => abs (tan x)) (𝓝[≠] x) atTop := by
-  have hx : Complex.cos x = 0 := by exact_mod_cast hx
+  have hx : Complex.cos x = 0 := mod_cast hx
   simp only [← Complex.abs_ofReal, Complex.ofReal_tan]
   refine' (Complex.tendsto_abs_tan_of_cos_eq_zero hx).comp _
   refine' Tendsto.inf Complex.continuous_ofReal.continuousAt _
@@ -66,7 +66,7 @@ theorem deriv_tan (x : ℝ) : deriv tan x = 1 / cos x ^ 2 :=
 @[simp]
 theorem contDiffAt_tan {n x} : ContDiffAt ℝ n tan x ↔ cos x ≠ 0 :=
   ⟨fun h => continuousAt_tan.1 h.continuousAt, fun h =>
-    (Complex.contDiffAt_tan.2 <| by exact_mod_cast h).real_of_complex⟩
+    (Complex.contDiffAt_tan.2 <| mod_cast h).real_of_complex⟩
 #align real.cont_diff_at_tan Real.contDiffAt_tan
 
 theorem hasDerivAt_tan_of_mem_Ioo {x : ℝ} (h : x ∈ Ioo (-(π / 2) : ℝ) (π / 2)) :
chore: bump to v4.3.0-rc2 (#8366)

PR contents

This is the supremum of

along with some minor fixes from failures on nightly-testing as Mathlib master is merged into it.

Note that some PRs for changes that are already compatible with the current toolchain and will be necessary have already been split out: #8380.

I am hopeful that in future we will be able to progressively merge adaptation PRs into a bump/v4.X.0 branch, so we never end up with a "big merge" like this. However one of these adaptation PRs (#8056) predates my new scheme for combined CI, and it wasn't possible to keep that PR viable in the meantime.

Lean PRs involved in this bump

In particular this includes adjustments for the Lean PRs

leanprover/lean4#2778

We can get rid of all the

local macro_rules | `($x ^ $y) => `(HPow.hPow $x $y) -- Porting note: See issue [lean4#2220](https://github.com/leanprover/lean4/pull/2220)

macros across Mathlib (and in any projects that want to write natural number powers of reals).

leanprover/lean4#2722

Changes the default behaviour of simp to (config := {decide := false}). This makes simp (and consequentially norm_num) less powerful, but also more consistent, and less likely to blow up in long failures. This requires a variety of changes: changing some previously by simp or norm_num to decide or rfl, or adding (config := {decide := true}).

leanprover/lean4#2783

This changed the behaviour of simp so that simp [f] will only unfold "fully applied" occurrences of f. The old behaviour can be recovered with simp (config := { unfoldPartialApp := true }). We may in future add a syntax for this, e.g. simp [!f]; please provide feedback! In the meantime, we have made the following changes:

  • switching to using explicit lemmas that have the intended level of application
  • (config := { unfoldPartialApp := true }) in some places, to recover the old behaviour
  • Using @[eqns] to manually adjust the equation lemmas for a particular definition, recovering the old behaviour just for that definition. See #8371, where we do this for Function.comp and Function.flip.

This change in Lean may require further changes down the line (e.g. adding the !f syntax, and/or upstreaming the special treatment for Function.comp and Function.flip, and/or removing this special treatment). Please keep an open and skeptical mind about these changes!

Co-authored-by: leanprover-community-mathlib4-bot <leanprover-community-mathlib4-bot@users.noreply.github.com> Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Eric Wieser <wieser.eric@gmail.com> Co-authored-by: Mauricio Collares <mauricio@collares.org>

Diff
@@ -17,8 +17,6 @@ Continuity and derivatives of the tangent and arctangent functions.
 
 noncomputable section
 
-local macro_rules | `($x ^ $y) => `(HPow.hPow $x $y) -- Porting note: See issue lean4#2220
-
 namespace Real
 
 open Set Filter
chore: banish Type _ and Sort _ (#6499)

We remove all possible occurences of Type _ and Sort _ in favor of Type* and Sort*.

This has nice performance benefits.

Diff
@@ -158,7 +158,7 @@ end deriv
 
 section fderiv
 
-variable {E : Type _} [NormedAddCommGroup E] [NormedSpace ℝ E] {f : E → ℝ} {f' : E →L[ℝ] ℝ} {x : E}
+variable {E : Type*} [NormedAddCommGroup E] [NormedSpace ℝ E] {f : E → ℝ} {f' : E →L[ℝ] ℝ} {x : E}
   {s : Set E} {n : ℕ∞}
 
 theorem HasStrictFDerivAt.arctan (hf : HasStrictFDerivAt f f' x) :
chore: regularize HPow.hPow porting notes (#6465)
Diff
@@ -17,7 +17,7 @@ Continuity and derivatives of the tangent and arctangent functions.
 
 noncomputable section
 
-local macro_rules | `($x ^ $y) => `(HPow.hPow $x $y) -- Porting note: See issue #2220
+local macro_rules | `($x ^ $y) => `(HPow.hPow $x $y) -- Porting note: See issue lean4#2220
 
 namespace Real
 
chore: script to replace headers with #align_import statements (#5979)

Open in Gitpod

Co-authored-by: Eric Wieser <wieser.eric@gmail.com> Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -2,15 +2,12 @@
 Copyright (c) 2018 Chris Hughes. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Chris Hughes, Abhimanyu Pallavi Sudhir, Jean Lo, Calle Sönne, Benjamin Davidson
-
-! This file was ported from Lean 3 source module analysis.special_functions.trigonometric.arctan_deriv
-! leanprover-community/mathlib commit f2ce6086713c78a7f880485f7917ea547a215982
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathlib.Analysis.SpecialFunctions.Trigonometric.Arctan
 import Mathlib.Analysis.SpecialFunctions.Trigonometric.ComplexDeriv
 
+#align_import analysis.special_functions.trigonometric.arctan_deriv from "leanprover-community/mathlib"@"f2ce6086713c78a7f880485f7917ea547a215982"
+
 /-!
 # Derivatives of the `tan` and `arctan` functions.
 
feat: port Analysis.SpecialFunctions.Trigonometric.ArctanDeriv (#4764)

Dependencies 12 + 949

950 files ported (98.8%)
413049 lines ported (98.7%)
Show graph

The unported dependencies are

The following 1 dependencies have changed in mathlib3 since they were ported, which may complicate porting this file