analysis.special_functions.exp ⟷ Mathlib.Analysis.SpecialFunctions.Exp

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)

(last sync)

refactor(analysis/normed_space/basic): generalize some results to actions by normed_rings (#19053)

This only moves the very basic lemmas for now.

This should be very easy to forward-port:

  • Let someone port the new file via the normal mechanism
  • Have them delete the duplicate lemmas that appear in CI

A few downstream proofs need some small help with unification, as while the old normed_space argument was found by unification, the new has_bounded_smul has to be found by typeclass search.

Diff
@@ -48,8 +48,8 @@ begin
   have h_sq : βˆ€ z, β€–zβ€– ≀ 1 β†’ β€–exp (x + z) - exp xβ€– ≀ β€–zβ€– * β€–exp xβ€– + β€–exp xβ€– * β€–zβ€– ^ 2,
   { intros z hz,
     have : β€–exp (x + z) - exp x - z β€’ exp xβ€– ≀ β€–exp xβ€– * β€–zβ€– ^ 2, from exp_bound_sq x z hz,
-    rw [← sub_le_iff_le_add',  ← norm_smul z],
-    exact (norm_sub_norm_le _ _).trans this, },
+    rw [← sub_le_iff_le_add',  ← norm_smul z (_ : β„‚)],
+    exact (norm_sub_norm_le _ _).trans this },
   calc β€–exp y - exp xβ€– = β€–exp (x + (y - x)) - exp xβ€– : by nth_rewrite 0 hy_eq
   ... ≀ β€–y - xβ€– * β€–exp xβ€– + β€–exp xβ€– * β€–y - xβ€– ^ 2 : h_sq (y - x) (hyx.le.trans hr_le)
   ... ≀ β€–y - xβ€– * β€–exp xβ€– + β€–exp xβ€– * (r * β€–y - xβ€–) :

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(first ported)

Changes in mathlib3port

mathlib3
mathlib3port
Diff
@@ -274,8 +274,8 @@ theorem tendsto_exp_div_pow_atTop (n : β„•) : Tendsto (fun x => exp x / x ^ n) a
     eventually_at_top.1
       ((tendsto_pow_const_div_const_pow_of_one_lt n (one_lt_exp_iff.2 zero_lt_one)).Eventually
         (gt_mem_nhds this))
-  simp only [← exp_nat_mul, mul_one, div_lt_iff, exp_pos, ← div_eq_inv_mul] at hN 
-  refine' ⟨N, trivial, fun x hx => _⟩; rw [Set.mem_Ioi] at hx 
+  simp only [← exp_nat_mul, mul_one, div_lt_iff, exp_pos, ← div_eq_inv_mul] at hN
+  refine' ⟨N, trivial, fun x hx => _⟩; rw [Set.mem_Ioi] at hx
   have hxβ‚€ : 0 < x := N.cast_nonneg.trans_lt hx
   rw [Set.mem_Ici, le_div_iff (pow_pos hxβ‚€ _), ← le_div_iff' hCβ‚€]
   calc
Diff
@@ -219,24 +219,24 @@ theorem tendsto_exp_atTop : Tendsto exp atTop atTop :=
 #align real.tendsto_exp_at_top Real.tendsto_exp_atTop
 -/
 
-#print Real.tendsto_exp_neg_atTop_nhds_0 /-
+#print Real.tendsto_exp_neg_atTop_nhds_zero /-
 /-- The real exponential function tends to `0` at `-∞` or, equivalently, `exp(-x)` tends to `0`
 at `+∞` -/
-theorem tendsto_exp_neg_atTop_nhds_0 : Tendsto (fun x => exp (-x)) atTop (𝓝 0) :=
+theorem tendsto_exp_neg_atTop_nhds_zero : Tendsto (fun x => exp (-x)) atTop (𝓝 0) :=
   (tendsto_inv_atTop_zero.comp tendsto_exp_atTop).congr fun x => (exp_neg x).symm
-#align real.tendsto_exp_neg_at_top_nhds_0 Real.tendsto_exp_neg_atTop_nhds_0
+#align real.tendsto_exp_neg_at_top_nhds_0 Real.tendsto_exp_neg_atTop_nhds_zero
 -/
 
-#print Real.tendsto_exp_nhds_0_nhds_1 /-
+#print Real.tendsto_exp_nhds_zero_nhds_one /-
 /-- The real exponential function tends to `1` at `0`. -/
-theorem tendsto_exp_nhds_0_nhds_1 : Tendsto exp (𝓝 0) (𝓝 1) := by convert continuous_exp.tendsto 0;
-  simp
-#align real.tendsto_exp_nhds_0_nhds_1 Real.tendsto_exp_nhds_0_nhds_1
+theorem tendsto_exp_nhds_zero_nhds_one : Tendsto exp (𝓝 0) (𝓝 1) := by
+  convert continuous_exp.tendsto 0; simp
+#align real.tendsto_exp_nhds_0_nhds_1 Real.tendsto_exp_nhds_zero_nhds_one
 -/
 
 #print Real.tendsto_exp_atBot /-
 theorem tendsto_exp_atBot : Tendsto exp atBot (𝓝 0) :=
-  (tendsto_exp_neg_atTop_nhds_0.comp tendsto_neg_atBot_atTop).congr fun x =>
+  (tendsto_exp_neg_atTop_nhds_zero.comp tendsto_neg_atBot_atTop).congr fun x =>
     congr_arg exp <| neg_neg x
 #align real.tendsto_exp_at_bot Real.tendsto_exp_atBot
 -/
@@ -289,13 +289,13 @@ theorem tendsto_exp_div_pow_atTop (n : β„•) : Tendsto (fun x => exp x / x ^ n) a
 #align real.tendsto_exp_div_pow_at_top Real.tendsto_exp_div_pow_atTop
 -/
 
-#print Real.tendsto_pow_mul_exp_neg_atTop_nhds_0 /-
+#print Real.tendsto_pow_mul_exp_neg_atTop_nhds_zero /-
 /-- The function `x^n * exp(-x)` tends to `0` at `+∞`, for any natural number `n`. -/
-theorem tendsto_pow_mul_exp_neg_atTop_nhds_0 (n : β„•) :
+theorem tendsto_pow_mul_exp_neg_atTop_nhds_zero (n : β„•) :
     Tendsto (fun x => x ^ n * exp (-x)) atTop (𝓝 0) :=
   (tendsto_inv_atTop_zero.comp (tendsto_exp_div_pow_atTop n)).congr fun x => by
     rw [comp_app, inv_eq_one_div, div_div_eq_mul_div, one_mul, div_eq_mul_inv, NormedSpace.exp_neg]
-#align real.tendsto_pow_mul_exp_neg_at_top_nhds_0 Real.tendsto_pow_mul_exp_neg_atTop_nhds_0
+#align real.tendsto_pow_mul_exp_neg_at_top_nhds_0 Real.tendsto_pow_mul_exp_neg_atTop_nhds_zero
 -/
 
 #print Real.tendsto_mul_exp_add_div_pow_atTop /-
Diff
@@ -279,7 +279,7 @@ theorem tendsto_exp_div_pow_atTop (n : β„•) : Tendsto (fun x => exp x / x ^ n) a
   have hxβ‚€ : 0 < x := N.cast_nonneg.trans_lt hx
   rw [Set.mem_Ici, le_div_iff (pow_pos hxβ‚€ _), ← le_div_iff' hCβ‚€]
   calc
-    x ^ n ≀ ⌈xβŒ‰β‚Š ^ n := pow_le_pow_of_le_left hxβ‚€.le (Nat.le_ceil _) _
+    x ^ n ≀ ⌈xβŒ‰β‚Š ^ n := pow_le_pow_left hxβ‚€.le (Nat.le_ceil _) _
     _ ≀ NormedSpace.exp ⌈xβŒ‰β‚Š / (NormedSpace.exp 1 * C) := (hN _ (Nat.lt_ceil.2 hx).le).le
     _ ≀ NormedSpace.exp (x + 1) / (NormedSpace.exp 1 * C) :=
       (div_le_div_of_le (mul_pos (exp_pos _) hCβ‚€).le
Diff
@@ -510,13 +510,13 @@ end Real
 
 namespace Complex
 
-#print Complex.comap_exp_comap_abs_atTop /-
-theorem comap_exp_comap_abs_atTop : comap exp (comap abs atTop) = comap re atTop :=
+#print Complex.comap_exp_cobounded /-
+theorem comap_exp_cobounded : comap exp (comap abs atTop) = comap re atTop :=
   calc
     comap exp (comap abs atTop) = comap re (comap Real.exp atTop) := by
       simp only [comap_comap, (· ∘ ·), abs_exp]
     _ = comap re atTop := by rw [Real.comap_exp_atTop]
-#align complex.comap_exp_comap_abs_at_top Complex.comap_exp_comap_abs_atTop
+#align complex.comap_exp_comap_abs_at_top Complex.comap_exp_cobounded
 -/
 
 #print Complex.comap_exp_nhds_zero /-
@@ -546,7 +546,7 @@ theorem tendsto_exp_nhds_zero_iff {Ξ± : Type _} {l : Filter Ξ±} {f : Ξ± β†’ β„‚}
 #print Complex.tendsto_exp_comap_re_atTop /-
 /-- `complex.abs (complex.exp z) β†’ ∞` as `complex.re z β†’ ∞`. TODO: use `bornology.cobounded`. -/
 theorem tendsto_exp_comap_re_atTop : Tendsto exp (comap re atTop) (comap abs atTop) :=
-  comap_exp_comap_abs_atTop β–Έ tendsto_comap
+  comap_exp_cobounded β–Έ tendsto_comap
 #align complex.tendsto_exp_comap_re_at_top Complex.tendsto_exp_comap_re_atTop
 -/
 
Diff
@@ -38,7 +38,8 @@ variable {z y x : ℝ}
 theorem exp_bound_sq (x z : β„‚) (hz : β€–zβ€– ≀ 1) :
     β€–exp (x + z) - exp x - z β€’ exp xβ€– ≀ β€–exp xβ€– * β€–zβ€– ^ 2 :=
   calc
-    β€–exp (x + z) - exp x - z * exp xβ€– = β€–exp x * (exp z - 1 - z)β€– := by congr; rw [exp_add]; ring
+    β€–exp (x + z) - exp x - z * exp xβ€– = β€–exp x * (exp z - 1 - z)β€– := by congr;
+      rw [NormedSpace.exp_add]; ring
     _ = β€–exp xβ€– * β€–exp z - 1 - zβ€– := (norm_mul _ _)
     _ ≀ β€–exp xβ€– * β€–zβ€– ^ 2 :=
       mul_le_mul_of_nonneg_left (abs_exp_sub_one_sub_id_le hz) (norm_nonneg _)
@@ -54,18 +55,27 @@ theorem locally_lipschitz_exp {r : ℝ} (hr_nonneg : 0 ≀ r) (hr_le : r ≀ 1)
     by
     rw [pow_two]
     exact mul_le_mul hyx.le le_rfl (norm_nonneg _) hr_nonneg
-  have h_sq : βˆ€ z, β€–zβ€– ≀ 1 β†’ β€–exp (x + z) - exp xβ€– ≀ β€–zβ€– * β€–exp xβ€– + β€–exp xβ€– * β€–zβ€– ^ 2 :=
+  have h_sq :
+    βˆ€ z,
+      β€–zβ€– ≀ 1 β†’
+        β€–NormedSpace.exp (x + z) - NormedSpace.exp xβ€– ≀
+          β€–zβ€– * β€–NormedSpace.exp xβ€– + β€–NormedSpace.exp xβ€– * β€–zβ€– ^ 2 :=
     by
     intro z hz
-    have : β€–exp (x + z) - exp x - z β€’ exp xβ€– ≀ β€–exp xβ€– * β€–zβ€– ^ 2 := exp_bound_sq x z hz
+    have :
+      β€–NormedSpace.exp (x + z) - NormedSpace.exp x - z β€’ NormedSpace.exp xβ€– ≀
+        β€–NormedSpace.exp xβ€– * β€–zβ€– ^ 2 :=
+      exp_bound_sq x z hz
     rw [← sub_le_iff_le_add', ← norm_smul z (_ : β„‚)]
     exact (norm_sub_norm_le _ _).trans this
   calc
-    β€–exp y - exp xβ€– = β€–exp (x + (y - x)) - exp xβ€– := by nth_rw 1 [hy_eq]
-    _ ≀ β€–y - xβ€– * β€–exp xβ€– + β€–exp xβ€– * β€–y - xβ€– ^ 2 := (h_sq (y - x) (hyx.le.trans hr_le))
-    _ ≀ β€–y - xβ€– * β€–exp xβ€– + β€–exp xβ€– * (r * β€–y - xβ€–) :=
+    β€–NormedSpace.exp y - NormedSpace.exp xβ€– = β€–NormedSpace.exp (x + (y - x)) - NormedSpace.exp xβ€– :=
+      by nth_rw 1 [hy_eq]
+    _ ≀ β€–y - xβ€– * β€–NormedSpace.exp xβ€– + β€–NormedSpace.exp xβ€– * β€–y - xβ€– ^ 2 :=
+      (h_sq (y - x) (hyx.le.trans hr_le))
+    _ ≀ β€–y - xβ€– * β€–NormedSpace.exp xβ€– + β€–NormedSpace.exp xβ€– * (r * β€–y - xβ€–) :=
       (add_le_add_left (mul_le_mul le_rfl hyx_sq_le (sq_nonneg _) (norm_nonneg _)) _)
-    _ = (1 + r) * β€–exp xβ€– * β€–y - xβ€– := by ring
+    _ = (1 + r) * β€–NormedSpace.exp xβ€– * β€–y - xβ€– := by ring
 #align complex.locally_lipschitz_exp Complex.locally_lipschitz_exp
 -/
 
@@ -193,7 +203,7 @@ variable {Ξ± : Type _} {x y z : ℝ} {l : Filter Ξ±}
 
 #print Real.exp_half /-
 theorem exp_half (x : ℝ) : exp (x / 2) = sqrt (exp x) := by
-  rw [eq_comm, sqrt_eq_iff_sq_eq, sq, ← exp_add, add_halves] <;> exact (exp_pos _).le
+  rw [eq_comm, sqrt_eq_iff_sq_eq, sq, ← NormedSpace.exp_add, add_halves] <;> exact (exp_pos _).le
 #align real.exp_half Real.exp_half
 -/
 
@@ -203,7 +213,8 @@ theorem tendsto_exp_atTop : Tendsto exp atTop atTop :=
   by
   have A : tendsto (fun x : ℝ => x + 1) at_top at_top :=
     tendsto_at_top_add_const_right at_top 1 tendsto_id
-  have B : βˆ€αΆ  x in at_top, x + 1 ≀ exp x := eventually_at_top.2 ⟨0, fun x hx => add_one_le_exp x⟩
+  have B : βˆ€αΆ  x in at_top, x + 1 ≀ NormedSpace.exp x :=
+    eventually_at_top.2 ⟨0, fun x hx => add_one_le_exp x⟩
   exact tendsto_at_top_mono' at_top B A
 #align real.tendsto_exp_at_top Real.tendsto_exp_atTop
 -/
@@ -258,8 +269,8 @@ theorem tendsto_exp_div_pow_atTop (n : β„•) : Tendsto (fun x => exp x / x ^ n) a
   by
   refine' (at_top_basis_Ioi.tendsto_iff (at_top_basis' 1)).2 fun C hC₁ => _
   have hCβ‚€ : 0 < C := zero_lt_one.trans_le hC₁
-  have : 0 < (exp 1 * C)⁻¹ := inv_pos.2 (mul_pos (exp_pos _) hCβ‚€)
-  obtain ⟨N, hN⟩ : βˆƒ N, βˆ€ k β‰₯ N, (↑k ^ n : ℝ) / exp 1 ^ k < (exp 1 * C)⁻¹ :=
+  have : 0 < (NormedSpace.exp 1 * C)⁻¹ := inv_pos.2 (mul_pos (exp_pos _) hCβ‚€)
+  obtain ⟨N, hN⟩ : βˆƒ N, βˆ€ k β‰₯ N, (↑k ^ n : ℝ) / NormedSpace.exp 1 ^ k < (NormedSpace.exp 1 * C)⁻¹ :=
     eventually_at_top.1
       ((tendsto_pow_const_div_const_pow_of_one_lt n (one_lt_exp_iff.2 zero_lt_one)).Eventually
         (gt_mem_nhds this))
@@ -269,11 +280,12 @@ theorem tendsto_exp_div_pow_atTop (n : β„•) : Tendsto (fun x => exp x / x ^ n) a
   rw [Set.mem_Ici, le_div_iff (pow_pos hxβ‚€ _), ← le_div_iff' hCβ‚€]
   calc
     x ^ n ≀ ⌈xβŒ‰β‚Š ^ n := pow_le_pow_of_le_left hxβ‚€.le (Nat.le_ceil _) _
-    _ ≀ exp ⌈xβŒ‰β‚Š / (exp 1 * C) := (hN _ (Nat.lt_ceil.2 hx).le).le
-    _ ≀ exp (x + 1) / (exp 1 * C) :=
+    _ ≀ NormedSpace.exp ⌈xβŒ‰β‚Š / (NormedSpace.exp 1 * C) := (hN _ (Nat.lt_ceil.2 hx).le).le
+    _ ≀ NormedSpace.exp (x + 1) / (NormedSpace.exp 1 * C) :=
       (div_le_div_of_le (mul_pos (exp_pos _) hCβ‚€).le
         (exp_le_exp.2 <| (Nat.ceil_lt_add_one hxβ‚€.le).le))
-    _ = exp x / C := by rw [add_comm, exp_add, mul_div_mul_left _ _ (exp_pos _).ne']
+    _ = NormedSpace.exp x / C := by
+      rw [add_comm, NormedSpace.exp_add, mul_div_mul_left _ _ (exp_pos _).ne']
 #align real.tendsto_exp_div_pow_at_top Real.tendsto_exp_div_pow_atTop
 -/
 
@@ -282,7 +294,7 @@ theorem tendsto_exp_div_pow_atTop (n : β„•) : Tendsto (fun x => exp x / x ^ n) a
 theorem tendsto_pow_mul_exp_neg_atTop_nhds_0 (n : β„•) :
     Tendsto (fun x => x ^ n * exp (-x)) atTop (𝓝 0) :=
   (tendsto_inv_atTop_zero.comp (tendsto_exp_div_pow_atTop n)).congr fun x => by
-    rw [comp_app, inv_eq_one_div, div_div_eq_mul_div, one_mul, div_eq_mul_inv, exp_neg]
+    rw [comp_app, inv_eq_one_div, div_div_eq_mul_div, one_mul, div_eq_mul_inv, NormedSpace.exp_neg]
 #align real.tendsto_pow_mul_exp_neg_at_top_nhds_0 Real.tendsto_pow_mul_exp_neg_atTop_nhds_0
 -/
 
@@ -308,7 +320,7 @@ theorem tendsto_mul_exp_add_div_pow_atTop (b c : ℝ) (n : β„•) (hb : 0 < b) :
 theorem tendsto_div_pow_mul_exp_add_atTop (b c : ℝ) (n : β„•) (hb : 0 β‰  b) :
     Tendsto (fun x => x ^ n / (b * exp x + c)) atTop (𝓝 0) :=
   by
-  have H : βˆ€ d e, 0 < d β†’ tendsto (fun x : ℝ => x ^ n / (d * exp x + e)) at_top (𝓝 0) :=
+  have H : βˆ€ d e, 0 < d β†’ tendsto (fun x : ℝ => x ^ n / (d * NormedSpace.exp x + e)) at_top (𝓝 0) :=
     by
     intro b' c' h
     convert (tendsto_mul_exp_add_div_pow_at_top b' c' n h).inv_tendsto_atTop
@@ -319,7 +331,7 @@ theorem tendsto_div_pow_mul_exp_add_atTop (b c : ℝ) (n : β„•) (hb : 0 β‰  b) :
   Β· convert (H (-b) (-c) (neg_pos.mpr h)).neg
     Β· ext x
       field_simp
-      rw [← neg_add (b * exp x) c, neg_div_neg_eq]
+      rw [← neg_add (b * NormedSpace.exp x) c, neg_div_neg_eq]
     Β· exact neg_zero.symm
 #align real.tendsto_div_pow_mul_exp_add_at_top Real.tendsto_div_pow_mul_exp_add_atTop
 -/
@@ -460,7 +472,7 @@ theorem isLittleO_exp_comp_exp_comp {f g : Ξ± β†’ ℝ} :
 @[simp]
 theorem isLittleO_one_exp_comp {f : Ξ± β†’ ℝ} :
     ((fun x => 1 : Ξ± β†’ ℝ) =o[l] fun x => exp (f x)) ↔ Tendsto f l atTop := by
-  simp only [← exp_zero, is_o_exp_comp_exp_comp, sub_zero]
+  simp only [← NormedSpace.exp_zero, is_o_exp_comp_exp_comp, sub_zero]
 #align real.is_o_one_exp_comp Real.isLittleO_one_exp_comp
 -/
 
@@ -470,7 +482,8 @@ from below under `f`. -/
 @[simp]
 theorem isBigO_one_exp_comp {f : Ξ± β†’ ℝ} :
     ((fun x => 1 : Ξ± β†’ ℝ) =O[l] fun x => exp (f x)) ↔ IsBoundedUnder (Β· β‰₯ Β·) l f := by
-  simp only [← exp_zero, is_O_exp_comp_exp_comp, Pi.sub_def, zero_sub, is_bounded_under_le_neg]
+  simp only [← NormedSpace.exp_zero, is_O_exp_comp_exp_comp, Pi.sub_def, zero_sub,
+    is_bounded_under_le_neg]
 #align real.is_O_one_exp_comp Real.isBigO_one_exp_comp
 -/
 
@@ -489,7 +502,7 @@ theorem isBigO_exp_comp_one {f : Ξ± β†’ ℝ} :
 @[simp]
 theorem isTheta_exp_comp_one {f : Ξ± β†’ ℝ} :
     (fun x => exp (f x)) =Θ[l] (fun x => 1 : Ξ± β†’ ℝ) ↔ IsBoundedUnder (Β· ≀ Β·) l fun x => |f x| := by
-  simp only [← exp_zero, is_Theta_exp_comp_exp_comp, sub_zero]
+  simp only [← NormedSpace.exp_zero, is_Theta_exp_comp_exp_comp, sub_zero]
 #align real.is_Theta_exp_comp_one Real.isTheta_exp_comp_one
 -/
 
Diff
@@ -3,9 +3,9 @@ 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
 -/
-import Mathbin.Analysis.Asymptotics.Theta
-import Mathbin.Analysis.Complex.Basic
-import Mathbin.Analysis.SpecificLimits.Normed
+import Analysis.Asymptotics.Theta
+import Analysis.Complex.Basic
+import Analysis.SpecificLimits.Normed
 
 #align_import analysis.special_functions.exp from "leanprover-community/mathlib"@"ba5ff5ad5d120fb0ef094ad2994967e9bfaf5112"
 
Diff
@@ -2,16 +2,13 @@
 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
-
-! This file was ported from Lean 3 source module analysis.special_functions.exp
-! leanprover-community/mathlib commit ba5ff5ad5d120fb0ef094ad2994967e9bfaf5112
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathbin.Analysis.Asymptotics.Theta
 import Mathbin.Analysis.Complex.Basic
 import Mathbin.Analysis.SpecificLimits.Normed
 
+#align_import analysis.special_functions.exp from "leanprover-community/mathlib"@"ba5ff5ad5d120fb0ef094ad2994967e9bfaf5112"
+
 /-!
 # Complex and real exponential
 
Diff
@@ -37,6 +37,7 @@ namespace Complex
 
 variable {z y x : ℝ}
 
+#print Complex.exp_bound_sq /-
 theorem exp_bound_sq (x z : β„‚) (hz : β€–zβ€– ≀ 1) :
     β€–exp (x + z) - exp x - z β€’ exp xβ€– ≀ β€–exp xβ€– * β€–zβ€– ^ 2 :=
   calc
@@ -45,7 +46,9 @@ theorem exp_bound_sq (x z : β„‚) (hz : β€–zβ€– ≀ 1) :
     _ ≀ β€–exp xβ€– * β€–zβ€– ^ 2 :=
       mul_le_mul_of_nonneg_left (abs_exp_sub_one_sub_id_le hz) (norm_nonneg _)
 #align complex.exp_bound_sq Complex.exp_bound_sq
+-/
 
+#print Complex.locally_lipschitz_exp /-
 theorem locally_lipschitz_exp {r : ℝ} (hr_nonneg : 0 ≀ r) (hr_le : r ≀ 1) (x y : β„‚)
     (hyx : β€–y - xβ€– < r) : β€–exp y - exp xβ€– ≀ (1 + r) * β€–exp xβ€– * β€–y - xβ€– :=
   by
@@ -67,17 +70,22 @@ theorem locally_lipschitz_exp {r : ℝ} (hr_nonneg : 0 ≀ r) (hr_le : r ≀ 1)
       (add_le_add_left (mul_le_mul le_rfl hyx_sq_le (sq_nonneg _) (norm_nonneg _)) _)
     _ = (1 + r) * β€–exp xβ€– * β€–y - xβ€– := by ring
 #align complex.locally_lipschitz_exp Complex.locally_lipschitz_exp
+-/
 
+#print Complex.continuous_exp /-
 @[continuity]
 theorem continuous_exp : Continuous exp :=
   continuous_iff_continuousAt.mpr fun x =>
     continuousAt_of_locally_lipschitz zero_lt_one (2 * β€–exp xβ€–)
       (locally_lipschitz_exp zero_le_one le_rfl x)
 #align complex.continuous_exp Complex.continuous_exp
+-/
 
+#print Complex.continuousOn_exp /-
 theorem continuousOn_exp {s : Set β„‚} : ContinuousOn exp s :=
   continuous_exp.ContinuousOn
 #align complex.continuous_on_exp Complex.continuousOn_exp
+-/
 
 end Complex
 
@@ -87,29 +95,39 @@ variable {Ξ± : Type _}
 
 open Complex
 
+#print Filter.Tendsto.cexp /-
 theorem Filter.Tendsto.cexp {l : Filter Ξ±} {f : Ξ± β†’ β„‚} {z : β„‚} (hf : Tendsto f l (𝓝 z)) :
     Tendsto (fun x => exp (f x)) l (𝓝 (exp z)) :=
   (continuous_exp.Tendsto _).comp hf
 #align filter.tendsto.cexp Filter.Tendsto.cexp
+-/
 
 variable [TopologicalSpace Ξ±] {f : Ξ± β†’ β„‚} {s : Set Ξ±} {x : Ξ±}
 
+#print ContinuousWithinAt.cexp /-
 theorem ContinuousWithinAt.cexp (h : ContinuousWithinAt f s x) :
     ContinuousWithinAt (fun y => exp (f y)) s x :=
   h.cexp
 #align continuous_within_at.cexp ContinuousWithinAt.cexp
+-/
 
+#print ContinuousAt.cexp /-
 theorem ContinuousAt.cexp (h : ContinuousAt f x) : ContinuousAt (fun y => exp (f y)) x :=
   h.cexp
 #align continuous_at.cexp ContinuousAt.cexp
+-/
 
+#print ContinuousOn.cexp /-
 theorem ContinuousOn.cexp (h : ContinuousOn f s) : ContinuousOn (fun y => exp (f y)) s :=
   fun x hx => (h x hx).cexp
 #align continuous_on.cexp ContinuousOn.cexp
+-/
 
+#print Continuous.cexp /-
 theorem Continuous.cexp (h : Continuous f) : Continuous fun y => exp (f y) :=
   continuous_iff_continuousAt.2 fun x => h.ContinuousAt.cexp
 #align continuous.cexp Continuous.cexp
+-/
 
 end ComplexContinuousExpComp
 
@@ -176,9 +194,11 @@ namespace Real
 
 variable {Ξ± : Type _} {x y z : ℝ} {l : Filter Ξ±}
 
+#print Real.exp_half /-
 theorem exp_half (x : ℝ) : exp (x / 2) = sqrt (exp x) := by
   rw [eq_comm, sqrt_eq_iff_sq_eq, sq, ← exp_add, add_halves] <;> exact (exp_pos _).le
 #align real.exp_half Real.exp_half
+-/
 
 #print Real.tendsto_exp_atTop /-
 /-- The real exponential function tends to `+∞` at `+∞`. -/
@@ -191,38 +211,51 @@ theorem tendsto_exp_atTop : Tendsto exp atTop atTop :=
 #align real.tendsto_exp_at_top Real.tendsto_exp_atTop
 -/
 
+#print Real.tendsto_exp_neg_atTop_nhds_0 /-
 /-- The real exponential function tends to `0` at `-∞` or, equivalently, `exp(-x)` tends to `0`
 at `+∞` -/
 theorem tendsto_exp_neg_atTop_nhds_0 : Tendsto (fun x => exp (-x)) atTop (𝓝 0) :=
   (tendsto_inv_atTop_zero.comp tendsto_exp_atTop).congr fun x => (exp_neg x).symm
 #align real.tendsto_exp_neg_at_top_nhds_0 Real.tendsto_exp_neg_atTop_nhds_0
+-/
 
+#print Real.tendsto_exp_nhds_0_nhds_1 /-
 /-- The real exponential function tends to `1` at `0`. -/
 theorem tendsto_exp_nhds_0_nhds_1 : Tendsto exp (𝓝 0) (𝓝 1) := by convert continuous_exp.tendsto 0;
   simp
 #align real.tendsto_exp_nhds_0_nhds_1 Real.tendsto_exp_nhds_0_nhds_1
+-/
 
+#print Real.tendsto_exp_atBot /-
 theorem tendsto_exp_atBot : Tendsto exp atBot (𝓝 0) :=
   (tendsto_exp_neg_atTop_nhds_0.comp tendsto_neg_atBot_atTop).congr fun x =>
     congr_arg exp <| neg_neg x
 #align real.tendsto_exp_at_bot Real.tendsto_exp_atBot
+-/
 
+#print Real.tendsto_exp_atBot_nhdsWithin /-
 theorem tendsto_exp_atBot_nhdsWithin : Tendsto exp atBot (𝓝[>] 0) :=
   tendsto_inf.2 ⟨tendsto_exp_atBot, tendsto_principal.2 <| eventually_of_forall exp_pos⟩
 #align real.tendsto_exp_at_bot_nhds_within Real.tendsto_exp_atBot_nhdsWithin
+-/
 
+#print Real.isBoundedUnder_ge_exp_comp /-
 @[simp]
 theorem isBoundedUnder_ge_exp_comp (l : Filter Ξ±) (f : Ξ± β†’ ℝ) :
     IsBoundedUnder (Β· β‰₯ Β·) l fun x => exp (f x) :=
   isBoundedUnder_of ⟨0, fun x => (exp_pos _).le⟩
 #align real.is_bounded_under_ge_exp_comp Real.isBoundedUnder_ge_exp_comp
+-/
 
+#print Real.isBoundedUnder_le_exp_comp /-
 @[simp]
 theorem isBoundedUnder_le_exp_comp {f : Ξ± β†’ ℝ} :
     (IsBoundedUnder (Β· ≀ Β·) l fun x => exp (f x)) ↔ IsBoundedUnder (Β· ≀ Β·) l f :=
   exp_monotone.isBoundedUnder_le_comp tendsto_exp_atTop
 #align real.is_bounded_under_le_exp_comp Real.isBoundedUnder_le_exp_comp
+-/
 
+#print Real.tendsto_exp_div_pow_atTop /-
 /-- The function `exp(x)/x^n` tends to `+∞` at `+∞`, for any natural number `n` -/
 theorem tendsto_exp_div_pow_atTop (n : β„•) : Tendsto (fun x => exp x / x ^ n) atTop atTop :=
   by
@@ -245,14 +278,18 @@ theorem tendsto_exp_div_pow_atTop (n : β„•) : Tendsto (fun x => exp x / x ^ n) a
         (exp_le_exp.2 <| (Nat.ceil_lt_add_one hxβ‚€.le).le))
     _ = exp x / C := by rw [add_comm, exp_add, mul_div_mul_left _ _ (exp_pos _).ne']
 #align real.tendsto_exp_div_pow_at_top Real.tendsto_exp_div_pow_atTop
+-/
 
+#print Real.tendsto_pow_mul_exp_neg_atTop_nhds_0 /-
 /-- The function `x^n * exp(-x)` tends to `0` at `+∞`, for any natural number `n`. -/
 theorem tendsto_pow_mul_exp_neg_atTop_nhds_0 (n : β„•) :
     Tendsto (fun x => x ^ n * exp (-x)) atTop (𝓝 0) :=
   (tendsto_inv_atTop_zero.comp (tendsto_exp_div_pow_atTop n)).congr fun x => by
     rw [comp_app, inv_eq_one_div, div_div_eq_mul_div, one_mul, div_eq_mul_inv, exp_neg]
 #align real.tendsto_pow_mul_exp_neg_at_top_nhds_0 Real.tendsto_pow_mul_exp_neg_atTop_nhds_0
+-/
 
+#print Real.tendsto_mul_exp_add_div_pow_atTop /-
 /-- The function `(b * exp x + c) / (x ^ n)` tends to `+∞` at `+∞`, for any natural number
 `n` and any real numbers `b` and `c` such that `b` is positive. -/
 theorem tendsto_mul_exp_add_div_pow_atTop (b c : ℝ) (n : β„•) (hb : 0 < b) :
@@ -266,7 +303,9 @@ theorem tendsto_mul_exp_add_div_pow_atTop (b c : ℝ) (n : β„•) (hb : 0 < b) :
     ((tendsto_exp_div_pow_at_top n).const_mul_atTop hb).atTop_add
       (tendsto_const_nhds.div_at_top (tendsto_pow_at_top hn))
 #align real.tendsto_mul_exp_add_div_pow_at_top Real.tendsto_mul_exp_add_div_pow_atTop
+-/
 
+#print Real.tendsto_div_pow_mul_exp_add_atTop /-
 /-- The function `(x ^ n) / (b * exp x + c)` tends to `0` at `+∞`, for any natural number
 `n` and any real numbers `b` and `c` such that `b` is nonzero. -/
 theorem tendsto_div_pow_mul_exp_add_atTop (b c : ℝ) (n : β„•) (hb : 0 β‰  b) :
@@ -286,7 +325,9 @@ theorem tendsto_div_pow_mul_exp_add_atTop (b c : ℝ) (n : β„•) (hb : 0 β‰  b) :
       rw [← neg_add (b * exp x) c, neg_div_neg_eq]
     Β· exact neg_zero.symm
 #align real.tendsto_div_pow_mul_exp_add_at_top Real.tendsto_div_pow_mul_exp_add_atTop
+-/
 
+#print Real.expOrderIso /-
 /-- `real.exp` as an order isomorphism between `ℝ` and `(0, +∞)`. -/
 def expOrderIso : ℝ ≃o Ioi (0 : ℝ) :=
   StrictMono.orderIsoOfSurjective _ (exp_strictMono.codRestrict exp_pos) <|
@@ -294,21 +335,28 @@ def expOrderIso : ℝ ≃o Ioi (0 : ℝ) :=
       (by simp only [tendsto_Ioi_at_top, Subtype.coe_mk, tendsto_exp_at_top])
       (by simp [tendsto_exp_at_bot_nhds_within])
 #align real.exp_order_iso Real.expOrderIso
+-/
 
+#print Real.coe_expOrderIso_apply /-
 @[simp]
 theorem coe_expOrderIso_apply (x : ℝ) : (expOrderIso x : ℝ) = exp x :=
   rfl
 #align real.coe_exp_order_iso_apply Real.coe_expOrderIso_apply
+-/
 
+#print Real.coe_comp_expOrderIso /-
 @[simp]
 theorem coe_comp_expOrderIso : coe ∘ expOrderIso = exp :=
   rfl
 #align real.coe_comp_exp_order_iso Real.coe_comp_expOrderIso
+-/
 
+#print Real.range_exp /-
 @[simp]
 theorem range_exp : range exp = Ioi 0 := by
   rw [← coe_comp_exp_order_iso, range_comp, exp_order_iso.range_eq, image_univ, Subtype.range_coe]
 #align real.range_exp Real.range_exp
+-/
 
 #print Real.map_exp_atTop /-
 @[simp]
@@ -339,44 +387,59 @@ theorem tendsto_comp_exp_atTop {f : ℝ β†’ Ξ±} :
 #align real.tendsto_comp_exp_at_top Real.tendsto_comp_exp_atTop
 -/
 
+#print Real.map_exp_atBot /-
 @[simp]
 theorem map_exp_atBot : map exp atBot = 𝓝[>] 0 := by
   rw [← coe_comp_exp_order_iso, ← Filter.map_map, exp_order_iso.map_at_bot, ← map_coe_Ioi_atBot]
 #align real.map_exp_at_bot Real.map_exp_atBot
+-/
 
+#print Real.comap_exp_nhdsWithin_Ioi_zero /-
 @[simp]
 theorem comap_exp_nhdsWithin_Ioi_zero : comap exp (𝓝[>] 0) = atBot := by
   rw [← map_exp_at_bot, comap_map exp_injective]
 #align real.comap_exp_nhds_within_Ioi_zero Real.comap_exp_nhdsWithin_Ioi_zero
+-/
 
+#print Real.tendsto_comp_exp_atBot /-
 theorem tendsto_comp_exp_atBot {f : ℝ β†’ Ξ±} :
     Tendsto (fun x => f (exp x)) atBot l ↔ Tendsto f (𝓝[>] 0) l := by
   rw [← map_exp_at_bot, tendsto_map'_iff]
 #align real.tendsto_comp_exp_at_bot Real.tendsto_comp_exp_atBot
+-/
 
+#print Real.comap_exp_nhds_zero /-
 @[simp]
 theorem comap_exp_nhds_zero : comap exp (𝓝 0) = atBot :=
   (comap_nhdsWithin_range exp 0).symm.trans <| by simp
 #align real.comap_exp_nhds_zero Real.comap_exp_nhds_zero
+-/
 
+#print Real.tendsto_exp_comp_nhds_zero /-
 @[simp]
 theorem tendsto_exp_comp_nhds_zero {f : Ξ± β†’ ℝ} :
     Tendsto (fun x => exp (f x)) l (𝓝 0) ↔ Tendsto f l atBot := by
   rw [← tendsto_comap_iff, comap_exp_nhds_zero]
 #align real.tendsto_exp_comp_nhds_zero Real.tendsto_exp_comp_nhds_zero
+-/
 
+#print Real.isLittleO_pow_exp_atTop /-
 theorem isLittleO_pow_exp_atTop {n : β„•} : (fun x => x ^ n) =o[atTop] Real.exp := by
   simpa [is_o_iff_tendsto fun x hx => ((exp_pos x).ne' hx).elim] using
     tendsto_div_pow_mul_exp_add_at_top 1 0 n zero_ne_one
 #align real.is_o_pow_exp_at_top Real.isLittleO_pow_exp_atTop
+-/
 
+#print Real.isBigO_exp_comp_exp_comp /-
 @[simp]
 theorem isBigO_exp_comp_exp_comp {f g : Ξ± β†’ ℝ} :
     ((fun x => exp (f x)) =O[l] fun x => exp (g x)) ↔ IsBoundedUnder (Β· ≀ Β·) l (f - g) :=
   Iff.trans (isBigO_iff_isBoundedUnder_le_div <| eventually_of_forall fun x => exp_ne_zero _) <| by
     simp only [norm_eq_abs, abs_exp, ← exp_sub, is_bounded_under_le_exp_comp, Pi.sub_def]
 #align real.is_O_exp_comp_exp_comp Real.isBigO_exp_comp_exp_comp
+-/
 
+#print Real.isTheta_exp_comp_exp_comp /-
 @[simp]
 theorem isTheta_exp_comp_exp_comp {f g : Ξ± β†’ ℝ} :
     ((fun x => exp (f x)) =Θ[l] fun x => exp (g x)) ↔
@@ -385,20 +448,26 @@ theorem isTheta_exp_comp_exp_comp {f g : Ξ± β†’ ℝ} :
   simp only [is_bounded_under_le_abs, ← is_bounded_under_le_neg, neg_sub, is_Theta,
     is_O_exp_comp_exp_comp, Pi.sub_def]
 #align real.is_Theta_exp_comp_exp_comp Real.isTheta_exp_comp_exp_comp
+-/
 
+#print Real.isLittleO_exp_comp_exp_comp /-
 @[simp]
 theorem isLittleO_exp_comp_exp_comp {f g : Ξ± β†’ ℝ} :
     ((fun x => exp (f x)) =o[l] fun x => exp (g x)) ↔ Tendsto (fun x => g x - f x) l atTop := by
   simp only [is_o_iff_tendsto, exp_ne_zero, ← exp_sub, ← tendsto_neg_at_top_iff, false_imp_iff,
     imp_true_iff, tendsto_exp_comp_nhds_zero, neg_sub]
 #align real.is_o_exp_comp_exp_comp Real.isLittleO_exp_comp_exp_comp
+-/
 
+#print Real.isLittleO_one_exp_comp /-
 @[simp]
 theorem isLittleO_one_exp_comp {f : Ξ± β†’ ℝ} :
     ((fun x => 1 : Ξ± β†’ ℝ) =o[l] fun x => exp (f x)) ↔ Tendsto f l atTop := by
   simp only [← exp_zero, is_o_exp_comp_exp_comp, sub_zero]
 #align real.is_o_one_exp_comp Real.isLittleO_one_exp_comp
+-/
 
+#print Real.isBigO_one_exp_comp /-
 /-- `real.exp (f x)` is bounded away from zero along a filter if and only if this filter is bounded
 from below under `f`. -/
 @[simp]
@@ -406,14 +475,18 @@ theorem isBigO_one_exp_comp {f : Ξ± β†’ ℝ} :
     ((fun x => 1 : Ξ± β†’ ℝ) =O[l] fun x => exp (f x)) ↔ IsBoundedUnder (Β· β‰₯ Β·) l f := by
   simp only [← exp_zero, is_O_exp_comp_exp_comp, Pi.sub_def, zero_sub, is_bounded_under_le_neg]
 #align real.is_O_one_exp_comp Real.isBigO_one_exp_comp
+-/
 
+#print Real.isBigO_exp_comp_one /-
 /-- `real.exp (f x)` is bounded away from zero along a filter if and only if this filter is bounded
 from below under `f`. -/
 theorem isBigO_exp_comp_one {f : Ξ± β†’ ℝ} :
     (fun x => exp (f x)) =O[l] (fun x => 1 : Ξ± β†’ ℝ) ↔ IsBoundedUnder (Β· ≀ Β·) l f := by
   simp only [is_O_one_iff, norm_eq_abs, abs_exp, is_bounded_under_le_exp_comp]
 #align real.is_O_exp_comp_one Real.isBigO_exp_comp_one
+-/
 
+#print Real.isTheta_exp_comp_one /-
 /-- `real.exp (f x)` is bounded away from zero and infinity along a filter `l` if and only if
 `|f x|` is bounded from above along this filter. -/
 @[simp]
@@ -421,49 +494,64 @@ theorem isTheta_exp_comp_one {f : Ξ± β†’ ℝ} :
     (fun x => exp (f x)) =Θ[l] (fun x => 1 : Ξ± β†’ ℝ) ↔ IsBoundedUnder (Β· ≀ Β·) l fun x => |f x| := by
   simp only [← exp_zero, is_Theta_exp_comp_exp_comp, sub_zero]
 #align real.is_Theta_exp_comp_one Real.isTheta_exp_comp_one
+-/
 
 end Real
 
 namespace Complex
 
+#print Complex.comap_exp_comap_abs_atTop /-
 theorem comap_exp_comap_abs_atTop : comap exp (comap abs atTop) = comap re atTop :=
   calc
     comap exp (comap abs atTop) = comap re (comap Real.exp atTop) := by
       simp only [comap_comap, (· ∘ ·), abs_exp]
     _ = comap re atTop := by rw [Real.comap_exp_atTop]
 #align complex.comap_exp_comap_abs_at_top Complex.comap_exp_comap_abs_atTop
+-/
 
+#print Complex.comap_exp_nhds_zero /-
 theorem comap_exp_nhds_zero : comap exp (𝓝 0) = comap re atBot :=
   calc
     comap exp (𝓝 0) = comap re (comap Real.exp (𝓝 0)) := by
       simp only [comap_comap, ← comap_abs_nhds_zero, (Β· ∘ Β·), abs_exp]
     _ = comap re atBot := by rw [Real.comap_exp_nhds_zero]
 #align complex.comap_exp_nhds_zero Complex.comap_exp_nhds_zero
+-/
 
+#print Complex.comap_exp_nhdsWithin_zero /-
 theorem comap_exp_nhdsWithin_zero : comap exp (𝓝[β‰ ] 0) = comap re atBot :=
   by
   have : exp ⁻¹' {0}ᢜ = univ := eq_univ_of_forall exp_ne_zero
   simp [nhdsWithin, comap_exp_nhds_zero, this]
 #align complex.comap_exp_nhds_within_zero Complex.comap_exp_nhdsWithin_zero
+-/
 
+#print Complex.tendsto_exp_nhds_zero_iff /-
 theorem tendsto_exp_nhds_zero_iff {Ξ± : Type _} {l : Filter Ξ±} {f : Ξ± β†’ β„‚} :
     Tendsto (fun x => exp (f x)) l (𝓝 0) ↔ Tendsto (fun x => re (f x)) l atBot := by
   rw [← tendsto_comap_iff, comap_exp_nhds_zero, tendsto_comap_iff]
 #align complex.tendsto_exp_nhds_zero_iff Complex.tendsto_exp_nhds_zero_iff
+-/
 
+#print Complex.tendsto_exp_comap_re_atTop /-
 /-- `complex.abs (complex.exp z) β†’ ∞` as `complex.re z β†’ ∞`. TODO: use `bornology.cobounded`. -/
 theorem tendsto_exp_comap_re_atTop : Tendsto exp (comap re atTop) (comap abs atTop) :=
   comap_exp_comap_abs_atTop β–Έ tendsto_comap
 #align complex.tendsto_exp_comap_re_at_top Complex.tendsto_exp_comap_re_atTop
+-/
 
+#print Complex.tendsto_exp_comap_re_atBot /-
 /-- `complex.exp z β†’ 0` as `complex.re z β†’ -∞`.-/
 theorem tendsto_exp_comap_re_atBot : Tendsto exp (comap re atBot) (𝓝 0) :=
   comap_exp_nhds_zero β–Έ tendsto_comap
 #align complex.tendsto_exp_comap_re_at_bot Complex.tendsto_exp_comap_re_atBot
+-/
 
+#print Complex.tendsto_exp_comap_re_atBot_nhdsWithin /-
 theorem tendsto_exp_comap_re_atBot_nhdsWithin : Tendsto exp (comap re atBot) (𝓝[β‰ ] 0) :=
   comap_exp_nhdsWithin_zero β–Έ tendsto_comap
 #align complex.tendsto_exp_comap_re_at_bot_nhds_within Complex.tendsto_exp_comap_re_atBot_nhdsWithin
+-/
 
 end Complex
 
Diff
@@ -44,7 +44,6 @@ theorem exp_bound_sq (x z : β„‚) (hz : β€–zβ€– ≀ 1) :
     _ = β€–exp xβ€– * β€–exp z - 1 - zβ€– := (norm_mul _ _)
     _ ≀ β€–exp xβ€– * β€–zβ€– ^ 2 :=
       mul_le_mul_of_nonneg_left (abs_exp_sub_one_sub_id_le hz) (norm_nonneg _)
-    
 #align complex.exp_bound_sq Complex.exp_bound_sq
 
 theorem locally_lipschitz_exp {r : ℝ} (hr_nonneg : 0 ≀ r) (hr_le : r ≀ 1) (x y : β„‚)
@@ -67,7 +66,6 @@ theorem locally_lipschitz_exp {r : ℝ} (hr_nonneg : 0 ≀ r) (hr_le : r ≀ 1)
     _ ≀ β€–y - xβ€– * β€–exp xβ€– + β€–exp xβ€– * (r * β€–y - xβ€–) :=
       (add_le_add_left (mul_le_mul le_rfl hyx_sq_le (sq_nonneg _) (norm_nonneg _)) _)
     _ = (1 + r) * β€–exp xβ€– * β€–y - xβ€– := by ring
-    
 #align complex.locally_lipschitz_exp Complex.locally_lipschitz_exp
 
 @[continuity]
@@ -246,7 +244,6 @@ theorem tendsto_exp_div_pow_atTop (n : β„•) : Tendsto (fun x => exp x / x ^ n) a
       (div_le_div_of_le (mul_pos (exp_pos _) hCβ‚€).le
         (exp_le_exp.2 <| (Nat.ceil_lt_add_one hxβ‚€.le).le))
     _ = exp x / C := by rw [add_comm, exp_add, mul_div_mul_left _ _ (exp_pos _).ne']
-    
 #align real.tendsto_exp_div_pow_at_top Real.tendsto_exp_div_pow_atTop
 
 /-- The function `x^n * exp(-x)` tends to `0` at `+∞`, for any natural number `n`. -/
@@ -434,7 +431,6 @@ theorem comap_exp_comap_abs_atTop : comap exp (comap abs atTop) = comap re atTop
     comap exp (comap abs atTop) = comap re (comap Real.exp atTop) := by
       simp only [comap_comap, (· ∘ ·), abs_exp]
     _ = comap re atTop := by rw [Real.comap_exp_atTop]
-    
 #align complex.comap_exp_comap_abs_at_top Complex.comap_exp_comap_abs_atTop
 
 theorem comap_exp_nhds_zero : comap exp (𝓝 0) = comap re atBot :=
@@ -442,7 +438,6 @@ theorem comap_exp_nhds_zero : comap exp (𝓝 0) = comap re atBot :=
     comap exp (𝓝 0) = comap re (comap Real.exp (𝓝 0)) := by
       simp only [comap_comap, ← comap_abs_nhds_zero, (Β· ∘ Β·), abs_exp]
     _ = comap re atBot := by rw [Real.comap_exp_nhds_zero]
-    
 #align complex.comap_exp_nhds_zero Complex.comap_exp_nhds_zero
 
 theorem comap_exp_nhdsWithin_zero : comap exp (𝓝[β‰ ] 0) = comap re atBot :=
Diff
@@ -278,12 +278,12 @@ theorem tendsto_div_pow_mul_exp_add_atTop (b c : ℝ) (n : β„•) (hb : 0 β‰  b) :
   have H : βˆ€ d e, 0 < d β†’ tendsto (fun x : ℝ => x ^ n / (d * exp x + e)) at_top (𝓝 0) :=
     by
     intro b' c' h
-    convert(tendsto_mul_exp_add_div_pow_at_top b' c' n h).inv_tendsto_atTop
+    convert (tendsto_mul_exp_add_div_pow_at_top b' c' n h).inv_tendsto_atTop
     ext x
     simpa only [Pi.inv_apply] using (inv_div _ _).symm
   cases lt_or_gt_of_ne hb
   Β· exact H b c h
-  Β· convert(H (-b) (-c) (neg_pos.mpr h)).neg
+  Β· convert (H (-b) (-c) (neg_pos.mpr h)).neg
     Β· ext x
       field_simp
       rw [← neg_add (b * exp x) c, neg_div_neg_eq]
Diff
@@ -40,7 +40,7 @@ variable {z y x : ℝ}
 theorem exp_bound_sq (x z : β„‚) (hz : β€–zβ€– ≀ 1) :
     β€–exp (x + z) - exp x - z β€’ exp xβ€– ≀ β€–exp xβ€– * β€–zβ€– ^ 2 :=
   calc
-    β€–exp (x + z) - exp x - z * exp xβ€– = β€–exp x * (exp z - 1 - z)β€– := by congr ; rw [exp_add]; ring
+    β€–exp (x + z) - exp x - z * exp xβ€– = β€–exp x * (exp z - 1 - z)β€– := by congr; rw [exp_add]; ring
     _ = β€–exp xβ€– * β€–exp z - 1 - zβ€– := (norm_mul _ _)
     _ ≀ β€–exp xβ€– * β€–zβ€– ^ 2 :=
       mul_le_mul_of_nonneg_left (abs_exp_sub_one_sub_id_le hz) (norm_nonneg _)
@@ -235,8 +235,8 @@ theorem tendsto_exp_div_pow_atTop (n : β„•) : Tendsto (fun x => exp x / x ^ n) a
     eventually_at_top.1
       ((tendsto_pow_const_div_const_pow_of_one_lt n (one_lt_exp_iff.2 zero_lt_one)).Eventually
         (gt_mem_nhds this))
-  simp only [← exp_nat_mul, mul_one, div_lt_iff, exp_pos, ← div_eq_inv_mul] at hN
-  refine' ⟨N, trivial, fun x hx => _⟩; rw [Set.mem_Ioi] at hx
+  simp only [← exp_nat_mul, mul_one, div_lt_iff, exp_pos, ← div_eq_inv_mul] at hN 
+  refine' ⟨N, trivial, fun x hx => _⟩; rw [Set.mem_Ioi] at hx 
   have hxβ‚€ : 0 < x := N.cast_nonneg.trans_lt hx
   rw [Set.mem_Ici, le_div_iff (pow_pos hxβ‚€ _), ← le_div_iff' hCβ‚€]
   calc
Diff
@@ -31,7 +31,7 @@ noncomputable section
 
 open Finset Filter Metric Asymptotics Set Function
 
-open Classical Topology
+open scoped Classical Topology
 
 namespace Complex
 
Diff
@@ -37,12 +37,6 @@ namespace Complex
 
 variable {z y x : ℝ}
 
-/- warning: complex.exp_bound_sq -> Complex.exp_bound_sq is a dubious translation:
-lean 3 declaration is
-  forall (x : Complex) (z : Complex), (LE.le.{0} Real Real.hasLe (Norm.norm.{0} Complex Complex.hasNorm z) (OfNat.ofNat.{0} Real 1 (OfNat.mk.{0} Real 1 (One.one.{0} Real Real.hasOne)))) -> (LE.le.{0} Real Real.hasLe (Norm.norm.{0} Complex Complex.hasNorm (HSub.hSub.{0, 0, 0} Complex Complex Complex (instHSub.{0} Complex Complex.hasSub) (HSub.hSub.{0, 0, 0} Complex Complex Complex (instHSub.{0} Complex Complex.hasSub) (Complex.exp (HAdd.hAdd.{0, 0, 0} Complex Complex Complex (instHAdd.{0} Complex Complex.hasAdd) x z)) (Complex.exp x)) (SMul.smul.{0, 0} Complex Complex (Mul.toSMul.{0} Complex Complex.hasMul) z (Complex.exp x)))) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) (Norm.norm.{0} Complex Complex.hasNorm (Complex.exp x)) (HPow.hPow.{0, 0, 0} Real Nat Real (instHPow.{0, 0} Real Nat (Monoid.Pow.{0} Real Real.monoid)) (Norm.norm.{0} Complex Complex.hasNorm z) (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))
-but is expected to have type
-  forall (x : Complex) (z : Complex), (LE.le.{0} Real Real.instLEReal (Norm.norm.{0} Complex Complex.instNormComplex z) (OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal))) -> (LE.le.{0} Real Real.instLEReal (Norm.norm.{0} Complex Complex.instNormComplex (HSub.hSub.{0, 0, 0} Complex Complex Complex (instHSub.{0} Complex Complex.instSubComplex) (HSub.hSub.{0, 0, 0} Complex Complex Complex (instHSub.{0} Complex Complex.instSubComplex) (Complex.exp (HAdd.hAdd.{0, 0, 0} Complex Complex Complex (instHAdd.{0} Complex Complex.instAddComplex) x z)) (Complex.exp x)) (HSMul.hSMul.{0, 0, 0} Complex Complex Complex (instHSMul.{0, 0} Complex Complex (Algebra.toSMul.{0, 0} Complex Complex Complex.instCommSemiringComplex Complex.instSemiringComplex (NormedAlgebra.toAlgebra.{0, 0} Complex Complex Complex.instNormedFieldComplex (SeminormedCommRing.toSeminormedRing.{0} Complex (NormedCommRing.toSeminormedCommRing.{0} Complex (NormedField.toNormedCommRing.{0} Complex Complex.instNormedFieldComplex))) (NormedAlgebra.id.{0} Complex Complex.instNormedFieldComplex)))) z (Complex.exp x)))) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) (Norm.norm.{0} Complex Complex.instNormComplex (Complex.exp x)) (HPow.hPow.{0, 0, 0} Real Nat Real (instHPow.{0, 0} Real Nat (Monoid.Pow.{0} Real Real.instMonoidReal)) (Norm.norm.{0} Complex Complex.instNormComplex z) (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2)))))
-Case conversion may be inaccurate. Consider using '#align complex.exp_bound_sq Complex.exp_bound_sqβ‚“'. -/
 theorem exp_bound_sq (x z : β„‚) (hz : β€–zβ€– ≀ 1) :
     β€–exp (x + z) - exp x - z β€’ exp xβ€– ≀ β€–exp xβ€– * β€–zβ€– ^ 2 :=
   calc
@@ -53,12 +47,6 @@ theorem exp_bound_sq (x z : β„‚) (hz : β€–zβ€– ≀ 1) :
     
 #align complex.exp_bound_sq Complex.exp_bound_sq
 
-/- warning: complex.locally_lipschitz_exp -> Complex.locally_lipschitz_exp is a dubious translation:
-lean 3 declaration is
-  forall {r : Real}, (LE.le.{0} Real Real.hasLe (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) r) -> (LE.le.{0} Real Real.hasLe r (OfNat.ofNat.{0} Real 1 (OfNat.mk.{0} Real 1 (One.one.{0} Real Real.hasOne)))) -> (forall (x : Complex) (y : Complex), (LT.lt.{0} Real Real.hasLt (Norm.norm.{0} Complex Complex.hasNorm (HSub.hSub.{0, 0, 0} Complex Complex Complex (instHSub.{0} Complex Complex.hasSub) y x)) r) -> (LE.le.{0} Real Real.hasLe (Norm.norm.{0} Complex Complex.hasNorm (HSub.hSub.{0, 0, 0} Complex Complex Complex (instHSub.{0} Complex Complex.hasSub) (Complex.exp y) (Complex.exp x))) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) (HAdd.hAdd.{0, 0, 0} Real Real Real (instHAdd.{0} Real Real.hasAdd) (OfNat.ofNat.{0} Real 1 (OfNat.mk.{0} Real 1 (One.one.{0} Real Real.hasOne))) r) (Norm.norm.{0} Complex Complex.hasNorm (Complex.exp x))) (Norm.norm.{0} Complex Complex.hasNorm (HSub.hSub.{0, 0, 0} Complex Complex Complex (instHSub.{0} Complex Complex.hasSub) y x)))))
-but is expected to have type
-  forall {r : Real}, (LE.le.{0} Real Real.instLEReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) r) -> (LE.le.{0} Real Real.instLEReal r (OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal))) -> (forall (x : Complex) (y : Complex), (LT.lt.{0} Real Real.instLTReal (Norm.norm.{0} Complex Complex.instNormComplex (HSub.hSub.{0, 0, 0} Complex Complex Complex (instHSub.{0} Complex Complex.instSubComplex) y x)) r) -> (LE.le.{0} Real Real.instLEReal (Norm.norm.{0} Complex Complex.instNormComplex (HSub.hSub.{0, 0, 0} Complex Complex Complex (instHSub.{0} Complex Complex.instSubComplex) (Complex.exp y) (Complex.exp x))) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) (HAdd.hAdd.{0, 0, 0} Real Real Real (instHAdd.{0} Real Real.instAddReal) (OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal)) r) (Norm.norm.{0} Complex Complex.instNormComplex (Complex.exp x))) (Norm.norm.{0} Complex Complex.instNormComplex (HSub.hSub.{0, 0, 0} Complex Complex Complex (instHSub.{0} Complex Complex.instSubComplex) y x)))))
-Case conversion may be inaccurate. Consider using '#align complex.locally_lipschitz_exp Complex.locally_lipschitz_expβ‚“'. -/
 theorem locally_lipschitz_exp {r : ℝ} (hr_nonneg : 0 ≀ r) (hr_le : r ≀ 1) (x y : β„‚)
     (hyx : β€–y - xβ€– < r) : β€–exp y - exp xβ€– ≀ (1 + r) * β€–exp xβ€– * β€–y - xβ€– :=
   by
@@ -82,12 +70,6 @@ theorem locally_lipschitz_exp {r : ℝ} (hr_nonneg : 0 ≀ r) (hr_le : r ≀ 1)
     
 #align complex.locally_lipschitz_exp Complex.locally_lipschitz_exp
 
-/- warning: complex.continuous_exp -> Complex.continuous_exp is a dubious translation:
-lean 3 declaration is
-  Continuous.{0, 0} Complex Complex (UniformSpace.toTopologicalSpace.{0} Complex (PseudoMetricSpace.toUniformSpace.{0} Complex (SeminormedRing.toPseudoMetricSpace.{0} Complex (SeminormedCommRing.toSemiNormedRing.{0} Complex (NormedCommRing.toSeminormedCommRing.{0} Complex (NormedField.toNormedCommRing.{0} Complex Complex.normedField)))))) (UniformSpace.toTopologicalSpace.{0} Complex (PseudoMetricSpace.toUniformSpace.{0} Complex (SeminormedRing.toPseudoMetricSpace.{0} Complex (SeminormedCommRing.toSemiNormedRing.{0} Complex (NormedCommRing.toSeminormedCommRing.{0} Complex (NormedField.toNormedCommRing.{0} Complex Complex.normedField)))))) Complex.exp
-but is expected to have type
-  Continuous.{0, 0} Complex Complex (UniformSpace.toTopologicalSpace.{0} Complex (PseudoMetricSpace.toUniformSpace.{0} Complex (SeminormedRing.toPseudoMetricSpace.{0} Complex (SeminormedCommRing.toSeminormedRing.{0} Complex (NormedCommRing.toSeminormedCommRing.{0} Complex (NormedField.toNormedCommRing.{0} Complex Complex.instNormedFieldComplex)))))) (UniformSpace.toTopologicalSpace.{0} Complex (PseudoMetricSpace.toUniformSpace.{0} Complex (SeminormedRing.toPseudoMetricSpace.{0} Complex (SeminormedCommRing.toSeminormedRing.{0} Complex (NormedCommRing.toSeminormedCommRing.{0} Complex (NormedField.toNormedCommRing.{0} Complex Complex.instNormedFieldComplex)))))) Complex.exp
-Case conversion may be inaccurate. Consider using '#align complex.continuous_exp Complex.continuous_expβ‚“'. -/
 @[continuity]
 theorem continuous_exp : Continuous exp :=
   continuous_iff_continuousAt.mpr fun x =>
@@ -95,12 +77,6 @@ theorem continuous_exp : Continuous exp :=
       (locally_lipschitz_exp zero_le_one le_rfl x)
 #align complex.continuous_exp Complex.continuous_exp
 
-/- warning: complex.continuous_on_exp -> Complex.continuousOn_exp is a dubious translation:
-lean 3 declaration is
-  forall {s : Set.{0} Complex}, ContinuousOn.{0, 0} Complex Complex (UniformSpace.toTopologicalSpace.{0} Complex (PseudoMetricSpace.toUniformSpace.{0} Complex (SeminormedRing.toPseudoMetricSpace.{0} Complex (SeminormedCommRing.toSemiNormedRing.{0} Complex (NormedCommRing.toSeminormedCommRing.{0} Complex (NormedField.toNormedCommRing.{0} Complex Complex.normedField)))))) (UniformSpace.toTopologicalSpace.{0} Complex (PseudoMetricSpace.toUniformSpace.{0} Complex (SeminormedRing.toPseudoMetricSpace.{0} Complex (SeminormedCommRing.toSemiNormedRing.{0} Complex (NormedCommRing.toSeminormedCommRing.{0} Complex (NormedField.toNormedCommRing.{0} Complex Complex.normedField)))))) Complex.exp s
-but is expected to have type
-  forall {s : Set.{0} Complex}, ContinuousOn.{0, 0} Complex Complex (UniformSpace.toTopologicalSpace.{0} Complex (PseudoMetricSpace.toUniformSpace.{0} Complex (SeminormedRing.toPseudoMetricSpace.{0} Complex (SeminormedCommRing.toSeminormedRing.{0} Complex (NormedCommRing.toSeminormedCommRing.{0} Complex (NormedField.toNormedCommRing.{0} Complex Complex.instNormedFieldComplex)))))) (UniformSpace.toTopologicalSpace.{0} Complex (PseudoMetricSpace.toUniformSpace.{0} Complex (SeminormedRing.toPseudoMetricSpace.{0} Complex (SeminormedCommRing.toSeminormedRing.{0} Complex (NormedCommRing.toSeminormedCommRing.{0} Complex (NormedField.toNormedCommRing.{0} Complex Complex.instNormedFieldComplex)))))) Complex.exp s
-Case conversion may be inaccurate. Consider using '#align complex.continuous_on_exp Complex.continuousOn_expβ‚“'. -/
 theorem continuousOn_exp {s : Set β„‚} : ContinuousOn exp s :=
   continuous_exp.ContinuousOn
 #align complex.continuous_on_exp Complex.continuousOn_exp
@@ -113,12 +89,6 @@ variable {Ξ± : Type _}
 
 open Complex
 
-/- warning: filter.tendsto.cexp -> Filter.Tendsto.cexp is a dubious translation:
-lean 3 declaration is
-  forall {Ξ± : Type.{u1}} {l : Filter.{u1} Ξ±} {f : Ξ± -> Complex} {z : Complex}, (Filter.Tendsto.{u1, 0} Ξ± Complex f l (nhds.{0} Complex (UniformSpace.toTopologicalSpace.{0} Complex (PseudoMetricSpace.toUniformSpace.{0} Complex (SeminormedRing.toPseudoMetricSpace.{0} Complex (SeminormedCommRing.toSemiNormedRing.{0} Complex (NormedCommRing.toSeminormedCommRing.{0} Complex (NormedField.toNormedCommRing.{0} Complex Complex.normedField)))))) z)) -> (Filter.Tendsto.{u1, 0} Ξ± Complex (fun (x : Ξ±) => Complex.exp (f x)) l (nhds.{0} Complex (UniformSpace.toTopologicalSpace.{0} Complex (PseudoMetricSpace.toUniformSpace.{0} Complex (SeminormedRing.toPseudoMetricSpace.{0} Complex (SeminormedCommRing.toSemiNormedRing.{0} Complex (NormedCommRing.toSeminormedCommRing.{0} Complex (NormedField.toNormedCommRing.{0} Complex Complex.normedField)))))) (Complex.exp z)))
-but is expected to have type
-  forall {Ξ± : Type.{u1}} {l : Filter.{u1} Ξ±} {f : Ξ± -> Complex} {z : Complex}, (Filter.Tendsto.{u1, 0} Ξ± Complex f l (nhds.{0} Complex (UniformSpace.toTopologicalSpace.{0} Complex (PseudoMetricSpace.toUniformSpace.{0} Complex (SeminormedRing.toPseudoMetricSpace.{0} Complex (SeminormedCommRing.toSeminormedRing.{0} Complex (NormedCommRing.toSeminormedCommRing.{0} Complex (NormedField.toNormedCommRing.{0} Complex Complex.instNormedFieldComplex)))))) z)) -> (Filter.Tendsto.{u1, 0} Ξ± Complex (fun (x : Ξ±) => Complex.exp (f x)) l (nhds.{0} Complex (UniformSpace.toTopologicalSpace.{0} Complex (PseudoMetricSpace.toUniformSpace.{0} Complex (SeminormedRing.toPseudoMetricSpace.{0} Complex (SeminormedCommRing.toSeminormedRing.{0} Complex (NormedCommRing.toSeminormedCommRing.{0} Complex (NormedField.toNormedCommRing.{0} Complex Complex.instNormedFieldComplex)))))) (Complex.exp z)))
-Case conversion may be inaccurate. Consider using '#align filter.tendsto.cexp Filter.Tendsto.cexpβ‚“'. -/
 theorem Filter.Tendsto.cexp {l : Filter Ξ±} {f : Ξ± β†’ β„‚} {z : β„‚} (hf : Tendsto f l (𝓝 z)) :
     Tendsto (fun x => exp (f x)) l (𝓝 (exp z)) :=
   (continuous_exp.Tendsto _).comp hf
@@ -126,43 +96,19 @@ theorem Filter.Tendsto.cexp {l : Filter Ξ±} {f : Ξ± β†’ β„‚} {z : β„‚} (hf : Ten
 
 variable [TopologicalSpace Ξ±] {f : Ξ± β†’ β„‚} {s : Set Ξ±} {x : Ξ±}
 
-/- warning: continuous_within_at.cexp -> ContinuousWithinAt.cexp is a dubious translation:
-lean 3 declaration is
-  forall {Ξ± : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} Ξ±] {f : Ξ± -> Complex} {s : Set.{u1} Ξ±} {x : Ξ±}, (ContinuousWithinAt.{u1, 0} Ξ± Complex _inst_1 (UniformSpace.toTopologicalSpace.{0} Complex (PseudoMetricSpace.toUniformSpace.{0} Complex (SeminormedRing.toPseudoMetricSpace.{0} Complex (SeminormedCommRing.toSemiNormedRing.{0} Complex (NormedCommRing.toSeminormedCommRing.{0} Complex (NormedField.toNormedCommRing.{0} Complex Complex.normedField)))))) f s x) -> (ContinuousWithinAt.{u1, 0} Ξ± Complex _inst_1 (UniformSpace.toTopologicalSpace.{0} Complex (PseudoMetricSpace.toUniformSpace.{0} Complex (SeminormedRing.toPseudoMetricSpace.{0} Complex (SeminormedCommRing.toSemiNormedRing.{0} Complex (NormedCommRing.toSeminormedCommRing.{0} Complex (NormedField.toNormedCommRing.{0} Complex Complex.normedField)))))) (fun (y : Ξ±) => Complex.exp (f y)) s x)
-but is expected to have type
-  forall {Ξ± : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} Ξ±] {f : Ξ± -> Complex} {s : Set.{u1} Ξ±} {x : Ξ±}, (ContinuousWithinAt.{u1, 0} Ξ± Complex _inst_1 (UniformSpace.toTopologicalSpace.{0} Complex (PseudoMetricSpace.toUniformSpace.{0} Complex (SeminormedRing.toPseudoMetricSpace.{0} Complex (SeminormedCommRing.toSeminormedRing.{0} Complex (NormedCommRing.toSeminormedCommRing.{0} Complex (NormedField.toNormedCommRing.{0} Complex Complex.instNormedFieldComplex)))))) f s x) -> (ContinuousWithinAt.{u1, 0} Ξ± Complex _inst_1 (UniformSpace.toTopologicalSpace.{0} Complex (PseudoMetricSpace.toUniformSpace.{0} Complex (SeminormedRing.toPseudoMetricSpace.{0} Complex (SeminormedCommRing.toSeminormedRing.{0} Complex (NormedCommRing.toSeminormedCommRing.{0} Complex (NormedField.toNormedCommRing.{0} Complex Complex.instNormedFieldComplex)))))) (fun (y : Ξ±) => Complex.exp (f y)) s x)
-Case conversion may be inaccurate. Consider using '#align continuous_within_at.cexp ContinuousWithinAt.cexpβ‚“'. -/
 theorem ContinuousWithinAt.cexp (h : ContinuousWithinAt f s x) :
     ContinuousWithinAt (fun y => exp (f y)) s x :=
   h.cexp
 #align continuous_within_at.cexp ContinuousWithinAt.cexp
 
-/- warning: continuous_at.cexp -> ContinuousAt.cexp is a dubious translation:
-lean 3 declaration is
-  forall {Ξ± : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} Ξ±] {f : Ξ± -> Complex} {x : Ξ±}, (ContinuousAt.{u1, 0} Ξ± Complex _inst_1 (UniformSpace.toTopologicalSpace.{0} Complex (PseudoMetricSpace.toUniformSpace.{0} Complex (SeminormedRing.toPseudoMetricSpace.{0} Complex (SeminormedCommRing.toSemiNormedRing.{0} Complex (NormedCommRing.toSeminormedCommRing.{0} Complex (NormedField.toNormedCommRing.{0} Complex Complex.normedField)))))) f x) -> (ContinuousAt.{u1, 0} Ξ± Complex _inst_1 (UniformSpace.toTopologicalSpace.{0} Complex (PseudoMetricSpace.toUniformSpace.{0} Complex (SeminormedRing.toPseudoMetricSpace.{0} Complex (SeminormedCommRing.toSemiNormedRing.{0} Complex (NormedCommRing.toSeminormedCommRing.{0} Complex (NormedField.toNormedCommRing.{0} Complex Complex.normedField)))))) (fun (y : Ξ±) => Complex.exp (f y)) x)
-but is expected to have type
-  forall {Ξ± : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} Ξ±] {f : Ξ± -> Complex} {x : Ξ±}, (ContinuousAt.{u1, 0} Ξ± Complex _inst_1 (UniformSpace.toTopologicalSpace.{0} Complex (PseudoMetricSpace.toUniformSpace.{0} Complex (SeminormedRing.toPseudoMetricSpace.{0} Complex (SeminormedCommRing.toSeminormedRing.{0} Complex (NormedCommRing.toSeminormedCommRing.{0} Complex (NormedField.toNormedCommRing.{0} Complex Complex.instNormedFieldComplex)))))) f x) -> (ContinuousAt.{u1, 0} Ξ± Complex _inst_1 (UniformSpace.toTopologicalSpace.{0} Complex (PseudoMetricSpace.toUniformSpace.{0} Complex (SeminormedRing.toPseudoMetricSpace.{0} Complex (SeminormedCommRing.toSeminormedRing.{0} Complex (NormedCommRing.toSeminormedCommRing.{0} Complex (NormedField.toNormedCommRing.{0} Complex Complex.instNormedFieldComplex)))))) (fun (y : Ξ±) => Complex.exp (f y)) x)
-Case conversion may be inaccurate. Consider using '#align continuous_at.cexp ContinuousAt.cexpβ‚“'. -/
 theorem ContinuousAt.cexp (h : ContinuousAt f x) : ContinuousAt (fun y => exp (f y)) x :=
   h.cexp
 #align continuous_at.cexp ContinuousAt.cexp
 
-/- warning: continuous_on.cexp -> ContinuousOn.cexp is a dubious translation:
-lean 3 declaration is
-  forall {Ξ± : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} Ξ±] {f : Ξ± -> Complex} {s : Set.{u1} Ξ±}, (ContinuousOn.{u1, 0} Ξ± Complex _inst_1 (UniformSpace.toTopologicalSpace.{0} Complex (PseudoMetricSpace.toUniformSpace.{0} Complex (SeminormedRing.toPseudoMetricSpace.{0} Complex (SeminormedCommRing.toSemiNormedRing.{0} Complex (NormedCommRing.toSeminormedCommRing.{0} Complex (NormedField.toNormedCommRing.{0} Complex Complex.normedField)))))) f s) -> (ContinuousOn.{u1, 0} Ξ± Complex _inst_1 (UniformSpace.toTopologicalSpace.{0} Complex (PseudoMetricSpace.toUniformSpace.{0} Complex (SeminormedRing.toPseudoMetricSpace.{0} Complex (SeminormedCommRing.toSemiNormedRing.{0} Complex (NormedCommRing.toSeminormedCommRing.{0} Complex (NormedField.toNormedCommRing.{0} Complex Complex.normedField)))))) (fun (y : Ξ±) => Complex.exp (f y)) s)
-but is expected to have type
-  forall {Ξ± : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} Ξ±] {f : Ξ± -> Complex} {s : Set.{u1} Ξ±}, (ContinuousOn.{u1, 0} Ξ± Complex _inst_1 (UniformSpace.toTopologicalSpace.{0} Complex (PseudoMetricSpace.toUniformSpace.{0} Complex (SeminormedRing.toPseudoMetricSpace.{0} Complex (SeminormedCommRing.toSeminormedRing.{0} Complex (NormedCommRing.toSeminormedCommRing.{0} Complex (NormedField.toNormedCommRing.{0} Complex Complex.instNormedFieldComplex)))))) f s) -> (ContinuousOn.{u1, 0} Ξ± Complex _inst_1 (UniformSpace.toTopologicalSpace.{0} Complex (PseudoMetricSpace.toUniformSpace.{0} Complex (SeminormedRing.toPseudoMetricSpace.{0} Complex (SeminormedCommRing.toSeminormedRing.{0} Complex (NormedCommRing.toSeminormedCommRing.{0} Complex (NormedField.toNormedCommRing.{0} Complex Complex.instNormedFieldComplex)))))) (fun (y : Ξ±) => Complex.exp (f y)) s)
-Case conversion may be inaccurate. Consider using '#align continuous_on.cexp ContinuousOn.cexpβ‚“'. -/
 theorem ContinuousOn.cexp (h : ContinuousOn f s) : ContinuousOn (fun y => exp (f y)) s :=
   fun x hx => (h x hx).cexp
 #align continuous_on.cexp ContinuousOn.cexp
 
-/- warning: continuous.cexp -> Continuous.cexp is a dubious translation:
-lean 3 declaration is
-  forall {Ξ± : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} Ξ±] {f : Ξ± -> Complex}, (Continuous.{u1, 0} Ξ± Complex _inst_1 (UniformSpace.toTopologicalSpace.{0} Complex (PseudoMetricSpace.toUniformSpace.{0} Complex (SeminormedRing.toPseudoMetricSpace.{0} Complex (SeminormedCommRing.toSemiNormedRing.{0} Complex (NormedCommRing.toSeminormedCommRing.{0} Complex (NormedField.toNormedCommRing.{0} Complex Complex.normedField)))))) f) -> (Continuous.{u1, 0} Ξ± Complex _inst_1 (UniformSpace.toTopologicalSpace.{0} Complex (PseudoMetricSpace.toUniformSpace.{0} Complex (SeminormedRing.toPseudoMetricSpace.{0} Complex (SeminormedCommRing.toSemiNormedRing.{0} Complex (NormedCommRing.toSeminormedCommRing.{0} Complex (NormedField.toNormedCommRing.{0} Complex Complex.normedField)))))) (fun (y : Ξ±) => Complex.exp (f y)))
-but is expected to have type
-  forall {Ξ± : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} Ξ±] {f : Ξ± -> Complex}, (Continuous.{u1, 0} Ξ± Complex _inst_1 (UniformSpace.toTopologicalSpace.{0} Complex (PseudoMetricSpace.toUniformSpace.{0} Complex (SeminormedRing.toPseudoMetricSpace.{0} Complex (SeminormedCommRing.toSeminormedRing.{0} Complex (NormedCommRing.toSeminormedCommRing.{0} Complex (NormedField.toNormedCommRing.{0} Complex Complex.instNormedFieldComplex)))))) f) -> (Continuous.{u1, 0} Ξ± Complex _inst_1 (UniformSpace.toTopologicalSpace.{0} Complex (PseudoMetricSpace.toUniformSpace.{0} Complex (SeminormedRing.toPseudoMetricSpace.{0} Complex (SeminormedCommRing.toSeminormedRing.{0} Complex (NormedCommRing.toSeminormedCommRing.{0} Complex (NormedField.toNormedCommRing.{0} Complex Complex.instNormedFieldComplex)))))) (fun (y : Ξ±) => Complex.exp (f y)))
-Case conversion may be inaccurate. Consider using '#align continuous.cexp Continuous.cexpβ‚“'. -/
 theorem Continuous.cexp (h : Continuous f) : Continuous fun y => exp (f y) :=
   continuous_iff_continuousAt.2 fun x => h.ContinuousAt.cexp
 #align continuous.cexp Continuous.cexp
@@ -232,12 +178,6 @@ namespace Real
 
 variable {Ξ± : Type _} {x y z : ℝ} {l : Filter Ξ±}
 
-/- warning: real.exp_half -> Real.exp_half is a dubious translation:
-lean 3 declaration is
-  forall (x : Real), Eq.{1} Real (Real.exp (HDiv.hDiv.{0, 0, 0} Real Real Real (instHDiv.{0} Real (DivInvMonoid.toHasDiv.{0} Real (DivisionRing.toDivInvMonoid.{0} Real Real.divisionRing))) x (OfNat.ofNat.{0} Real 2 (OfNat.mk.{0} Real 2 (bit0.{0} Real Real.hasAdd (One.one.{0} Real Real.hasOne)))))) (Real.sqrt (Real.exp x))
-but is expected to have type
-  forall (x : Real), Eq.{1} Real (Real.exp (HDiv.hDiv.{0, 0, 0} Real Real Real (instHDiv.{0} Real (LinearOrderedField.toDiv.{0} Real Real.instLinearOrderedFieldReal)) x (OfNat.ofNat.{0} Real 2 (instOfNat.{0} Real 2 Real.natCast (instAtLeastTwoHAddNatInstHAddInstAddNatOfNat (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0))))))) (Real.sqrt (Real.exp x))
-Case conversion may be inaccurate. Consider using '#align real.exp_half Real.exp_halfβ‚“'. -/
 theorem exp_half (x : ℝ) : exp (x / 2) = sqrt (exp x) := by
   rw [eq_comm, sqrt_eq_iff_sq_eq, sq, ← exp_add, add_halves] <;> exact (exp_pos _).le
 #align real.exp_half Real.exp_half
@@ -253,80 +193,38 @@ theorem tendsto_exp_atTop : Tendsto exp atTop atTop :=
 #align real.tendsto_exp_at_top Real.tendsto_exp_atTop
 -/
 
-/- warning: real.tendsto_exp_neg_at_top_nhds_0 -> Real.tendsto_exp_neg_atTop_nhds_0 is a dubious translation:
-lean 3 declaration is
-  Filter.Tendsto.{0, 0} Real Real (fun (x : Real) => Real.exp (Neg.neg.{0} Real Real.hasNeg x)) (Filter.atTop.{0} Real Real.preorder) (nhds.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))
-but is expected to have type
-  Filter.Tendsto.{0, 0} Real Real (fun (x : Real) => Real.exp (Neg.neg.{0} Real Real.instNegReal x)) (Filter.atTop.{0} Real Real.instPreorderReal) (nhds.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))
-Case conversion may be inaccurate. Consider using '#align real.tendsto_exp_neg_at_top_nhds_0 Real.tendsto_exp_neg_atTop_nhds_0β‚“'. -/
 /-- The real exponential function tends to `0` at `-∞` or, equivalently, `exp(-x)` tends to `0`
 at `+∞` -/
 theorem tendsto_exp_neg_atTop_nhds_0 : Tendsto (fun x => exp (-x)) atTop (𝓝 0) :=
   (tendsto_inv_atTop_zero.comp tendsto_exp_atTop).congr fun x => (exp_neg x).symm
 #align real.tendsto_exp_neg_at_top_nhds_0 Real.tendsto_exp_neg_atTop_nhds_0
 
-/- warning: real.tendsto_exp_nhds_0_nhds_1 -> Real.tendsto_exp_nhds_0_nhds_1 is a dubious translation:
-lean 3 declaration is
-  Filter.Tendsto.{0, 0} Real Real Real.exp (nhds.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))) (nhds.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (OfNat.ofNat.{0} Real 1 (OfNat.mk.{0} Real 1 (One.one.{0} Real Real.hasOne))))
-but is expected to have type
-  Filter.Tendsto.{0, 0} Real Real Real.exp (nhds.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))) (nhds.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal)))
-Case conversion may be inaccurate. Consider using '#align real.tendsto_exp_nhds_0_nhds_1 Real.tendsto_exp_nhds_0_nhds_1β‚“'. -/
 /-- The real exponential function tends to `1` at `0`. -/
 theorem tendsto_exp_nhds_0_nhds_1 : Tendsto exp (𝓝 0) (𝓝 1) := by convert continuous_exp.tendsto 0;
   simp
 #align real.tendsto_exp_nhds_0_nhds_1 Real.tendsto_exp_nhds_0_nhds_1
 
-/- warning: real.tendsto_exp_at_bot -> Real.tendsto_exp_atBot is a dubious translation:
-lean 3 declaration is
-  Filter.Tendsto.{0, 0} Real Real Real.exp (Filter.atBot.{0} Real Real.preorder) (nhds.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))
-but is expected to have type
-  Filter.Tendsto.{0, 0} Real Real Real.exp (Filter.atBot.{0} Real Real.instPreorderReal) (nhds.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))
-Case conversion may be inaccurate. Consider using '#align real.tendsto_exp_at_bot Real.tendsto_exp_atBotβ‚“'. -/
 theorem tendsto_exp_atBot : Tendsto exp atBot (𝓝 0) :=
   (tendsto_exp_neg_atTop_nhds_0.comp tendsto_neg_atBot_atTop).congr fun x =>
     congr_arg exp <| neg_neg x
 #align real.tendsto_exp_at_bot Real.tendsto_exp_atBot
 
-/- warning: real.tendsto_exp_at_bot_nhds_within -> Real.tendsto_exp_atBot_nhdsWithin is a dubious translation:
-lean 3 declaration is
-  Filter.Tendsto.{0, 0} Real Real Real.exp (Filter.atBot.{0} Real Real.preorder) (nhdsWithin.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))))
-but is expected to have type
-  Filter.Tendsto.{0, 0} Real Real Real.exp (Filter.atBot.{0} Real Real.instPreorderReal) (nhdsWithin.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))))
-Case conversion may be inaccurate. Consider using '#align real.tendsto_exp_at_bot_nhds_within Real.tendsto_exp_atBot_nhdsWithinβ‚“'. -/
 theorem tendsto_exp_atBot_nhdsWithin : Tendsto exp atBot (𝓝[>] 0) :=
   tendsto_inf.2 ⟨tendsto_exp_atBot, tendsto_principal.2 <| eventually_of_forall exp_pos⟩
 #align real.tendsto_exp_at_bot_nhds_within Real.tendsto_exp_atBot_nhdsWithin
 
-/- warning: real.is_bounded_under_ge_exp_comp -> Real.isBoundedUnder_ge_exp_comp is a dubious translation:
-lean 3 declaration is
-  forall {Ξ± : Type.{u1}} (l : Filter.{u1} Ξ±) (f : Ξ± -> Real), Filter.IsBoundedUnder.{0, u1} Real Ξ± (GE.ge.{0} Real Real.hasLe) l (fun (x : Ξ±) => Real.exp (f x))
-but is expected to have type
-  forall {Ξ± : Type.{u1}} (l : Filter.{u1} Ξ±) (f : Ξ± -> Real), Filter.IsBoundedUnder.{0, u1} Real Ξ± (fun (x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.1807 : Real) (x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.1809 : Real) => GE.ge.{0} Real Real.instLEReal x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.1807 x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.1809) l (fun (x : Ξ±) => Real.exp (f x))
-Case conversion may be inaccurate. Consider using '#align real.is_bounded_under_ge_exp_comp Real.isBoundedUnder_ge_exp_compβ‚“'. -/
 @[simp]
 theorem isBoundedUnder_ge_exp_comp (l : Filter Ξ±) (f : Ξ± β†’ ℝ) :
     IsBoundedUnder (Β· β‰₯ Β·) l fun x => exp (f x) :=
   isBoundedUnder_of ⟨0, fun x => (exp_pos _).le⟩
 #align real.is_bounded_under_ge_exp_comp Real.isBoundedUnder_ge_exp_comp
 
-/- warning: real.is_bounded_under_le_exp_comp -> Real.isBoundedUnder_le_exp_comp is a dubious translation:
-lean 3 declaration is
-  forall {Ξ± : Type.{u1}} {l : Filter.{u1} Ξ±} {f : Ξ± -> Real}, Iff (Filter.IsBoundedUnder.{0, u1} Real Ξ± (LE.le.{0} Real Real.hasLe) l (fun (x : Ξ±) => Real.exp (f x))) (Filter.IsBoundedUnder.{0, u1} Real Ξ± (LE.le.{0} Real Real.hasLe) l f)
-but is expected to have type
-  forall {Ξ± : Type.{u1}} {l : Filter.{u1} Ξ±} {f : Ξ± -> Real}, Iff (Filter.IsBoundedUnder.{0, u1} Real Ξ± (fun (x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.1869 : Real) (x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.1871 : Real) => LE.le.{0} Real Real.instLEReal x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.1869 x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.1871) l (fun (x : Ξ±) => Real.exp (f x))) (Filter.IsBoundedUnder.{0, u1} Real Ξ± (fun (x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.1894 : Real) (x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.1896 : Real) => LE.le.{0} Real Real.instLEReal x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.1894 x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.1896) l f)
-Case conversion may be inaccurate. Consider using '#align real.is_bounded_under_le_exp_comp Real.isBoundedUnder_le_exp_compβ‚“'. -/
 @[simp]
 theorem isBoundedUnder_le_exp_comp {f : Ξ± β†’ ℝ} :
     (IsBoundedUnder (Β· ≀ Β·) l fun x => exp (f x)) ↔ IsBoundedUnder (Β· ≀ Β·) l f :=
   exp_monotone.isBoundedUnder_le_comp tendsto_exp_atTop
 #align real.is_bounded_under_le_exp_comp Real.isBoundedUnder_le_exp_comp
 
-/- warning: real.tendsto_exp_div_pow_at_top -> Real.tendsto_exp_div_pow_atTop is a dubious translation:
-lean 3 declaration is
-  forall (n : Nat), Filter.Tendsto.{0, 0} Real Real (fun (x : Real) => HDiv.hDiv.{0, 0, 0} Real Real Real (instHDiv.{0} Real (DivInvMonoid.toHasDiv.{0} Real (DivisionRing.toDivInvMonoid.{0} Real Real.divisionRing))) (Real.exp x) (HPow.hPow.{0, 0, 0} Real Nat Real (instHPow.{0, 0} Real Nat (Monoid.Pow.{0} Real Real.monoid)) x n)) (Filter.atTop.{0} Real Real.preorder) (Filter.atTop.{0} Real Real.preorder)
-but is expected to have type
-  forall (n : Nat), Filter.Tendsto.{0, 0} Real Real (fun (x : Real) => HDiv.hDiv.{0, 0, 0} Real Real Real (instHDiv.{0} Real (LinearOrderedField.toDiv.{0} Real Real.instLinearOrderedFieldReal)) (Real.exp x) (HPow.hPow.{0, 0, 0} Real Nat Real (instHPow.{0, 0} Real Nat (Monoid.Pow.{0} Real Real.instMonoidReal)) x n)) (Filter.atTop.{0} Real Real.instPreorderReal) (Filter.atTop.{0} Real Real.instPreorderReal)
-Case conversion may be inaccurate. Consider using '#align real.tendsto_exp_div_pow_at_top Real.tendsto_exp_div_pow_atTopβ‚“'. -/
 /-- The function `exp(x)/x^n` tends to `+∞` at `+∞`, for any natural number `n` -/
 theorem tendsto_exp_div_pow_atTop (n : β„•) : Tendsto (fun x => exp x / x ^ n) atTop atTop :=
   by
@@ -351,12 +249,6 @@ theorem tendsto_exp_div_pow_atTop (n : β„•) : Tendsto (fun x => exp x / x ^ n) a
     
 #align real.tendsto_exp_div_pow_at_top Real.tendsto_exp_div_pow_atTop
 
-/- warning: real.tendsto_pow_mul_exp_neg_at_top_nhds_0 -> Real.tendsto_pow_mul_exp_neg_atTop_nhds_0 is a dubious translation:
-lean 3 declaration is
-  forall (n : Nat), Filter.Tendsto.{0, 0} Real Real (fun (x : Real) => HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) (HPow.hPow.{0, 0, 0} Real Nat Real (instHPow.{0, 0} Real Nat (Monoid.Pow.{0} Real Real.monoid)) x n) (Real.exp (Neg.neg.{0} Real Real.hasNeg x))) (Filter.atTop.{0} Real Real.preorder) (nhds.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))
-but is expected to have type
-  forall (n : Nat), Filter.Tendsto.{0, 0} Real Real (fun (x : Real) => HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) (HPow.hPow.{0, 0, 0} Real Nat Real (instHPow.{0, 0} Real Nat (Monoid.Pow.{0} Real Real.instMonoidReal)) x n) (Real.exp (Neg.neg.{0} Real Real.instNegReal x))) (Filter.atTop.{0} Real Real.instPreorderReal) (nhds.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))
-Case conversion may be inaccurate. Consider using '#align real.tendsto_pow_mul_exp_neg_at_top_nhds_0 Real.tendsto_pow_mul_exp_neg_atTop_nhds_0β‚“'. -/
 /-- The function `x^n * exp(-x)` tends to `0` at `+∞`, for any natural number `n`. -/
 theorem tendsto_pow_mul_exp_neg_atTop_nhds_0 (n : β„•) :
     Tendsto (fun x => x ^ n * exp (-x)) atTop (𝓝 0) :=
@@ -364,12 +256,6 @@ theorem tendsto_pow_mul_exp_neg_atTop_nhds_0 (n : β„•) :
     rw [comp_app, inv_eq_one_div, div_div_eq_mul_div, one_mul, div_eq_mul_inv, exp_neg]
 #align real.tendsto_pow_mul_exp_neg_at_top_nhds_0 Real.tendsto_pow_mul_exp_neg_atTop_nhds_0
 
-/- warning: real.tendsto_mul_exp_add_div_pow_at_top -> Real.tendsto_mul_exp_add_div_pow_atTop is a dubious translation:
-lean 3 declaration is
-  forall (b : Real) (c : Real) (n : Nat), (LT.lt.{0} Real Real.hasLt (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) b) -> (Filter.Tendsto.{0, 0} Real Real (fun (x : Real) => HDiv.hDiv.{0, 0, 0} Real Real Real (instHDiv.{0} Real (DivInvMonoid.toHasDiv.{0} Real (DivisionRing.toDivInvMonoid.{0} Real Real.divisionRing))) (HAdd.hAdd.{0, 0, 0} Real Real Real (instHAdd.{0} Real Real.hasAdd) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) b (Real.exp x)) c) (HPow.hPow.{0, 0, 0} Real Nat Real (instHPow.{0, 0} Real Nat (Monoid.Pow.{0} Real Real.monoid)) x n)) (Filter.atTop.{0} Real Real.preorder) (Filter.atTop.{0} Real Real.preorder))
-but is expected to have type
-  forall (b : Real) (c : Real) (n : Nat), (LT.lt.{0} Real Real.instLTReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) b) -> (Filter.Tendsto.{0, 0} Real Real (fun (x : Real) => HDiv.hDiv.{0, 0, 0} Real Real Real (instHDiv.{0} Real (LinearOrderedField.toDiv.{0} Real Real.instLinearOrderedFieldReal)) (HAdd.hAdd.{0, 0, 0} Real Real Real (instHAdd.{0} Real Real.instAddReal) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) b (Real.exp x)) c) (HPow.hPow.{0, 0, 0} Real Nat Real (instHPow.{0, 0} Real Nat (Monoid.Pow.{0} Real Real.instMonoidReal)) x n)) (Filter.atTop.{0} Real Real.instPreorderReal) (Filter.atTop.{0} Real Real.instPreorderReal))
-Case conversion may be inaccurate. Consider using '#align real.tendsto_mul_exp_add_div_pow_at_top Real.tendsto_mul_exp_add_div_pow_atTopβ‚“'. -/
 /-- The function `(b * exp x + c) / (x ^ n)` tends to `+∞` at `+∞`, for any natural number
 `n` and any real numbers `b` and `c` such that `b` is positive. -/
 theorem tendsto_mul_exp_add_div_pow_atTop (b c : ℝ) (n : β„•) (hb : 0 < b) :
@@ -384,12 +270,6 @@ theorem tendsto_mul_exp_add_div_pow_atTop (b c : ℝ) (n : β„•) (hb : 0 < b) :
       (tendsto_const_nhds.div_at_top (tendsto_pow_at_top hn))
 #align real.tendsto_mul_exp_add_div_pow_at_top Real.tendsto_mul_exp_add_div_pow_atTop
 
-/- warning: real.tendsto_div_pow_mul_exp_add_at_top -> Real.tendsto_div_pow_mul_exp_add_atTop is a dubious translation:
-lean 3 declaration is
-  forall (b : Real) (c : Real) (n : Nat), (Ne.{1} Real (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) b) -> (Filter.Tendsto.{0, 0} Real Real (fun (x : Real) => HDiv.hDiv.{0, 0, 0} Real Real Real (instHDiv.{0} Real (DivInvMonoid.toHasDiv.{0} Real (DivisionRing.toDivInvMonoid.{0} Real Real.divisionRing))) (HPow.hPow.{0, 0, 0} Real Nat Real (instHPow.{0, 0} Real Nat (Monoid.Pow.{0} Real Real.monoid)) x n) (HAdd.hAdd.{0, 0, 0} Real Real Real (instHAdd.{0} Real Real.hasAdd) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) b (Real.exp x)) c)) (Filter.atTop.{0} Real Real.preorder) (nhds.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))))
-but is expected to have type
-  forall (b : Real) (c : Real) (n : Nat), (Ne.{1} Real (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) b) -> (Filter.Tendsto.{0, 0} Real Real (fun (x : Real) => HDiv.hDiv.{0, 0, 0} Real Real Real (instHDiv.{0} Real (LinearOrderedField.toDiv.{0} Real Real.instLinearOrderedFieldReal)) (HPow.hPow.{0, 0, 0} Real Nat Real (instHPow.{0, 0} Real Nat (Monoid.Pow.{0} Real Real.instMonoidReal)) x n) (HAdd.hAdd.{0, 0, 0} Real Real Real (instHAdd.{0} Real Real.instAddReal) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) b (Real.exp x)) c)) (Filter.atTop.{0} Real Real.instPreorderReal) (nhds.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))))
-Case conversion may be inaccurate. Consider using '#align real.tendsto_div_pow_mul_exp_add_at_top Real.tendsto_div_pow_mul_exp_add_atTopβ‚“'. -/
 /-- The function `(x ^ n) / (b * exp x + c)` tends to `0` at `+∞`, for any natural number
 `n` and any real numbers `b` and `c` such that `b` is nonzero. -/
 theorem tendsto_div_pow_mul_exp_add_atTop (b c : ℝ) (n : β„•) (hb : 0 β‰  b) :
@@ -410,12 +290,6 @@ theorem tendsto_div_pow_mul_exp_add_atTop (b c : ℝ) (n : β„•) (hb : 0 β‰  b) :
     Β· exact neg_zero.symm
 #align real.tendsto_div_pow_mul_exp_add_at_top Real.tendsto_div_pow_mul_exp_add_atTop
 
-/- warning: real.exp_order_iso -> Real.expOrderIso is a dubious translation:
-lean 3 declaration is
-  OrderIso.{0, 0} Real (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) Real.hasLe (Subtype.hasLe.{0} Real Real.hasLe (fun (x : Real) => Membership.Mem.{0, 0} Real (Set.{0} Real) (Set.hasMem.{0} Real) x (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))))
-but is expected to have type
-  OrderIso.{0, 0} Real (Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) Real.instLEReal (Subtype.le.{0} Real Real.instLEReal (fun (x : Real) => Membership.mem.{0, 0} Real (Set.{0} Real) (Set.instMembershipSet.{0} Real) x (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))))
-Case conversion may be inaccurate. Consider using '#align real.exp_order_iso Real.expOrderIsoβ‚“'. -/
 /-- `real.exp` as an order isomorphism between `ℝ` and `(0, +∞)`. -/
 def expOrderIso : ℝ ≃o Ioi (0 : ℝ) :=
   StrictMono.orderIsoOfSurjective _ (exp_strictMono.codRestrict exp_pos) <|
@@ -424,34 +298,16 @@ def expOrderIso : ℝ ≃o Ioi (0 : ℝ) :=
       (by simp [tendsto_exp_at_bot_nhds_within])
 #align real.exp_order_iso Real.expOrderIso
 
-/- warning: real.coe_exp_order_iso_apply -> Real.coe_expOrderIso_apply is a dubious translation:
-lean 3 declaration is
-  forall (x : Real), Eq.{1} Real ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) Real (HasLiftT.mk.{1, 1} (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) Real (CoeTCβ‚“.coe.{1, 1} (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) Real (coeBase.{1, 1} (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) Real (coeSubtype.{1} Real (fun (x : Real) => Membership.Mem.{0, 0} Real (Set.{0} Real) (Set.hasMem.{0} Real) x (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))))))) (coeFn.{1, 1} (OrderIso.{0, 0} Real (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) Real.hasLe (Subtype.hasLe.{0} Real Real.hasLe (fun (x : Real) => Membership.Mem.{0, 0} Real (Set.{0} Real) (Set.hasMem.{0} Real) x (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))))) (fun (_x : RelIso.{0, 0} Real (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) (LE.le.{0} Real Real.hasLe) (LE.le.{0} (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) (Subtype.hasLe.{0} Real Real.hasLe (fun (x : Real) => Membership.Mem.{0, 0} Real (Set.{0} Real) (Set.hasMem.{0} Real) x (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))))))) => Real -> (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))))) (RelIso.hasCoeToFun.{0, 0} Real (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) (LE.le.{0} Real Real.hasLe) (LE.le.{0} (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) (Subtype.hasLe.{0} Real Real.hasLe (fun (x : Real) => Membership.Mem.{0, 0} Real (Set.{0} Real) (Set.hasMem.{0} Real) x (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))))))) Real.expOrderIso x)) (Real.exp x)
-but is expected to have type
-  forall (x : Real), Eq.{1} Real (Subtype.val.{1} Real (fun (x : Real) => Membership.mem.{0, 0} Real (Set.{0} Real) (Set.instMembershipSet.{0} Real) x (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (FunLike.coe.{1, 1, 1} (RelIso.{0, 0} Real (Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1285 : Real) (x._@.Mathlib.Order.Hom.Basic._hyg.1287 : Real) => LE.le.{0} Real Real.instLEReal x._@.Mathlib.Order.Hom.Basic._hyg.1285 x._@.Mathlib.Order.Hom.Basic._hyg.1287) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1300 : Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (x._@.Mathlib.Order.Hom.Basic._hyg.1302 : Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) => LE.le.{0} (Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (Subtype.le.{0} Real Real.instLEReal (fun (x : Real) => Membership.mem.{0, 0} Real (Set.{0} Real) (Set.instMembershipSet.{0} Real) x (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))))) x._@.Mathlib.Order.Hom.Basic._hyg.1300 x._@.Mathlib.Order.Hom.Basic._hyg.1302)) Real (fun (_x : Real) => Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (RelHomClass.toFunLike.{0, 0, 0} (RelIso.{0, 0} Real (Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1285 : Real) (x._@.Mathlib.Order.Hom.Basic._hyg.1287 : Real) => LE.le.{0} Real Real.instLEReal x._@.Mathlib.Order.Hom.Basic._hyg.1285 x._@.Mathlib.Order.Hom.Basic._hyg.1287) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1300 : Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (x._@.Mathlib.Order.Hom.Basic._hyg.1302 : Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) => LE.le.{0} (Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (Subtype.le.{0} Real Real.instLEReal (fun (x : Real) => Membership.mem.{0, 0} Real (Set.{0} Real) (Set.instMembershipSet.{0} Real) x (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))))) x._@.Mathlib.Order.Hom.Basic._hyg.1300 x._@.Mathlib.Order.Hom.Basic._hyg.1302)) Real (Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1285 : Real) (x._@.Mathlib.Order.Hom.Basic._hyg.1287 : Real) => LE.le.{0} Real Real.instLEReal x._@.Mathlib.Order.Hom.Basic._hyg.1285 x._@.Mathlib.Order.Hom.Basic._hyg.1287) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1300 : Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (x._@.Mathlib.Order.Hom.Basic._hyg.1302 : Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) => LE.le.{0} (Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (Subtype.le.{0} Real Real.instLEReal (fun (x : Real) => Membership.mem.{0, 0} Real (Set.{0} Real) (Set.instMembershipSet.{0} Real) x (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))))) x._@.Mathlib.Order.Hom.Basic._hyg.1300 x._@.Mathlib.Order.Hom.Basic._hyg.1302) (RelIso.instRelHomClassRelIso.{0, 0} Real (Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1285 : Real) (x._@.Mathlib.Order.Hom.Basic._hyg.1287 : Real) => LE.le.{0} Real Real.instLEReal x._@.Mathlib.Order.Hom.Basic._hyg.1285 x._@.Mathlib.Order.Hom.Basic._hyg.1287) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1300 : Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (x._@.Mathlib.Order.Hom.Basic._hyg.1302 : Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) => LE.le.{0} (Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (Subtype.le.{0} Real Real.instLEReal (fun (x : Real) => Membership.mem.{0, 0} Real (Set.{0} Real) (Set.instMembershipSet.{0} Real) x (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))))) x._@.Mathlib.Order.Hom.Basic._hyg.1300 x._@.Mathlib.Order.Hom.Basic._hyg.1302))) Real.expOrderIso x)) (Real.exp x)
-Case conversion may be inaccurate. Consider using '#align real.coe_exp_order_iso_apply Real.coe_expOrderIso_applyβ‚“'. -/
 @[simp]
 theorem coe_expOrderIso_apply (x : ℝ) : (expOrderIso x : ℝ) = exp x :=
   rfl
 #align real.coe_exp_order_iso_apply Real.coe_expOrderIso_apply
 
-/- warning: real.coe_comp_exp_order_iso -> Real.coe_comp_expOrderIso is a dubious translation:
-lean 3 declaration is
-  Eq.{1} (Real -> Real) (Function.comp.{1, 1, 1} Real (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) Real ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) Real (HasLiftT.mk.{1, 1} (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) Real (CoeTCβ‚“.coe.{1, 1} (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) Real (coeBase.{1, 1} (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) Real (coeSubtype.{1} Real (fun (x : Real) => Membership.Mem.{0, 0} Real (Set.{0} Real) (Set.hasMem.{0} Real) x (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))))))))) (coeFn.{1, 1} (OrderIso.{0, 0} Real (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) Real.hasLe (Subtype.hasLe.{0} Real Real.hasLe (fun (x : Real) => Membership.Mem.{0, 0} Real (Set.{0} Real) (Set.hasMem.{0} Real) x (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))))) (fun (_x : RelIso.{0, 0} Real (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) (LE.le.{0} Real Real.hasLe) (LE.le.{0} (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) (Subtype.hasLe.{0} Real Real.hasLe (fun (x : Real) => Membership.Mem.{0, 0} Real (Set.{0} Real) (Set.hasMem.{0} Real) x (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))))))) => Real -> (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))))) (RelIso.hasCoeToFun.{0, 0} Real (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) (LE.le.{0} Real Real.hasLe) (LE.le.{0} (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) (Subtype.hasLe.{0} Real Real.hasLe (fun (x : Real) => Membership.Mem.{0, 0} Real (Set.{0} Real) (Set.hasMem.{0} Real) x (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))))))) Real.expOrderIso)) Real.exp
-but is expected to have type
-  Eq.{1} (Real -> Real) (Function.comp.{1, 1, 1} Real (Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) Real (Subtype.val.{1} Real (fun (x : Real) => Membership.mem.{0, 0} Real (Set.{0} Real) (Set.instMembershipSet.{0} Real) x (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))))) (FunLike.coe.{1, 1, 1} (RelIso.{0, 0} Real (Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1285 : Real) (x._@.Mathlib.Order.Hom.Basic._hyg.1287 : Real) => LE.le.{0} Real Real.instLEReal x._@.Mathlib.Order.Hom.Basic._hyg.1285 x._@.Mathlib.Order.Hom.Basic._hyg.1287) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1300 : Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (x._@.Mathlib.Order.Hom.Basic._hyg.1302 : Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) => LE.le.{0} (Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (Subtype.le.{0} Real Real.instLEReal (fun (x : Real) => Membership.mem.{0, 0} Real (Set.{0} Real) (Set.instMembershipSet.{0} Real) x (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))))) x._@.Mathlib.Order.Hom.Basic._hyg.1300 x._@.Mathlib.Order.Hom.Basic._hyg.1302)) Real (fun (_x : Real) => Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (RelHomClass.toFunLike.{0, 0, 0} (RelIso.{0, 0} Real (Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1285 : Real) (x._@.Mathlib.Order.Hom.Basic._hyg.1287 : Real) => LE.le.{0} Real Real.instLEReal x._@.Mathlib.Order.Hom.Basic._hyg.1285 x._@.Mathlib.Order.Hom.Basic._hyg.1287) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1300 : Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (x._@.Mathlib.Order.Hom.Basic._hyg.1302 : Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) => LE.le.{0} (Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (Subtype.le.{0} Real Real.instLEReal (fun (x : Real) => Membership.mem.{0, 0} Real (Set.{0} Real) (Set.instMembershipSet.{0} Real) x (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))))) x._@.Mathlib.Order.Hom.Basic._hyg.1300 x._@.Mathlib.Order.Hom.Basic._hyg.1302)) Real (Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1285 : Real) (x._@.Mathlib.Order.Hom.Basic._hyg.1287 : Real) => LE.le.{0} Real Real.instLEReal x._@.Mathlib.Order.Hom.Basic._hyg.1285 x._@.Mathlib.Order.Hom.Basic._hyg.1287) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1300 : Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (x._@.Mathlib.Order.Hom.Basic._hyg.1302 : Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) => LE.le.{0} (Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (Subtype.le.{0} Real Real.instLEReal (fun (x : Real) => Membership.mem.{0, 0} Real (Set.{0} Real) (Set.instMembershipSet.{0} Real) x (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))))) x._@.Mathlib.Order.Hom.Basic._hyg.1300 x._@.Mathlib.Order.Hom.Basic._hyg.1302) (RelIso.instRelHomClassRelIso.{0, 0} Real (Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1285 : Real) (x._@.Mathlib.Order.Hom.Basic._hyg.1287 : Real) => LE.le.{0} Real Real.instLEReal x._@.Mathlib.Order.Hom.Basic._hyg.1285 x._@.Mathlib.Order.Hom.Basic._hyg.1287) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1300 : Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (x._@.Mathlib.Order.Hom.Basic._hyg.1302 : Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) => LE.le.{0} (Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (Subtype.le.{0} Real Real.instLEReal (fun (x : Real) => Membership.mem.{0, 0} Real (Set.{0} Real) (Set.instMembershipSet.{0} Real) x (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))))) x._@.Mathlib.Order.Hom.Basic._hyg.1300 x._@.Mathlib.Order.Hom.Basic._hyg.1302))) Real.expOrderIso)) Real.exp
-Case conversion may be inaccurate. Consider using '#align real.coe_comp_exp_order_iso Real.coe_comp_expOrderIsoβ‚“'. -/
 @[simp]
 theorem coe_comp_expOrderIso : coe ∘ expOrderIso = exp :=
   rfl
 #align real.coe_comp_exp_order_iso Real.coe_comp_expOrderIso
 
-/- warning: real.range_exp -> Real.range_exp is a dubious translation:
-lean 3 declaration is
-  Eq.{1} (Set.{0} Real) (Set.range.{0, 1} Real Real Real.exp) (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))
-but is expected to have type
-  Eq.{1} (Set.{0} Real) (Set.range.{0, 1} Real Real Real.exp) (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))
-Case conversion may be inaccurate. Consider using '#align real.range_exp Real.range_expβ‚“'. -/
 @[simp]
 theorem range_exp : range exp = Ioi 0 := by
   rw [← coe_comp_exp_order_iso, range_comp, exp_order_iso.range_eq, image_univ, Subtype.range_coe]
@@ -486,79 +342,37 @@ theorem tendsto_comp_exp_atTop {f : ℝ β†’ Ξ±} :
 #align real.tendsto_comp_exp_at_top Real.tendsto_comp_exp_atTop
 -/
 
-/- warning: real.map_exp_at_bot -> Real.map_exp_atBot is a dubious translation:
-lean 3 declaration is
-  Eq.{1} (Filter.{0} Real) (Filter.map.{0, 0} Real Real Real.exp (Filter.atBot.{0} Real Real.preorder)) (nhdsWithin.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))))
-but is expected to have type
-  Eq.{1} (Filter.{0} Real) (Filter.map.{0, 0} Real Real Real.exp (Filter.atBot.{0} Real Real.instPreorderReal)) (nhdsWithin.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))))
-Case conversion may be inaccurate. Consider using '#align real.map_exp_at_bot Real.map_exp_atBotβ‚“'. -/
 @[simp]
 theorem map_exp_atBot : map exp atBot = 𝓝[>] 0 := by
   rw [← coe_comp_exp_order_iso, ← Filter.map_map, exp_order_iso.map_at_bot, ← map_coe_Ioi_atBot]
 #align real.map_exp_at_bot Real.map_exp_atBot
 
-/- warning: real.comap_exp_nhds_within_Ioi_zero -> Real.comap_exp_nhdsWithin_Ioi_zero is a dubious translation:
-lean 3 declaration is
-  Eq.{1} (Filter.{0} Real) (Filter.comap.{0, 0} Real Real Real.exp (nhdsWithin.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))))) (Filter.atBot.{0} Real Real.preorder)
-but is expected to have type
-  Eq.{1} (Filter.{0} Real) (Filter.comap.{0, 0} Real Real Real.exp (nhdsWithin.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))))) (Filter.atBot.{0} Real Real.instPreorderReal)
-Case conversion may be inaccurate. Consider using '#align real.comap_exp_nhds_within_Ioi_zero Real.comap_exp_nhdsWithin_Ioi_zeroβ‚“'. -/
 @[simp]
 theorem comap_exp_nhdsWithin_Ioi_zero : comap exp (𝓝[>] 0) = atBot := by
   rw [← map_exp_at_bot, comap_map exp_injective]
 #align real.comap_exp_nhds_within_Ioi_zero Real.comap_exp_nhdsWithin_Ioi_zero
 
-/- warning: real.tendsto_comp_exp_at_bot -> Real.tendsto_comp_exp_atBot is a dubious translation:
-lean 3 declaration is
-  forall {Ξ± : Type.{u1}} {l : Filter.{u1} Ξ±} {f : Real -> Ξ±}, Iff (Filter.Tendsto.{0, u1} Real Ξ± (fun (x : Real) => f (Real.exp x)) (Filter.atBot.{0} Real Real.preorder) l) (Filter.Tendsto.{0, u1} Real Ξ± f (nhdsWithin.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) l)
-but is expected to have type
-  forall {Ξ± : Type.{u1}} {l : Filter.{u1} Ξ±} {f : Real -> Ξ±}, Iff (Filter.Tendsto.{0, u1} Real Ξ± (fun (x : Real) => f (Real.exp x)) (Filter.atBot.{0} Real Real.instPreorderReal) l) (Filter.Tendsto.{0, u1} Real Ξ± f (nhdsWithin.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) l)
-Case conversion may be inaccurate. Consider using '#align real.tendsto_comp_exp_at_bot Real.tendsto_comp_exp_atBotβ‚“'. -/
 theorem tendsto_comp_exp_atBot {f : ℝ β†’ Ξ±} :
     Tendsto (fun x => f (exp x)) atBot l ↔ Tendsto f (𝓝[>] 0) l := by
   rw [← map_exp_at_bot, tendsto_map'_iff]
 #align real.tendsto_comp_exp_at_bot Real.tendsto_comp_exp_atBot
 
-/- warning: real.comap_exp_nhds_zero -> Real.comap_exp_nhds_zero is a dubious translation:
-lean 3 declaration is
-  Eq.{1} (Filter.{0} Real) (Filter.comap.{0, 0} Real Real Real.exp (nhds.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) (Filter.atBot.{0} Real Real.preorder)
-but is expected to have type
-  Eq.{1} (Filter.{0} Real) (Filter.comap.{0, 0} Real Real Real.exp (nhds.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (Filter.atBot.{0} Real Real.instPreorderReal)
-Case conversion may be inaccurate. Consider using '#align real.comap_exp_nhds_zero Real.comap_exp_nhds_zeroβ‚“'. -/
 @[simp]
 theorem comap_exp_nhds_zero : comap exp (𝓝 0) = atBot :=
   (comap_nhdsWithin_range exp 0).symm.trans <| by simp
 #align real.comap_exp_nhds_zero Real.comap_exp_nhds_zero
 
-/- warning: real.tendsto_exp_comp_nhds_zero -> Real.tendsto_exp_comp_nhds_zero is a dubious translation:
-lean 3 declaration is
-  forall {Ξ± : Type.{u1}} {l : Filter.{u1} Ξ±} {f : Ξ± -> Real}, Iff (Filter.Tendsto.{u1, 0} Ξ± Real (fun (x : Ξ±) => Real.exp (f x)) l (nhds.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) (Filter.Tendsto.{u1, 0} Ξ± Real f l (Filter.atBot.{0} Real Real.preorder))
-but is expected to have type
-  forall {Ξ± : Type.{u1}} {l : Filter.{u1} Ξ±} {f : Ξ± -> Real}, Iff (Filter.Tendsto.{u1, 0} Ξ± Real (fun (x : Ξ±) => Real.exp (f x)) l (nhds.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (Filter.Tendsto.{u1, 0} Ξ± Real f l (Filter.atBot.{0} Real Real.instPreorderReal))
-Case conversion may be inaccurate. Consider using '#align real.tendsto_exp_comp_nhds_zero Real.tendsto_exp_comp_nhds_zeroβ‚“'. -/
 @[simp]
 theorem tendsto_exp_comp_nhds_zero {f : Ξ± β†’ ℝ} :
     Tendsto (fun x => exp (f x)) l (𝓝 0) ↔ Tendsto f l atBot := by
   rw [← tendsto_comap_iff, comap_exp_nhds_zero]
 #align real.tendsto_exp_comp_nhds_zero Real.tendsto_exp_comp_nhds_zero
 
-/- warning: real.is_o_pow_exp_at_top -> Real.isLittleO_pow_exp_atTop is a dubious translation:
-lean 3 declaration is
-  forall {n : Nat}, Asymptotics.IsLittleO.{0, 0, 0} Real Real Real Real.hasNorm Real.hasNorm (Filter.atTop.{0} Real Real.preorder) (fun (x : Real) => HPow.hPow.{0, 0, 0} Real Nat Real (instHPow.{0, 0} Real Nat (Monoid.Pow.{0} Real Real.monoid)) x n) Real.exp
-but is expected to have type
-  forall {n : Nat}, Asymptotics.IsLittleO.{0, 0, 0} Real Real Real Real.norm Real.norm (Filter.atTop.{0} Real Real.instPreorderReal) (fun (x : Real) => HPow.hPow.{0, 0, 0} Real Nat Real (instHPow.{0, 0} Real Nat (Monoid.Pow.{0} Real Real.instMonoidReal)) x n) Real.exp
-Case conversion may be inaccurate. Consider using '#align real.is_o_pow_exp_at_top Real.isLittleO_pow_exp_atTopβ‚“'. -/
 theorem isLittleO_pow_exp_atTop {n : β„•} : (fun x => x ^ n) =o[atTop] Real.exp := by
   simpa [is_o_iff_tendsto fun x hx => ((exp_pos x).ne' hx).elim] using
     tendsto_div_pow_mul_exp_add_at_top 1 0 n zero_ne_one
 #align real.is_o_pow_exp_at_top Real.isLittleO_pow_exp_atTop
 
-/- warning: real.is_O_exp_comp_exp_comp -> Real.isBigO_exp_comp_exp_comp is a dubious translation:
-lean 3 declaration is
-  forall {Ξ± : Type.{u1}} {l : Filter.{u1} Ξ±} {f : Ξ± -> Real} {g : Ξ± -> Real}, Iff (Asymptotics.IsBigO.{u1, 0, 0} Ξ± Real Real Real.hasNorm Real.hasNorm l (fun (x : Ξ±) => Real.exp (f x)) (fun (x : Ξ±) => Real.exp (g x))) (Filter.IsBoundedUnder.{0, u1} Real Ξ± (LE.le.{0} Real Real.hasLe) l (HSub.hSub.{u1, u1, u1} (Ξ± -> Real) (Ξ± -> Real) (Ξ± -> Real) (instHSub.{u1} (Ξ± -> Real) (Pi.instSub.{u1, 0} Ξ± (fun (αΎ° : Ξ±) => Real) (fun (i : Ξ±) => Real.hasSub))) f g))
-but is expected to have type
-  forall {Ξ± : Type.{u1}} {l : Filter.{u1} Ξ±} {f : Ξ± -> Real} {g : Ξ± -> Real}, Iff (Asymptotics.IsBigO.{u1, 0, 0} Ξ± Real Real Real.norm Real.norm l (fun (x : Ξ±) => Real.exp (f x)) (fun (x : Ξ±) => Real.exp (g x))) (Filter.IsBoundedUnder.{0, u1} Real Ξ± (fun (x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.3755 : Real) (x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.3757 : Real) => LE.le.{0} Real Real.instLEReal x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.3755 x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.3757) l (HSub.hSub.{u1, u1, u1} (Ξ± -> Real) (Ξ± -> Real) (Ξ± -> Real) (instHSub.{u1} (Ξ± -> Real) (Pi.instSub.{u1, 0} Ξ± (fun (αΎ° : Ξ±) => Real) (fun (i : Ξ±) => Real.instSubReal))) f g))
-Case conversion may be inaccurate. Consider using '#align real.is_O_exp_comp_exp_comp Real.isBigO_exp_comp_exp_compβ‚“'. -/
 @[simp]
 theorem isBigO_exp_comp_exp_comp {f g : Ξ± β†’ ℝ} :
     ((fun x => exp (f x)) =O[l] fun x => exp (g x)) ↔ IsBoundedUnder (Β· ≀ Β·) l (f - g) :=
@@ -566,12 +380,6 @@ theorem isBigO_exp_comp_exp_comp {f g : Ξ± β†’ ℝ} :
     simp only [norm_eq_abs, abs_exp, ← exp_sub, is_bounded_under_le_exp_comp, Pi.sub_def]
 #align real.is_O_exp_comp_exp_comp Real.isBigO_exp_comp_exp_comp
 
-/- warning: real.is_Theta_exp_comp_exp_comp -> Real.isTheta_exp_comp_exp_comp is a dubious translation:
-lean 3 declaration is
-  forall {Ξ± : Type.{u1}} {l : Filter.{u1} Ξ±} {f : Ξ± -> Real} {g : Ξ± -> Real}, Iff (Asymptotics.IsTheta.{u1, 0, 0} Ξ± Real Real Real.hasNorm Real.hasNorm l (fun (x : Ξ±) => Real.exp (f x)) (fun (x : Ξ±) => Real.exp (g x))) (Filter.IsBoundedUnder.{0, u1} Real Ξ± (LE.le.{0} Real Real.hasLe) l (fun (x : Ξ±) => Abs.abs.{0} Real (Neg.toHasAbs.{0} Real Real.hasNeg Real.hasSup) (HSub.hSub.{0, 0, 0} Real Real Real (instHSub.{0} Real Real.hasSub) (f x) (g x))))
-but is expected to have type
-  forall {Ξ± : Type.{u1}} {l : Filter.{u1} Ξ±} {f : Ξ± -> Real} {g : Ξ± -> Real}, Iff (Asymptotics.IsTheta.{u1, 0, 0} Ξ± Real Real Real.norm Real.norm l (fun (x : Ξ±) => Real.exp (f x)) (fun (x : Ξ±) => Real.exp (g x))) (Filter.IsBoundedUnder.{0, u1} Real Ξ± (fun (x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.3854 : Real) (x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.3856 : Real) => LE.le.{0} Real Real.instLEReal x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.3854 x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.3856) l (fun (x : Ξ±) => Abs.abs.{0} Real (Neg.toHasAbs.{0} Real Real.instNegReal Real.instSupReal) (HSub.hSub.{0, 0, 0} Real Real Real (instHSub.{0} Real Real.instSubReal) (f x) (g x))))
-Case conversion may be inaccurate. Consider using '#align real.is_Theta_exp_comp_exp_comp Real.isTheta_exp_comp_exp_compβ‚“'. -/
 @[simp]
 theorem isTheta_exp_comp_exp_comp {f g : Ξ± β†’ ℝ} :
     ((fun x => exp (f x)) =Θ[l] fun x => exp (g x)) ↔
@@ -581,12 +389,6 @@ theorem isTheta_exp_comp_exp_comp {f g : Ξ± β†’ ℝ} :
     is_O_exp_comp_exp_comp, Pi.sub_def]
 #align real.is_Theta_exp_comp_exp_comp Real.isTheta_exp_comp_exp_comp
 
-/- warning: real.is_o_exp_comp_exp_comp -> Real.isLittleO_exp_comp_exp_comp is a dubious translation:
-lean 3 declaration is
-  forall {Ξ± : Type.{u1}} {l : Filter.{u1} Ξ±} {f : Ξ± -> Real} {g : Ξ± -> Real}, Iff (Asymptotics.IsLittleO.{u1, 0, 0} Ξ± Real Real Real.hasNorm Real.hasNorm l (fun (x : Ξ±) => Real.exp (f x)) (fun (x : Ξ±) => Real.exp (g x))) (Filter.Tendsto.{u1, 0} Ξ± Real (fun (x : Ξ±) => HSub.hSub.{0, 0, 0} Real Real Real (instHSub.{0} Real Real.hasSub) (g x) (f x)) l (Filter.atTop.{0} Real Real.preorder))
-but is expected to have type
-  forall {Ξ± : Type.{u1}} {l : Filter.{u1} Ξ±} {f : Ξ± -> Real} {g : Ξ± -> Real}, Iff (Asymptotics.IsLittleO.{u1, 0, 0} Ξ± Real Real Real.norm Real.norm l (fun (x : Ξ±) => Real.exp (f x)) (fun (x : Ξ±) => Real.exp (g x))) (Filter.Tendsto.{u1, 0} Ξ± Real (fun (x : Ξ±) => HSub.hSub.{0, 0, 0} Real Real Real (instHSub.{0} Real Real.instSubReal) (g x) (f x)) l (Filter.atTop.{0} Real Real.instPreorderReal))
-Case conversion may be inaccurate. Consider using '#align real.is_o_exp_comp_exp_comp Real.isLittleO_exp_comp_exp_compβ‚“'. -/
 @[simp]
 theorem isLittleO_exp_comp_exp_comp {f g : Ξ± β†’ ℝ} :
     ((fun x => exp (f x)) =o[l] fun x => exp (g x)) ↔ Tendsto (fun x => g x - f x) l atTop := by
@@ -594,24 +396,12 @@ theorem isLittleO_exp_comp_exp_comp {f g : Ξ± β†’ ℝ} :
     imp_true_iff, tendsto_exp_comp_nhds_zero, neg_sub]
 #align real.is_o_exp_comp_exp_comp Real.isLittleO_exp_comp_exp_comp
 
-/- warning: real.is_o_one_exp_comp -> Real.isLittleO_one_exp_comp is a dubious translation:
-lean 3 declaration is
-  forall {Ξ± : Type.{u1}} {l : Filter.{u1} Ξ±} {f : Ξ± -> Real}, Iff (Asymptotics.IsLittleO.{u1, 0, 0} Ξ± Real Real Real.hasNorm Real.hasNorm l (fun (x : Ξ±) => OfNat.ofNat.{0} Real 1 (OfNat.mk.{0} Real 1 (One.one.{0} Real Real.hasOne))) (fun (x : Ξ±) => Real.exp (f x))) (Filter.Tendsto.{u1, 0} Ξ± Real f l (Filter.atTop.{0} Real Real.preorder))
-but is expected to have type
-  forall {Ξ± : Type.{u1}} {l : Filter.{u1} Ξ±} {f : Ξ± -> Real}, Iff (Asymptotics.IsLittleO.{u1, 0, 0} Ξ± Real Real Real.norm Real.norm l (fun (x : Ξ±) => OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal)) (fun (x : Ξ±) => Real.exp (f x))) (Filter.Tendsto.{u1, 0} Ξ± Real f l (Filter.atTop.{0} Real Real.instPreorderReal))
-Case conversion may be inaccurate. Consider using '#align real.is_o_one_exp_comp Real.isLittleO_one_exp_compβ‚“'. -/
 @[simp]
 theorem isLittleO_one_exp_comp {f : Ξ± β†’ ℝ} :
     ((fun x => 1 : Ξ± β†’ ℝ) =o[l] fun x => exp (f x)) ↔ Tendsto f l atTop := by
   simp only [← exp_zero, is_o_exp_comp_exp_comp, sub_zero]
 #align real.is_o_one_exp_comp Real.isLittleO_one_exp_comp
 
-/- warning: real.is_O_one_exp_comp -> Real.isBigO_one_exp_comp is a dubious translation:
-lean 3 declaration is
-  forall {Ξ± : Type.{u1}} {l : Filter.{u1} Ξ±} {f : Ξ± -> Real}, Iff (Asymptotics.IsBigO.{u1, 0, 0} Ξ± Real Real Real.hasNorm Real.hasNorm l (fun (x : Ξ±) => OfNat.ofNat.{0} Real 1 (OfNat.mk.{0} Real 1 (One.one.{0} Real Real.hasOne))) (fun (x : Ξ±) => Real.exp (f x))) (Filter.IsBoundedUnder.{0, u1} Real Ξ± (GE.ge.{0} Real Real.hasLe) l f)
-but is expected to have type
-  forall {Ξ± : Type.{u1}} {l : Filter.{u1} Ξ±} {f : Ξ± -> Real}, Iff (Asymptotics.IsBigO.{u1, 0, 0} Ξ± Real Real Real.norm Real.norm l (fun (x : Ξ±) => OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal)) (fun (x : Ξ±) => Real.exp (f x))) (Filter.IsBoundedUnder.{0, u1} Real Ξ± (fun (x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.4068 : Real) (x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.4070 : Real) => GE.ge.{0} Real Real.instLEReal x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.4068 x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.4070) l f)
-Case conversion may be inaccurate. Consider using '#align real.is_O_one_exp_comp Real.isBigO_one_exp_compβ‚“'. -/
 /-- `real.exp (f x)` is bounded away from zero along a filter if and only if this filter is bounded
 from below under `f`. -/
 @[simp]
@@ -620,12 +410,6 @@ theorem isBigO_one_exp_comp {f : Ξ± β†’ ℝ} :
   simp only [← exp_zero, is_O_exp_comp_exp_comp, Pi.sub_def, zero_sub, is_bounded_under_le_neg]
 #align real.is_O_one_exp_comp Real.isBigO_one_exp_comp
 
-/- warning: real.is_O_exp_comp_one -> Real.isBigO_exp_comp_one is a dubious translation:
-lean 3 declaration is
-  forall {Ξ± : Type.{u1}} {l : Filter.{u1} Ξ±} {f : Ξ± -> Real}, Iff (Asymptotics.IsBigO.{u1, 0, 0} Ξ± Real Real Real.hasNorm Real.hasNorm l (fun (x : Ξ±) => Real.exp (f x)) (fun (x : Ξ±) => OfNat.ofNat.{0} Real 1 (OfNat.mk.{0} Real 1 (One.one.{0} Real Real.hasOne)))) (Filter.IsBoundedUnder.{0, u1} Real Ξ± (LE.le.{0} Real Real.hasLe) l f)
-but is expected to have type
-  forall {Ξ± : Type.{u1}} {l : Filter.{u1} Ξ±} {f : Ξ± -> Real}, Iff (Asymptotics.IsBigO.{u1, 0, 0} Ξ± Real Real Real.norm Real.norm l (fun (x : Ξ±) => Real.exp (f x)) (fun (x : Ξ±) => OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal))) (Filter.IsBoundedUnder.{0, u1} Real Ξ± (fun (x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.4144 : Real) (x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.4146 : Real) => LE.le.{0} Real Real.instLEReal x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.4144 x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.4146) l f)
-Case conversion may be inaccurate. Consider using '#align real.is_O_exp_comp_one Real.isBigO_exp_comp_oneβ‚“'. -/
 /-- `real.exp (f x)` is bounded away from zero along a filter if and only if this filter is bounded
 from below under `f`. -/
 theorem isBigO_exp_comp_one {f : Ξ± β†’ ℝ} :
@@ -633,12 +417,6 @@ theorem isBigO_exp_comp_one {f : Ξ± β†’ ℝ} :
   simp only [is_O_one_iff, norm_eq_abs, abs_exp, is_bounded_under_le_exp_comp]
 #align real.is_O_exp_comp_one Real.isBigO_exp_comp_one
 
-/- warning: real.is_Theta_exp_comp_one -> Real.isTheta_exp_comp_one is a dubious translation:
-lean 3 declaration is
-  forall {Ξ± : Type.{u1}} {l : Filter.{u1} Ξ±} {f : Ξ± -> Real}, Iff (Asymptotics.IsTheta.{u1, 0, 0} Ξ± Real Real Real.hasNorm Real.hasNorm l (fun (x : Ξ±) => Real.exp (f x)) (fun (x : Ξ±) => OfNat.ofNat.{0} Real 1 (OfNat.mk.{0} Real 1 (One.one.{0} Real Real.hasOne)))) (Filter.IsBoundedUnder.{0, u1} Real Ξ± (LE.le.{0} Real Real.hasLe) l (fun (x : Ξ±) => Abs.abs.{0} Real (Neg.toHasAbs.{0} Real Real.hasNeg Real.hasSup) (f x)))
-but is expected to have type
-  forall {Ξ± : Type.{u1}} {l : Filter.{u1} Ξ±} {f : Ξ± -> Real}, Iff (Asymptotics.IsTheta.{u1, 0, 0} Ξ± Real Real Real.norm Real.norm l (fun (x : Ξ±) => Real.exp (f x)) (fun (x : Ξ±) => OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal))) (Filter.IsBoundedUnder.{0, u1} Real Ξ± (fun (x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.4220 : Real) (x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.4222 : Real) => LE.le.{0} Real Real.instLEReal x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.4220 x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.4222) l (fun (x : Ξ±) => Abs.abs.{0} Real (Neg.toHasAbs.{0} Real Real.instNegReal Real.instSupReal) (f x)))
-Case conversion may be inaccurate. Consider using '#align real.is_Theta_exp_comp_one Real.isTheta_exp_comp_oneβ‚“'. -/
 /-- `real.exp (f x)` is bounded away from zero and infinity along a filter `l` if and only if
 `|f x|` is bounded from above along this filter. -/
 @[simp]
@@ -651,12 +429,6 @@ end Real
 
 namespace Complex
 
-/- warning: complex.comap_exp_comap_abs_at_top -> Complex.comap_exp_comap_abs_atTop is a dubious translation:
-lean 3 declaration is
-  Eq.{1} (Filter.{0} Complex) (Filter.comap.{0, 0} Complex Complex Complex.exp (Filter.comap.{0, 0} Complex Real (coeFn.{1, 1} (AbsoluteValue.{0, 0} Complex Real (Ring.toSemiring.{0} Complex Complex.ring) Real.orderedSemiring) (fun (f : AbsoluteValue.{0, 0} Complex Real (Ring.toSemiring.{0} Complex Complex.ring) Real.orderedSemiring) => Complex -> Real) (AbsoluteValue.hasCoeToFun.{0, 0} Complex Real (Ring.toSemiring.{0} Complex Complex.ring) Real.orderedSemiring) Complex.abs) (Filter.atTop.{0} Real Real.preorder))) (Filter.comap.{0, 0} Complex Real Complex.re (Filter.atTop.{0} Real Real.preorder))
-but is expected to have type
-  Eq.{1} (Filter.{0} Complex) (Filter.comap.{0, 0} Complex Complex Complex.exp (Filter.comap.{0, 0} Complex Real (FunLike.coe.{1, 1, 1} (AbsoluteValue.{0, 0} Complex Real Complex.instSemiringComplex Real.orderedSemiring) Complex (fun (f : Complex) => (fun (x._@.Mathlib.Algebra.Order.Hom.Basic._hyg.99 : Complex) => Real) f) (SubadditiveHomClass.toFunLike.{0, 0, 0} (AbsoluteValue.{0, 0} Complex Real Complex.instSemiringComplex Real.orderedSemiring) Complex Real (Distrib.toAdd.{0} Complex (NonUnitalNonAssocSemiring.toDistrib.{0} Complex (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex Complex.instSemiringComplex)))) (Distrib.toAdd.{0} Real (NonUnitalNonAssocSemiring.toDistrib.{0} Real (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Real (Semiring.toNonAssocSemiring.{0} Real (OrderedSemiring.toSemiring.{0} Real Real.orderedSemiring))))) (Preorder.toLE.{0} Real (PartialOrder.toPreorder.{0} Real (OrderedSemiring.toPartialOrder.{0} Real Real.orderedSemiring))) (AbsoluteValue.subadditiveHomClass.{0, 0} Complex Real Complex.instSemiringComplex Real.orderedSemiring)) Complex.abs) (Filter.atTop.{0} Real Real.instPreorderReal))) (Filter.comap.{0, 0} Complex Real Complex.re (Filter.atTop.{0} Real Real.instPreorderReal))
-Case conversion may be inaccurate. Consider using '#align complex.comap_exp_comap_abs_at_top Complex.comap_exp_comap_abs_atTopβ‚“'. -/
 theorem comap_exp_comap_abs_atTop : comap exp (comap abs atTop) = comap re atTop :=
   calc
     comap exp (comap abs atTop) = comap re (comap Real.exp atTop) := by
@@ -665,12 +437,6 @@ theorem comap_exp_comap_abs_atTop : comap exp (comap abs atTop) = comap re atTop
     
 #align complex.comap_exp_comap_abs_at_top Complex.comap_exp_comap_abs_atTop
 
-/- warning: complex.comap_exp_nhds_zero -> Complex.comap_exp_nhds_zero is a dubious translation:
-lean 3 declaration is
-  Eq.{1} (Filter.{0} Complex) (Filter.comap.{0, 0} Complex Complex Complex.exp (nhds.{0} Complex (UniformSpace.toTopologicalSpace.{0} Complex (PseudoMetricSpace.toUniformSpace.{0} Complex (SeminormedRing.toPseudoMetricSpace.{0} Complex (SeminormedCommRing.toSemiNormedRing.{0} Complex (NormedCommRing.toSeminormedCommRing.{0} Complex (NormedField.toNormedCommRing.{0} Complex Complex.normedField)))))) (OfNat.ofNat.{0} Complex 0 (OfNat.mk.{0} Complex 0 (Zero.zero.{0} Complex Complex.hasZero))))) (Filter.comap.{0, 0} Complex Real Complex.re (Filter.atBot.{0} Real Real.preorder))
-but is expected to have type
-  Eq.{1} (Filter.{0} Complex) (Filter.comap.{0, 0} Complex Complex Complex.exp (nhds.{0} Complex (UniformSpace.toTopologicalSpace.{0} Complex (PseudoMetricSpace.toUniformSpace.{0} Complex (SeminormedRing.toPseudoMetricSpace.{0} Complex (SeminormedCommRing.toSeminormedRing.{0} Complex (NormedCommRing.toSeminormedCommRing.{0} Complex (NormedField.toNormedCommRing.{0} Complex Complex.instNormedFieldComplex)))))) (OfNat.ofNat.{0} Complex 0 (Zero.toOfNat0.{0} Complex Complex.instZeroComplex)))) (Filter.comap.{0, 0} Complex Real Complex.re (Filter.atBot.{0} Real Real.instPreorderReal))
-Case conversion may be inaccurate. Consider using '#align complex.comap_exp_nhds_zero Complex.comap_exp_nhds_zeroβ‚“'. -/
 theorem comap_exp_nhds_zero : comap exp (𝓝 0) = comap re atBot :=
   calc
     comap exp (𝓝 0) = comap re (comap Real.exp (𝓝 0)) := by
@@ -679,57 +445,27 @@ theorem comap_exp_nhds_zero : comap exp (𝓝 0) = comap re atBot :=
     
 #align complex.comap_exp_nhds_zero Complex.comap_exp_nhds_zero
 
-/- warning: complex.comap_exp_nhds_within_zero -> Complex.comap_exp_nhdsWithin_zero is a dubious translation:
-lean 3 declaration is
-  Eq.{1} (Filter.{0} Complex) (Filter.comap.{0, 0} Complex Complex Complex.exp (nhdsWithin.{0} Complex (UniformSpace.toTopologicalSpace.{0} Complex (PseudoMetricSpace.toUniformSpace.{0} Complex (SeminormedRing.toPseudoMetricSpace.{0} Complex (SeminormedCommRing.toSemiNormedRing.{0} Complex (NormedCommRing.toSeminormedCommRing.{0} Complex (NormedField.toNormedCommRing.{0} Complex Complex.normedField)))))) (OfNat.ofNat.{0} Complex 0 (OfNat.mk.{0} Complex 0 (Zero.zero.{0} Complex Complex.hasZero))) (HasCompl.compl.{0} (Set.{0} Complex) (BooleanAlgebra.toHasCompl.{0} (Set.{0} Complex) (Set.booleanAlgebra.{0} Complex)) (Singleton.singleton.{0, 0} Complex (Set.{0} Complex) (Set.hasSingleton.{0} Complex) (OfNat.ofNat.{0} Complex 0 (OfNat.mk.{0} Complex 0 (Zero.zero.{0} Complex Complex.hasZero))))))) (Filter.comap.{0, 0} Complex Real Complex.re (Filter.atBot.{0} Real Real.preorder))
-but is expected to have type
-  Eq.{1} (Filter.{0} Complex) (Filter.comap.{0, 0} Complex Complex Complex.exp (nhdsWithin.{0} Complex (UniformSpace.toTopologicalSpace.{0} Complex (PseudoMetricSpace.toUniformSpace.{0} Complex (SeminormedRing.toPseudoMetricSpace.{0} Complex (SeminormedCommRing.toSeminormedRing.{0} Complex (NormedCommRing.toSeminormedCommRing.{0} Complex (NormedField.toNormedCommRing.{0} Complex Complex.instNormedFieldComplex)))))) (OfNat.ofNat.{0} Complex 0 (Zero.toOfNat0.{0} Complex Complex.instZeroComplex)) (HasCompl.compl.{0} (Set.{0} Complex) (BooleanAlgebra.toHasCompl.{0} (Set.{0} Complex) (Set.instBooleanAlgebraSet.{0} Complex)) (Singleton.singleton.{0, 0} Complex (Set.{0} Complex) (Set.instSingletonSet.{0} Complex) (OfNat.ofNat.{0} Complex 0 (Zero.toOfNat0.{0} Complex Complex.instZeroComplex)))))) (Filter.comap.{0, 0} Complex Real Complex.re (Filter.atBot.{0} Real Real.instPreorderReal))
-Case conversion may be inaccurate. Consider using '#align complex.comap_exp_nhds_within_zero Complex.comap_exp_nhdsWithin_zeroβ‚“'. -/
 theorem comap_exp_nhdsWithin_zero : comap exp (𝓝[β‰ ] 0) = comap re atBot :=
   by
   have : exp ⁻¹' {0}ᢜ = univ := eq_univ_of_forall exp_ne_zero
   simp [nhdsWithin, comap_exp_nhds_zero, this]
 #align complex.comap_exp_nhds_within_zero Complex.comap_exp_nhdsWithin_zero
 
-/- warning: complex.tendsto_exp_nhds_zero_iff -> Complex.tendsto_exp_nhds_zero_iff is a dubious translation:
-lean 3 declaration is
-  forall {Ξ± : Type.{u1}} {l : Filter.{u1} Ξ±} {f : Ξ± -> Complex}, Iff (Filter.Tendsto.{u1, 0} Ξ± Complex (fun (x : Ξ±) => Complex.exp (f x)) l (nhds.{0} Complex (UniformSpace.toTopologicalSpace.{0} Complex (PseudoMetricSpace.toUniformSpace.{0} Complex (SeminormedRing.toPseudoMetricSpace.{0} Complex (SeminormedCommRing.toSemiNormedRing.{0} Complex (NormedCommRing.toSeminormedCommRing.{0} Complex (NormedField.toNormedCommRing.{0} Complex Complex.normedField)))))) (OfNat.ofNat.{0} Complex 0 (OfNat.mk.{0} Complex 0 (Zero.zero.{0} Complex Complex.hasZero))))) (Filter.Tendsto.{u1, 0} Ξ± Real (fun (x : Ξ±) => Complex.re (f x)) l (Filter.atBot.{0} Real Real.preorder))
-but is expected to have type
-  forall {Ξ± : Type.{u1}} {l : Filter.{u1} Ξ±} {f : Ξ± -> Complex}, Iff (Filter.Tendsto.{u1, 0} Ξ± Complex (fun (x : Ξ±) => Complex.exp (f x)) l (nhds.{0} Complex (UniformSpace.toTopologicalSpace.{0} Complex (PseudoMetricSpace.toUniformSpace.{0} Complex (SeminormedRing.toPseudoMetricSpace.{0} Complex (SeminormedCommRing.toSeminormedRing.{0} Complex (NormedCommRing.toSeminormedCommRing.{0} Complex (NormedField.toNormedCommRing.{0} Complex Complex.instNormedFieldComplex)))))) (OfNat.ofNat.{0} Complex 0 (Zero.toOfNat0.{0} Complex Complex.instZeroComplex)))) (Filter.Tendsto.{u1, 0} Ξ± Real (fun (x : Ξ±) => Complex.re (f x)) l (Filter.atBot.{0} Real Real.instPreorderReal))
-Case conversion may be inaccurate. Consider using '#align complex.tendsto_exp_nhds_zero_iff Complex.tendsto_exp_nhds_zero_iffβ‚“'. -/
 theorem tendsto_exp_nhds_zero_iff {Ξ± : Type _} {l : Filter Ξ±} {f : Ξ± β†’ β„‚} :
     Tendsto (fun x => exp (f x)) l (𝓝 0) ↔ Tendsto (fun x => re (f x)) l atBot := by
   rw [← tendsto_comap_iff, comap_exp_nhds_zero, tendsto_comap_iff]
 #align complex.tendsto_exp_nhds_zero_iff Complex.tendsto_exp_nhds_zero_iff
 
-/- warning: complex.tendsto_exp_comap_re_at_top -> Complex.tendsto_exp_comap_re_atTop is a dubious translation:
-lean 3 declaration is
-  Filter.Tendsto.{0, 0} Complex Complex Complex.exp (Filter.comap.{0, 0} Complex Real Complex.re (Filter.atTop.{0} Real Real.preorder)) (Filter.comap.{0, 0} Complex Real (coeFn.{1, 1} (AbsoluteValue.{0, 0} Complex Real (Ring.toSemiring.{0} Complex Complex.ring) Real.orderedSemiring) (fun (f : AbsoluteValue.{0, 0} Complex Real (Ring.toSemiring.{0} Complex Complex.ring) Real.orderedSemiring) => Complex -> Real) (AbsoluteValue.hasCoeToFun.{0, 0} Complex Real (Ring.toSemiring.{0} Complex Complex.ring) Real.orderedSemiring) Complex.abs) (Filter.atTop.{0} Real Real.preorder))
-but is expected to have type
-  Filter.Tendsto.{0, 0} Complex Complex Complex.exp (Filter.comap.{0, 0} Complex Real Complex.re (Filter.atTop.{0} Real Real.instPreorderReal)) (Filter.comap.{0, 0} Complex Real (FunLike.coe.{1, 1, 1} (AbsoluteValue.{0, 0} Complex Real Complex.instSemiringComplex Real.orderedSemiring) Complex (fun (f : Complex) => (fun (x._@.Mathlib.Algebra.Order.Hom.Basic._hyg.99 : Complex) => Real) f) (SubadditiveHomClass.toFunLike.{0, 0, 0} (AbsoluteValue.{0, 0} Complex Real Complex.instSemiringComplex Real.orderedSemiring) Complex Real (Distrib.toAdd.{0} Complex (NonUnitalNonAssocSemiring.toDistrib.{0} Complex (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex Complex.instSemiringComplex)))) (Distrib.toAdd.{0} Real (NonUnitalNonAssocSemiring.toDistrib.{0} Real (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Real (Semiring.toNonAssocSemiring.{0} Real (OrderedSemiring.toSemiring.{0} Real Real.orderedSemiring))))) (Preorder.toLE.{0} Real (PartialOrder.toPreorder.{0} Real (OrderedSemiring.toPartialOrder.{0} Real Real.orderedSemiring))) (AbsoluteValue.subadditiveHomClass.{0, 0} Complex Real Complex.instSemiringComplex Real.orderedSemiring)) Complex.abs) (Filter.atTop.{0} Real Real.instPreorderReal))
-Case conversion may be inaccurate. Consider using '#align complex.tendsto_exp_comap_re_at_top Complex.tendsto_exp_comap_re_atTopβ‚“'. -/
 /-- `complex.abs (complex.exp z) β†’ ∞` as `complex.re z β†’ ∞`. TODO: use `bornology.cobounded`. -/
 theorem tendsto_exp_comap_re_atTop : Tendsto exp (comap re atTop) (comap abs atTop) :=
   comap_exp_comap_abs_atTop β–Έ tendsto_comap
 #align complex.tendsto_exp_comap_re_at_top Complex.tendsto_exp_comap_re_atTop
 
-/- warning: complex.tendsto_exp_comap_re_at_bot -> Complex.tendsto_exp_comap_re_atBot is a dubious translation:
-lean 3 declaration is
-  Filter.Tendsto.{0, 0} Complex Complex Complex.exp (Filter.comap.{0, 0} Complex Real Complex.re (Filter.atBot.{0} Real Real.preorder)) (nhds.{0} Complex (UniformSpace.toTopologicalSpace.{0} Complex (PseudoMetricSpace.toUniformSpace.{0} Complex (SeminormedRing.toPseudoMetricSpace.{0} Complex (SeminormedCommRing.toSemiNormedRing.{0} Complex (NormedCommRing.toSeminormedCommRing.{0} Complex (NormedField.toNormedCommRing.{0} Complex Complex.normedField)))))) (OfNat.ofNat.{0} Complex 0 (OfNat.mk.{0} Complex 0 (Zero.zero.{0} Complex Complex.hasZero))))
-but is expected to have type
-  Filter.Tendsto.{0, 0} Complex Complex Complex.exp (Filter.comap.{0, 0} Complex Real Complex.re (Filter.atBot.{0} Real Real.instPreorderReal)) (nhds.{0} Complex (UniformSpace.toTopologicalSpace.{0} Complex (PseudoMetricSpace.toUniformSpace.{0} Complex (SeminormedRing.toPseudoMetricSpace.{0} Complex (SeminormedCommRing.toSeminormedRing.{0} Complex (NormedCommRing.toSeminormedCommRing.{0} Complex (NormedField.toNormedCommRing.{0} Complex Complex.instNormedFieldComplex)))))) (OfNat.ofNat.{0} Complex 0 (Zero.toOfNat0.{0} Complex Complex.instZeroComplex)))
-Case conversion may be inaccurate. Consider using '#align complex.tendsto_exp_comap_re_at_bot Complex.tendsto_exp_comap_re_atBotβ‚“'. -/
 /-- `complex.exp z β†’ 0` as `complex.re z β†’ -∞`.-/
 theorem tendsto_exp_comap_re_atBot : Tendsto exp (comap re atBot) (𝓝 0) :=
   comap_exp_nhds_zero β–Έ tendsto_comap
 #align complex.tendsto_exp_comap_re_at_bot Complex.tendsto_exp_comap_re_atBot
 
-/- warning: complex.tendsto_exp_comap_re_at_bot_nhds_within -> Complex.tendsto_exp_comap_re_atBot_nhdsWithin is a dubious translation:
-lean 3 declaration is
-  Filter.Tendsto.{0, 0} Complex Complex Complex.exp (Filter.comap.{0, 0} Complex Real Complex.re (Filter.atBot.{0} Real Real.preorder)) (nhdsWithin.{0} Complex (UniformSpace.toTopologicalSpace.{0} Complex (PseudoMetricSpace.toUniformSpace.{0} Complex (SeminormedRing.toPseudoMetricSpace.{0} Complex (SeminormedCommRing.toSemiNormedRing.{0} Complex (NormedCommRing.toSeminormedCommRing.{0} Complex (NormedField.toNormedCommRing.{0} Complex Complex.normedField)))))) (OfNat.ofNat.{0} Complex 0 (OfNat.mk.{0} Complex 0 (Zero.zero.{0} Complex Complex.hasZero))) (HasCompl.compl.{0} (Set.{0} Complex) (BooleanAlgebra.toHasCompl.{0} (Set.{0} Complex) (Set.booleanAlgebra.{0} Complex)) (Singleton.singleton.{0, 0} Complex (Set.{0} Complex) (Set.hasSingleton.{0} Complex) (OfNat.ofNat.{0} Complex 0 (OfNat.mk.{0} Complex 0 (Zero.zero.{0} Complex Complex.hasZero))))))
-but is expected to have type
-  Filter.Tendsto.{0, 0} Complex Complex Complex.exp (Filter.comap.{0, 0} Complex Real Complex.re (Filter.atBot.{0} Real Real.instPreorderReal)) (nhdsWithin.{0} Complex (UniformSpace.toTopologicalSpace.{0} Complex (PseudoMetricSpace.toUniformSpace.{0} Complex (SeminormedRing.toPseudoMetricSpace.{0} Complex (SeminormedCommRing.toSeminormedRing.{0} Complex (NormedCommRing.toSeminormedCommRing.{0} Complex (NormedField.toNormedCommRing.{0} Complex Complex.instNormedFieldComplex)))))) (OfNat.ofNat.{0} Complex 0 (Zero.toOfNat0.{0} Complex Complex.instZeroComplex)) (HasCompl.compl.{0} (Set.{0} Complex) (BooleanAlgebra.toHasCompl.{0} (Set.{0} Complex) (Set.instBooleanAlgebraSet.{0} Complex)) (Singleton.singleton.{0, 0} Complex (Set.{0} Complex) (Set.instSingletonSet.{0} Complex) (OfNat.ofNat.{0} Complex 0 (Zero.toOfNat0.{0} Complex Complex.instZeroComplex)))))
-Case conversion may be inaccurate. Consider using '#align complex.tendsto_exp_comap_re_at_bot_nhds_within Complex.tendsto_exp_comap_re_atBot_nhdsWithinβ‚“'. -/
 theorem tendsto_exp_comap_re_atBot_nhdsWithin : Tendsto exp (comap re atBot) (𝓝[β‰ ] 0) :=
   comap_exp_nhdsWithin_zero β–Έ tendsto_comap
 #align complex.tendsto_exp_comap_re_at_bot_nhds_within Complex.tendsto_exp_comap_re_atBot_nhdsWithin
Diff
@@ -46,11 +46,7 @@ Case conversion may be inaccurate. Consider using '#align complex.exp_bound_sq C
 theorem exp_bound_sq (x z : β„‚) (hz : β€–zβ€– ≀ 1) :
     β€–exp (x + z) - exp x - z β€’ exp xβ€– ≀ β€–exp xβ€– * β€–zβ€– ^ 2 :=
   calc
-    β€–exp (x + z) - exp x - z * exp xβ€– = β€–exp x * (exp z - 1 - z)β€– :=
-      by
-      congr
-      rw [exp_add]
-      ring
+    β€–exp (x + z) - exp x - z * exp xβ€– = β€–exp x * (exp z - 1 - z)β€– := by congr ; rw [exp_add]; ring
     _ = β€–exp xβ€– * β€–exp z - 1 - zβ€– := (norm_mul _ _)
     _ ≀ β€–exp xβ€– * β€–zβ€– ^ 2 :=
       mul_le_mul_of_nonneg_left (abs_exp_sub_one_sub_id_le hz) (norm_nonneg _)
@@ -276,9 +272,7 @@ but is expected to have type
   Filter.Tendsto.{0, 0} Real Real Real.exp (nhds.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))) (nhds.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal)))
 Case conversion may be inaccurate. Consider using '#align real.tendsto_exp_nhds_0_nhds_1 Real.tendsto_exp_nhds_0_nhds_1β‚“'. -/
 /-- The real exponential function tends to `1` at `0`. -/
-theorem tendsto_exp_nhds_0_nhds_1 : Tendsto exp (𝓝 0) (𝓝 1) :=
-  by
-  convert continuous_exp.tendsto 0
+theorem tendsto_exp_nhds_0_nhds_1 : Tendsto exp (𝓝 0) (𝓝 1) := by convert continuous_exp.tendsto 0;
   simp
 #align real.tendsto_exp_nhds_0_nhds_1 Real.tendsto_exp_nhds_0_nhds_1
 
@@ -344,8 +338,7 @@ theorem tendsto_exp_div_pow_atTop (n : β„•) : Tendsto (fun x => exp x / x ^ n) a
       ((tendsto_pow_const_div_const_pow_of_one_lt n (one_lt_exp_iff.2 zero_lt_one)).Eventually
         (gt_mem_nhds this))
   simp only [← exp_nat_mul, mul_one, div_lt_iff, exp_pos, ← div_eq_inv_mul] at hN
-  refine' ⟨N, trivial, fun x hx => _⟩
-  rw [Set.mem_Ioi] at hx
+  refine' ⟨N, trivial, fun x hx => _⟩; rw [Set.mem_Ioi] at hx
   have hxβ‚€ : 0 < x := N.cast_nonneg.trans_lt hx
   rw [Set.mem_Ici, le_div_iff (pow_pos hxβ‚€ _), ← le_div_iff' hCβ‚€]
   calc
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
 
 ! This file was ported from Lean 3 source module analysis.special_functions.exp
-! leanprover-community/mathlib commit 2ed2c6310e6f1c5562bdf6bfbda55ebbf6891abe
+! leanprover-community/mathlib commit ba5ff5ad5d120fb0ef094ad2994967e9bfaf5112
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -75,7 +75,7 @@ theorem locally_lipschitz_exp {r : ℝ} (hr_nonneg : 0 ≀ r) (hr_le : r ≀ 1)
     by
     intro z hz
     have : β€–exp (x + z) - exp x - z β€’ exp xβ€– ≀ β€–exp xβ€– * β€–zβ€– ^ 2 := exp_bound_sq x z hz
-    rw [← sub_le_iff_le_add', ← norm_smul z]
+    rw [← sub_le_iff_le_add', ← norm_smul z (_ : β„‚)]
     exact (norm_sub_norm_le _ _).trans this
   calc
     β€–exp y - exp xβ€– = β€–exp (x + (y - x)) - exp xβ€– := by nth_rw 1 [hy_eq]
Diff
@@ -435,7 +435,7 @@ def expOrderIso : ℝ ≃o Ioi (0 : ℝ) :=
 lean 3 declaration is
   forall (x : Real), Eq.{1} Real ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) Real (HasLiftT.mk.{1, 1} (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) Real (CoeTCβ‚“.coe.{1, 1} (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) Real (coeBase.{1, 1} (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) Real (coeSubtype.{1} Real (fun (x : Real) => Membership.Mem.{0, 0} Real (Set.{0} Real) (Set.hasMem.{0} Real) x (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))))))) (coeFn.{1, 1} (OrderIso.{0, 0} Real (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) Real.hasLe (Subtype.hasLe.{0} Real Real.hasLe (fun (x : Real) => Membership.Mem.{0, 0} Real (Set.{0} Real) (Set.hasMem.{0} Real) x (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))))) (fun (_x : RelIso.{0, 0} Real (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) (LE.le.{0} Real Real.hasLe) (LE.le.{0} (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) (Subtype.hasLe.{0} Real Real.hasLe (fun (x : Real) => Membership.Mem.{0, 0} Real (Set.{0} Real) (Set.hasMem.{0} Real) x (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))))))) => Real -> (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))))) (RelIso.hasCoeToFun.{0, 0} Real (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) (LE.le.{0} Real Real.hasLe) (LE.le.{0} (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) (Subtype.hasLe.{0} Real Real.hasLe (fun (x : Real) => Membership.Mem.{0, 0} Real (Set.{0} Real) (Set.hasMem.{0} Real) x (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))))))) Real.expOrderIso x)) (Real.exp x)
 but is expected to have type
-  forall (x : Real), Eq.{1} Real (Subtype.val.{1} Real (fun (x : Real) => Membership.mem.{0, 0} Real (Set.{0} Real) (Set.instMembershipSet.{0} Real) x (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (FunLike.coe.{1, 1, 1} (RelIso.{0, 0} Real (Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1281 : Real) (x._@.Mathlib.Order.Hom.Basic._hyg.1283 : Real) => LE.le.{0} Real Real.instLEReal x._@.Mathlib.Order.Hom.Basic._hyg.1281 x._@.Mathlib.Order.Hom.Basic._hyg.1283) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1296 : Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (x._@.Mathlib.Order.Hom.Basic._hyg.1298 : Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) => LE.le.{0} (Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (Subtype.le.{0} Real Real.instLEReal (fun (x : Real) => Membership.mem.{0, 0} Real (Set.{0} Real) (Set.instMembershipSet.{0} Real) x (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))))) x._@.Mathlib.Order.Hom.Basic._hyg.1296 x._@.Mathlib.Order.Hom.Basic._hyg.1298)) Real (fun (_x : Real) => Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (RelHomClass.toFunLike.{0, 0, 0} (RelIso.{0, 0} Real (Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1281 : Real) (x._@.Mathlib.Order.Hom.Basic._hyg.1283 : Real) => LE.le.{0} Real Real.instLEReal x._@.Mathlib.Order.Hom.Basic._hyg.1281 x._@.Mathlib.Order.Hom.Basic._hyg.1283) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1296 : Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (x._@.Mathlib.Order.Hom.Basic._hyg.1298 : Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) => LE.le.{0} (Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (Subtype.le.{0} Real Real.instLEReal (fun (x : Real) => Membership.mem.{0, 0} Real (Set.{0} Real) (Set.instMembershipSet.{0} Real) x (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))))) x._@.Mathlib.Order.Hom.Basic._hyg.1296 x._@.Mathlib.Order.Hom.Basic._hyg.1298)) Real (Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1281 : Real) (x._@.Mathlib.Order.Hom.Basic._hyg.1283 : Real) => LE.le.{0} Real Real.instLEReal x._@.Mathlib.Order.Hom.Basic._hyg.1281 x._@.Mathlib.Order.Hom.Basic._hyg.1283) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1296 : Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (x._@.Mathlib.Order.Hom.Basic._hyg.1298 : Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) => LE.le.{0} (Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (Subtype.le.{0} Real Real.instLEReal (fun (x : Real) => Membership.mem.{0, 0} Real (Set.{0} Real) (Set.instMembershipSet.{0} Real) x (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))))) x._@.Mathlib.Order.Hom.Basic._hyg.1296 x._@.Mathlib.Order.Hom.Basic._hyg.1298) (RelIso.instRelHomClassRelIso.{0, 0} Real (Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1281 : Real) (x._@.Mathlib.Order.Hom.Basic._hyg.1283 : Real) => LE.le.{0} Real Real.instLEReal x._@.Mathlib.Order.Hom.Basic._hyg.1281 x._@.Mathlib.Order.Hom.Basic._hyg.1283) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1296 : Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (x._@.Mathlib.Order.Hom.Basic._hyg.1298 : Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) => LE.le.{0} (Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (Subtype.le.{0} Real Real.instLEReal (fun (x : Real) => Membership.mem.{0, 0} Real (Set.{0} Real) (Set.instMembershipSet.{0} Real) x (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))))) x._@.Mathlib.Order.Hom.Basic._hyg.1296 x._@.Mathlib.Order.Hom.Basic._hyg.1298))) Real.expOrderIso x)) (Real.exp x)
+  forall (x : Real), Eq.{1} Real (Subtype.val.{1} Real (fun (x : Real) => Membership.mem.{0, 0} Real (Set.{0} Real) (Set.instMembershipSet.{0} Real) x (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (FunLike.coe.{1, 1, 1} (RelIso.{0, 0} Real (Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1285 : Real) (x._@.Mathlib.Order.Hom.Basic._hyg.1287 : Real) => LE.le.{0} Real Real.instLEReal x._@.Mathlib.Order.Hom.Basic._hyg.1285 x._@.Mathlib.Order.Hom.Basic._hyg.1287) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1300 : Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (x._@.Mathlib.Order.Hom.Basic._hyg.1302 : Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) => LE.le.{0} (Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (Subtype.le.{0} Real Real.instLEReal (fun (x : Real) => Membership.mem.{0, 0} Real (Set.{0} Real) (Set.instMembershipSet.{0} Real) x (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))))) x._@.Mathlib.Order.Hom.Basic._hyg.1300 x._@.Mathlib.Order.Hom.Basic._hyg.1302)) Real (fun (_x : Real) => Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (RelHomClass.toFunLike.{0, 0, 0} (RelIso.{0, 0} Real (Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1285 : Real) (x._@.Mathlib.Order.Hom.Basic._hyg.1287 : Real) => LE.le.{0} Real Real.instLEReal x._@.Mathlib.Order.Hom.Basic._hyg.1285 x._@.Mathlib.Order.Hom.Basic._hyg.1287) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1300 : Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (x._@.Mathlib.Order.Hom.Basic._hyg.1302 : Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) => LE.le.{0} (Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (Subtype.le.{0} Real Real.instLEReal (fun (x : Real) => Membership.mem.{0, 0} Real (Set.{0} Real) (Set.instMembershipSet.{0} Real) x (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))))) x._@.Mathlib.Order.Hom.Basic._hyg.1300 x._@.Mathlib.Order.Hom.Basic._hyg.1302)) Real (Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1285 : Real) (x._@.Mathlib.Order.Hom.Basic._hyg.1287 : Real) => LE.le.{0} Real Real.instLEReal x._@.Mathlib.Order.Hom.Basic._hyg.1285 x._@.Mathlib.Order.Hom.Basic._hyg.1287) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1300 : Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (x._@.Mathlib.Order.Hom.Basic._hyg.1302 : Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) => LE.le.{0} (Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (Subtype.le.{0} Real Real.instLEReal (fun (x : Real) => Membership.mem.{0, 0} Real (Set.{0} Real) (Set.instMembershipSet.{0} Real) x (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))))) x._@.Mathlib.Order.Hom.Basic._hyg.1300 x._@.Mathlib.Order.Hom.Basic._hyg.1302) (RelIso.instRelHomClassRelIso.{0, 0} Real (Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1285 : Real) (x._@.Mathlib.Order.Hom.Basic._hyg.1287 : Real) => LE.le.{0} Real Real.instLEReal x._@.Mathlib.Order.Hom.Basic._hyg.1285 x._@.Mathlib.Order.Hom.Basic._hyg.1287) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1300 : Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (x._@.Mathlib.Order.Hom.Basic._hyg.1302 : Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) => LE.le.{0} (Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (Subtype.le.{0} Real Real.instLEReal (fun (x : Real) => Membership.mem.{0, 0} Real (Set.{0} Real) (Set.instMembershipSet.{0} Real) x (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))))) x._@.Mathlib.Order.Hom.Basic._hyg.1300 x._@.Mathlib.Order.Hom.Basic._hyg.1302))) Real.expOrderIso x)) (Real.exp x)
 Case conversion may be inaccurate. Consider using '#align real.coe_exp_order_iso_apply Real.coe_expOrderIso_applyβ‚“'. -/
 @[simp]
 theorem coe_expOrderIso_apply (x : ℝ) : (expOrderIso x : ℝ) = exp x :=
@@ -446,7 +446,7 @@ theorem coe_expOrderIso_apply (x : ℝ) : (expOrderIso x : ℝ) = exp x :=
 lean 3 declaration is
   Eq.{1} (Real -> Real) (Function.comp.{1, 1, 1} Real (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) Real ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) Real (HasLiftT.mk.{1, 1} (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) Real (CoeTCβ‚“.coe.{1, 1} (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) Real (coeBase.{1, 1} (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) Real (coeSubtype.{1} Real (fun (x : Real) => Membership.Mem.{0, 0} Real (Set.{0} Real) (Set.hasMem.{0} Real) x (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))))))))) (coeFn.{1, 1} (OrderIso.{0, 0} Real (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) Real.hasLe (Subtype.hasLe.{0} Real Real.hasLe (fun (x : Real) => Membership.Mem.{0, 0} Real (Set.{0} Real) (Set.hasMem.{0} Real) x (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))))) (fun (_x : RelIso.{0, 0} Real (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) (LE.le.{0} Real Real.hasLe) (LE.le.{0} (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) (Subtype.hasLe.{0} Real Real.hasLe (fun (x : Real) => Membership.Mem.{0, 0} Real (Set.{0} Real) (Set.hasMem.{0} Real) x (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))))))) => Real -> (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))))) (RelIso.hasCoeToFun.{0, 0} Real (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) (LE.le.{0} Real Real.hasLe) (LE.le.{0} (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) (Subtype.hasLe.{0} Real Real.hasLe (fun (x : Real) => Membership.Mem.{0, 0} Real (Set.{0} Real) (Set.hasMem.{0} Real) x (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))))))) Real.expOrderIso)) Real.exp
 but is expected to have type
-  Eq.{1} (Real -> Real) (Function.comp.{1, 1, 1} Real (Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) Real (Subtype.val.{1} Real (fun (x : Real) => Membership.mem.{0, 0} Real (Set.{0} Real) (Set.instMembershipSet.{0} Real) x (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))))) (FunLike.coe.{1, 1, 1} (RelIso.{0, 0} Real (Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1281 : Real) (x._@.Mathlib.Order.Hom.Basic._hyg.1283 : Real) => LE.le.{0} Real Real.instLEReal x._@.Mathlib.Order.Hom.Basic._hyg.1281 x._@.Mathlib.Order.Hom.Basic._hyg.1283) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1296 : Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (x._@.Mathlib.Order.Hom.Basic._hyg.1298 : Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) => LE.le.{0} (Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (Subtype.le.{0} Real Real.instLEReal (fun (x : Real) => Membership.mem.{0, 0} Real (Set.{0} Real) (Set.instMembershipSet.{0} Real) x (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))))) x._@.Mathlib.Order.Hom.Basic._hyg.1296 x._@.Mathlib.Order.Hom.Basic._hyg.1298)) Real (fun (_x : Real) => Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (RelHomClass.toFunLike.{0, 0, 0} (RelIso.{0, 0} Real (Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1281 : Real) (x._@.Mathlib.Order.Hom.Basic._hyg.1283 : Real) => LE.le.{0} Real Real.instLEReal x._@.Mathlib.Order.Hom.Basic._hyg.1281 x._@.Mathlib.Order.Hom.Basic._hyg.1283) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1296 : Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (x._@.Mathlib.Order.Hom.Basic._hyg.1298 : Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) => LE.le.{0} (Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (Subtype.le.{0} Real Real.instLEReal (fun (x : Real) => Membership.mem.{0, 0} Real (Set.{0} Real) (Set.instMembershipSet.{0} Real) x (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))))) x._@.Mathlib.Order.Hom.Basic._hyg.1296 x._@.Mathlib.Order.Hom.Basic._hyg.1298)) Real (Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1281 : Real) (x._@.Mathlib.Order.Hom.Basic._hyg.1283 : Real) => LE.le.{0} Real Real.instLEReal x._@.Mathlib.Order.Hom.Basic._hyg.1281 x._@.Mathlib.Order.Hom.Basic._hyg.1283) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1296 : Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (x._@.Mathlib.Order.Hom.Basic._hyg.1298 : Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) => LE.le.{0} (Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (Subtype.le.{0} Real Real.instLEReal (fun (x : Real) => Membership.mem.{0, 0} Real (Set.{0} Real) (Set.instMembershipSet.{0} Real) x (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))))) x._@.Mathlib.Order.Hom.Basic._hyg.1296 x._@.Mathlib.Order.Hom.Basic._hyg.1298) (RelIso.instRelHomClassRelIso.{0, 0} Real (Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1281 : Real) (x._@.Mathlib.Order.Hom.Basic._hyg.1283 : Real) => LE.le.{0} Real Real.instLEReal x._@.Mathlib.Order.Hom.Basic._hyg.1281 x._@.Mathlib.Order.Hom.Basic._hyg.1283) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1296 : Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (x._@.Mathlib.Order.Hom.Basic._hyg.1298 : Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) => LE.le.{0} (Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (Subtype.le.{0} Real Real.instLEReal (fun (x : Real) => Membership.mem.{0, 0} Real (Set.{0} Real) (Set.instMembershipSet.{0} Real) x (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))))) x._@.Mathlib.Order.Hom.Basic._hyg.1296 x._@.Mathlib.Order.Hom.Basic._hyg.1298))) Real.expOrderIso)) Real.exp
+  Eq.{1} (Real -> Real) (Function.comp.{1, 1, 1} Real (Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) Real (Subtype.val.{1} Real (fun (x : Real) => Membership.mem.{0, 0} Real (Set.{0} Real) (Set.instMembershipSet.{0} Real) x (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))))) (FunLike.coe.{1, 1, 1} (RelIso.{0, 0} Real (Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1285 : Real) (x._@.Mathlib.Order.Hom.Basic._hyg.1287 : Real) => LE.le.{0} Real Real.instLEReal x._@.Mathlib.Order.Hom.Basic._hyg.1285 x._@.Mathlib.Order.Hom.Basic._hyg.1287) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1300 : Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (x._@.Mathlib.Order.Hom.Basic._hyg.1302 : Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) => LE.le.{0} (Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (Subtype.le.{0} Real Real.instLEReal (fun (x : Real) => Membership.mem.{0, 0} Real (Set.{0} Real) (Set.instMembershipSet.{0} Real) x (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))))) x._@.Mathlib.Order.Hom.Basic._hyg.1300 x._@.Mathlib.Order.Hom.Basic._hyg.1302)) Real (fun (_x : Real) => Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (RelHomClass.toFunLike.{0, 0, 0} (RelIso.{0, 0} Real (Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1285 : Real) (x._@.Mathlib.Order.Hom.Basic._hyg.1287 : Real) => LE.le.{0} Real Real.instLEReal x._@.Mathlib.Order.Hom.Basic._hyg.1285 x._@.Mathlib.Order.Hom.Basic._hyg.1287) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1300 : Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (x._@.Mathlib.Order.Hom.Basic._hyg.1302 : Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) => LE.le.{0} (Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (Subtype.le.{0} Real Real.instLEReal (fun (x : Real) => Membership.mem.{0, 0} Real (Set.{0} Real) (Set.instMembershipSet.{0} Real) x (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))))) x._@.Mathlib.Order.Hom.Basic._hyg.1300 x._@.Mathlib.Order.Hom.Basic._hyg.1302)) Real (Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1285 : Real) (x._@.Mathlib.Order.Hom.Basic._hyg.1287 : Real) => LE.le.{0} Real Real.instLEReal x._@.Mathlib.Order.Hom.Basic._hyg.1285 x._@.Mathlib.Order.Hom.Basic._hyg.1287) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1300 : Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (x._@.Mathlib.Order.Hom.Basic._hyg.1302 : Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) => LE.le.{0} (Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (Subtype.le.{0} Real Real.instLEReal (fun (x : Real) => Membership.mem.{0, 0} Real (Set.{0} Real) (Set.instMembershipSet.{0} Real) x (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))))) x._@.Mathlib.Order.Hom.Basic._hyg.1300 x._@.Mathlib.Order.Hom.Basic._hyg.1302) (RelIso.instRelHomClassRelIso.{0, 0} Real (Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1285 : Real) (x._@.Mathlib.Order.Hom.Basic._hyg.1287 : Real) => LE.le.{0} Real Real.instLEReal x._@.Mathlib.Order.Hom.Basic._hyg.1285 x._@.Mathlib.Order.Hom.Basic._hyg.1287) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1300 : Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (x._@.Mathlib.Order.Hom.Basic._hyg.1302 : Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) => LE.le.{0} (Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (Subtype.le.{0} Real Real.instLEReal (fun (x : Real) => Membership.mem.{0, 0} Real (Set.{0} Real) (Set.instMembershipSet.{0} Real) x (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))))) x._@.Mathlib.Order.Hom.Basic._hyg.1300 x._@.Mathlib.Order.Hom.Basic._hyg.1302))) Real.expOrderIso)) Real.exp
 Case conversion may be inaccurate. Consider using '#align real.coe_comp_exp_order_iso Real.coe_comp_expOrderIsoβ‚“'. -/
 @[simp]
 theorem coe_comp_expOrderIso : coe ∘ expOrderIso = exp :=
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
 
 ! This file was ported from Lean 3 source module analysis.special_functions.exp
-! leanprover-community/mathlib commit 2c1d8ca2812b64f88992a5294ea3dba144755cd1
+! leanprover-community/mathlib commit 2ed2c6310e6f1c5562bdf6bfbda55ebbf6891abe
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -15,6 +15,9 @@ import Mathbin.Analysis.SpecificLimits.Normed
 /-!
 # Complex and real exponential
 
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
 In this file we prove continuity of `complex.exp` and `real.exp`. We also prove a few facts about
 limits of `real.exp` at infinity.
 
Diff
@@ -561,7 +561,7 @@ theorem isLittleO_pow_exp_atTop {n : β„•} : (fun x => x ^ n) =o[atTop] Real.exp
 lean 3 declaration is
   forall {Ξ± : Type.{u1}} {l : Filter.{u1} Ξ±} {f : Ξ± -> Real} {g : Ξ± -> Real}, Iff (Asymptotics.IsBigO.{u1, 0, 0} Ξ± Real Real Real.hasNorm Real.hasNorm l (fun (x : Ξ±) => Real.exp (f x)) (fun (x : Ξ±) => Real.exp (g x))) (Filter.IsBoundedUnder.{0, u1} Real Ξ± (LE.le.{0} Real Real.hasLe) l (HSub.hSub.{u1, u1, u1} (Ξ± -> Real) (Ξ± -> Real) (Ξ± -> Real) (instHSub.{u1} (Ξ± -> Real) (Pi.instSub.{u1, 0} Ξ± (fun (αΎ° : Ξ±) => Real) (fun (i : Ξ±) => Real.hasSub))) f g))
 but is expected to have type
-  forall {Ξ± : Type.{u1}} {l : Filter.{u1} Ξ±} {f : Ξ± -> Real} {g : Ξ± -> Real}, Iff (Asymptotics.IsBigO.{u1, 0, 0} Ξ± Real Real Real.norm Real.norm l (fun (x : Ξ±) => Real.exp (f x)) (fun (x : Ξ±) => Real.exp (g x))) (Filter.IsBoundedUnder.{0, u1} Real Ξ± (fun (x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.3651 : Real) (x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.3653 : Real) => LE.le.{0} Real Real.instLEReal x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.3651 x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.3653) l (HSub.hSub.{u1, u1, u1} (Ξ± -> Real) (Ξ± -> Real) (Ξ± -> Real) (instHSub.{u1} (Ξ± -> Real) (Pi.instSub.{u1, 0} Ξ± (fun (αΎ° : Ξ±) => Real) (fun (i : Ξ±) => Real.instSubReal))) f g))
+  forall {Ξ± : Type.{u1}} {l : Filter.{u1} Ξ±} {f : Ξ± -> Real} {g : Ξ± -> Real}, Iff (Asymptotics.IsBigO.{u1, 0, 0} Ξ± Real Real Real.norm Real.norm l (fun (x : Ξ±) => Real.exp (f x)) (fun (x : Ξ±) => Real.exp (g x))) (Filter.IsBoundedUnder.{0, u1} Real Ξ± (fun (x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.3755 : Real) (x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.3757 : Real) => LE.le.{0} Real Real.instLEReal x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.3755 x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.3757) l (HSub.hSub.{u1, u1, u1} (Ξ± -> Real) (Ξ± -> Real) (Ξ± -> Real) (instHSub.{u1} (Ξ± -> Real) (Pi.instSub.{u1, 0} Ξ± (fun (αΎ° : Ξ±) => Real) (fun (i : Ξ±) => Real.instSubReal))) f g))
 Case conversion may be inaccurate. Consider using '#align real.is_O_exp_comp_exp_comp Real.isBigO_exp_comp_exp_compβ‚“'. -/
 @[simp]
 theorem isBigO_exp_comp_exp_comp {f g : Ξ± β†’ ℝ} :
@@ -574,7 +574,7 @@ theorem isBigO_exp_comp_exp_comp {f g : Ξ± β†’ ℝ} :
 lean 3 declaration is
   forall {Ξ± : Type.{u1}} {l : Filter.{u1} Ξ±} {f : Ξ± -> Real} {g : Ξ± -> Real}, Iff (Asymptotics.IsTheta.{u1, 0, 0} Ξ± Real Real Real.hasNorm Real.hasNorm l (fun (x : Ξ±) => Real.exp (f x)) (fun (x : Ξ±) => Real.exp (g x))) (Filter.IsBoundedUnder.{0, u1} Real Ξ± (LE.le.{0} Real Real.hasLe) l (fun (x : Ξ±) => Abs.abs.{0} Real (Neg.toHasAbs.{0} Real Real.hasNeg Real.hasSup) (HSub.hSub.{0, 0, 0} Real Real Real (instHSub.{0} Real Real.hasSub) (f x) (g x))))
 but is expected to have type
-  forall {Ξ± : Type.{u1}} {l : Filter.{u1} Ξ±} {f : Ξ± -> Real} {g : Ξ± -> Real}, Iff (Asymptotics.IsTheta.{u1, 0, 0} Ξ± Real Real Real.norm Real.norm l (fun (x : Ξ±) => Real.exp (f x)) (fun (x : Ξ±) => Real.exp (g x))) (Filter.IsBoundedUnder.{0, u1} Real Ξ± (fun (x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.3750 : Real) (x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.3752 : Real) => LE.le.{0} Real Real.instLEReal x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.3750 x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.3752) l (fun (x : Ξ±) => Abs.abs.{0} Real (Neg.toHasAbs.{0} Real Real.instNegReal Real.instSupReal) (HSub.hSub.{0, 0, 0} Real Real Real (instHSub.{0} Real Real.instSubReal) (f x) (g x))))
+  forall {Ξ± : Type.{u1}} {l : Filter.{u1} Ξ±} {f : Ξ± -> Real} {g : Ξ± -> Real}, Iff (Asymptotics.IsTheta.{u1, 0, 0} Ξ± Real Real Real.norm Real.norm l (fun (x : Ξ±) => Real.exp (f x)) (fun (x : Ξ±) => Real.exp (g x))) (Filter.IsBoundedUnder.{0, u1} Real Ξ± (fun (x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.3854 : Real) (x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.3856 : Real) => LE.le.{0} Real Real.instLEReal x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.3854 x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.3856) l (fun (x : Ξ±) => Abs.abs.{0} Real (Neg.toHasAbs.{0} Real Real.instNegReal Real.instSupReal) (HSub.hSub.{0, 0, 0} Real Real Real (instHSub.{0} Real Real.instSubReal) (f x) (g x))))
 Case conversion may be inaccurate. Consider using '#align real.is_Theta_exp_comp_exp_comp Real.isTheta_exp_comp_exp_compβ‚“'. -/
 @[simp]
 theorem isTheta_exp_comp_exp_comp {f g : Ξ± β†’ ℝ} :
@@ -614,7 +614,7 @@ theorem isLittleO_one_exp_comp {f : Ξ± β†’ ℝ} :
 lean 3 declaration is
   forall {Ξ± : Type.{u1}} {l : Filter.{u1} Ξ±} {f : Ξ± -> Real}, Iff (Asymptotics.IsBigO.{u1, 0, 0} Ξ± Real Real Real.hasNorm Real.hasNorm l (fun (x : Ξ±) => OfNat.ofNat.{0} Real 1 (OfNat.mk.{0} Real 1 (One.one.{0} Real Real.hasOne))) (fun (x : Ξ±) => Real.exp (f x))) (Filter.IsBoundedUnder.{0, u1} Real Ξ± (GE.ge.{0} Real Real.hasLe) l f)
 but is expected to have type
-  forall {Ξ± : Type.{u1}} {l : Filter.{u1} Ξ±} {f : Ξ± -> Real}, Iff (Asymptotics.IsBigO.{u1, 0, 0} Ξ± Real Real Real.norm Real.norm l (fun (x : Ξ±) => OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal)) (fun (x : Ξ±) => Real.exp (f x))) (Filter.IsBoundedUnder.{0, u1} Real Ξ± (fun (x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.3964 : Real) (x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.3966 : Real) => GE.ge.{0} Real Real.instLEReal x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.3964 x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.3966) l f)
+  forall {Ξ± : Type.{u1}} {l : Filter.{u1} Ξ±} {f : Ξ± -> Real}, Iff (Asymptotics.IsBigO.{u1, 0, 0} Ξ± Real Real Real.norm Real.norm l (fun (x : Ξ±) => OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal)) (fun (x : Ξ±) => Real.exp (f x))) (Filter.IsBoundedUnder.{0, u1} Real Ξ± (fun (x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.4068 : Real) (x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.4070 : Real) => GE.ge.{0} Real Real.instLEReal x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.4068 x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.4070) l f)
 Case conversion may be inaccurate. Consider using '#align real.is_O_one_exp_comp Real.isBigO_one_exp_compβ‚“'. -/
 /-- `real.exp (f x)` is bounded away from zero along a filter if and only if this filter is bounded
 from below under `f`. -/
@@ -628,7 +628,7 @@ theorem isBigO_one_exp_comp {f : Ξ± β†’ ℝ} :
 lean 3 declaration is
   forall {Ξ± : Type.{u1}} {l : Filter.{u1} Ξ±} {f : Ξ± -> Real}, Iff (Asymptotics.IsBigO.{u1, 0, 0} Ξ± Real Real Real.hasNorm Real.hasNorm l (fun (x : Ξ±) => Real.exp (f x)) (fun (x : Ξ±) => OfNat.ofNat.{0} Real 1 (OfNat.mk.{0} Real 1 (One.one.{0} Real Real.hasOne)))) (Filter.IsBoundedUnder.{0, u1} Real Ξ± (LE.le.{0} Real Real.hasLe) l f)
 but is expected to have type
-  forall {Ξ± : Type.{u1}} {l : Filter.{u1} Ξ±} {f : Ξ± -> Real}, Iff (Asymptotics.IsBigO.{u1, 0, 0} Ξ± Real Real Real.norm Real.norm l (fun (x : Ξ±) => Real.exp (f x)) (fun (x : Ξ±) => OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal))) (Filter.IsBoundedUnder.{0, u1} Real Ξ± (fun (x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.4040 : Real) (x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.4042 : Real) => LE.le.{0} Real Real.instLEReal x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.4040 x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.4042) l f)
+  forall {Ξ± : Type.{u1}} {l : Filter.{u1} Ξ±} {f : Ξ± -> Real}, Iff (Asymptotics.IsBigO.{u1, 0, 0} Ξ± Real Real Real.norm Real.norm l (fun (x : Ξ±) => Real.exp (f x)) (fun (x : Ξ±) => OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal))) (Filter.IsBoundedUnder.{0, u1} Real Ξ± (fun (x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.4144 : Real) (x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.4146 : Real) => LE.le.{0} Real Real.instLEReal x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.4144 x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.4146) l f)
 Case conversion may be inaccurate. Consider using '#align real.is_O_exp_comp_one Real.isBigO_exp_comp_oneβ‚“'. -/
 /-- `real.exp (f x)` is bounded away from zero along a filter if and only if this filter is bounded
 from below under `f`. -/
@@ -641,7 +641,7 @@ theorem isBigO_exp_comp_one {f : Ξ± β†’ ℝ} :
 lean 3 declaration is
   forall {Ξ± : Type.{u1}} {l : Filter.{u1} Ξ±} {f : Ξ± -> Real}, Iff (Asymptotics.IsTheta.{u1, 0, 0} Ξ± Real Real Real.hasNorm Real.hasNorm l (fun (x : Ξ±) => Real.exp (f x)) (fun (x : Ξ±) => OfNat.ofNat.{0} Real 1 (OfNat.mk.{0} Real 1 (One.one.{0} Real Real.hasOne)))) (Filter.IsBoundedUnder.{0, u1} Real Ξ± (LE.le.{0} Real Real.hasLe) l (fun (x : Ξ±) => Abs.abs.{0} Real (Neg.toHasAbs.{0} Real Real.hasNeg Real.hasSup) (f x)))
 but is expected to have type
-  forall {Ξ± : Type.{u1}} {l : Filter.{u1} Ξ±} {f : Ξ± -> Real}, Iff (Asymptotics.IsTheta.{u1, 0, 0} Ξ± Real Real Real.norm Real.norm l (fun (x : Ξ±) => Real.exp (f x)) (fun (x : Ξ±) => OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal))) (Filter.IsBoundedUnder.{0, u1} Real Ξ± (fun (x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.4116 : Real) (x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.4118 : Real) => LE.le.{0} Real Real.instLEReal x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.4116 x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.4118) l (fun (x : Ξ±) => Abs.abs.{0} Real (Neg.toHasAbs.{0} Real Real.instNegReal Real.instSupReal) (f x)))
+  forall {Ξ± : Type.{u1}} {l : Filter.{u1} Ξ±} {f : Ξ± -> Real}, Iff (Asymptotics.IsTheta.{u1, 0, 0} Ξ± Real Real Real.norm Real.norm l (fun (x : Ξ±) => Real.exp (f x)) (fun (x : Ξ±) => OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal))) (Filter.IsBoundedUnder.{0, u1} Real Ξ± (fun (x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.4220 : Real) (x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.4222 : Real) => LE.le.{0} Real Real.instLEReal x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.4220 x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.4222) l (fun (x : Ξ±) => Abs.abs.{0} Real (Neg.toHasAbs.{0} Real Real.instNegReal Real.instSupReal) (f x)))
 Case conversion may be inaccurate. Consider using '#align real.is_Theta_exp_comp_one Real.isTheta_exp_comp_oneβ‚“'. -/
 /-- `real.exp (f x)` is bounded away from zero and infinity along a filter `l` if and only if
 `|f x|` is bounded from above along this filter. -/
Diff
@@ -34,6 +34,12 @@ namespace Complex
 
 variable {z y x : ℝ}
 
+/- warning: complex.exp_bound_sq -> Complex.exp_bound_sq is a dubious translation:
+lean 3 declaration is
+  forall (x : Complex) (z : Complex), (LE.le.{0} Real Real.hasLe (Norm.norm.{0} Complex Complex.hasNorm z) (OfNat.ofNat.{0} Real 1 (OfNat.mk.{0} Real 1 (One.one.{0} Real Real.hasOne)))) -> (LE.le.{0} Real Real.hasLe (Norm.norm.{0} Complex Complex.hasNorm (HSub.hSub.{0, 0, 0} Complex Complex Complex (instHSub.{0} Complex Complex.hasSub) (HSub.hSub.{0, 0, 0} Complex Complex Complex (instHSub.{0} Complex Complex.hasSub) (Complex.exp (HAdd.hAdd.{0, 0, 0} Complex Complex Complex (instHAdd.{0} Complex Complex.hasAdd) x z)) (Complex.exp x)) (SMul.smul.{0, 0} Complex Complex (Mul.toSMul.{0} Complex Complex.hasMul) z (Complex.exp x)))) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) (Norm.norm.{0} Complex Complex.hasNorm (Complex.exp x)) (HPow.hPow.{0, 0, 0} Real Nat Real (instHPow.{0, 0} Real Nat (Monoid.Pow.{0} Real Real.monoid)) (Norm.norm.{0} Complex Complex.hasNorm z) (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))
+but is expected to have type
+  forall (x : Complex) (z : Complex), (LE.le.{0} Real Real.instLEReal (Norm.norm.{0} Complex Complex.instNormComplex z) (OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal))) -> (LE.le.{0} Real Real.instLEReal (Norm.norm.{0} Complex Complex.instNormComplex (HSub.hSub.{0, 0, 0} Complex Complex Complex (instHSub.{0} Complex Complex.instSubComplex) (HSub.hSub.{0, 0, 0} Complex Complex Complex (instHSub.{0} Complex Complex.instSubComplex) (Complex.exp (HAdd.hAdd.{0, 0, 0} Complex Complex Complex (instHAdd.{0} Complex Complex.instAddComplex) x z)) (Complex.exp x)) (HSMul.hSMul.{0, 0, 0} Complex Complex Complex (instHSMul.{0, 0} Complex Complex (Algebra.toSMul.{0, 0} Complex Complex Complex.instCommSemiringComplex Complex.instSemiringComplex (NormedAlgebra.toAlgebra.{0, 0} Complex Complex Complex.instNormedFieldComplex (SeminormedCommRing.toSeminormedRing.{0} Complex (NormedCommRing.toSeminormedCommRing.{0} Complex (NormedField.toNormedCommRing.{0} Complex Complex.instNormedFieldComplex))) (NormedAlgebra.id.{0} Complex Complex.instNormedFieldComplex)))) z (Complex.exp x)))) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) (Norm.norm.{0} Complex Complex.instNormComplex (Complex.exp x)) (HPow.hPow.{0, 0, 0} Real Nat Real (instHPow.{0, 0} Real Nat (Monoid.Pow.{0} Real Real.instMonoidReal)) (Norm.norm.{0} Complex Complex.instNormComplex z) (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2)))))
+Case conversion may be inaccurate. Consider using '#align complex.exp_bound_sq Complex.exp_bound_sqβ‚“'. -/
 theorem exp_bound_sq (x z : β„‚) (hz : β€–zβ€– ≀ 1) :
     β€–exp (x + z) - exp x - z β€’ exp xβ€– ≀ β€–exp xβ€– * β€–zβ€– ^ 2 :=
   calc
@@ -48,6 +54,12 @@ theorem exp_bound_sq (x z : β„‚) (hz : β€–zβ€– ≀ 1) :
     
 #align complex.exp_bound_sq Complex.exp_bound_sq
 
+/- warning: complex.locally_lipschitz_exp -> Complex.locally_lipschitz_exp is a dubious translation:
+lean 3 declaration is
+  forall {r : Real}, (LE.le.{0} Real Real.hasLe (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) r) -> (LE.le.{0} Real Real.hasLe r (OfNat.ofNat.{0} Real 1 (OfNat.mk.{0} Real 1 (One.one.{0} Real Real.hasOne)))) -> (forall (x : Complex) (y : Complex), (LT.lt.{0} Real Real.hasLt (Norm.norm.{0} Complex Complex.hasNorm (HSub.hSub.{0, 0, 0} Complex Complex Complex (instHSub.{0} Complex Complex.hasSub) y x)) r) -> (LE.le.{0} Real Real.hasLe (Norm.norm.{0} Complex Complex.hasNorm (HSub.hSub.{0, 0, 0} Complex Complex Complex (instHSub.{0} Complex Complex.hasSub) (Complex.exp y) (Complex.exp x))) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) (HAdd.hAdd.{0, 0, 0} Real Real Real (instHAdd.{0} Real Real.hasAdd) (OfNat.ofNat.{0} Real 1 (OfNat.mk.{0} Real 1 (One.one.{0} Real Real.hasOne))) r) (Norm.norm.{0} Complex Complex.hasNorm (Complex.exp x))) (Norm.norm.{0} Complex Complex.hasNorm (HSub.hSub.{0, 0, 0} Complex Complex Complex (instHSub.{0} Complex Complex.hasSub) y x)))))
+but is expected to have type
+  forall {r : Real}, (LE.le.{0} Real Real.instLEReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) r) -> (LE.le.{0} Real Real.instLEReal r (OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal))) -> (forall (x : Complex) (y : Complex), (LT.lt.{0} Real Real.instLTReal (Norm.norm.{0} Complex Complex.instNormComplex (HSub.hSub.{0, 0, 0} Complex Complex Complex (instHSub.{0} Complex Complex.instSubComplex) y x)) r) -> (LE.le.{0} Real Real.instLEReal (Norm.norm.{0} Complex Complex.instNormComplex (HSub.hSub.{0, 0, 0} Complex Complex Complex (instHSub.{0} Complex Complex.instSubComplex) (Complex.exp y) (Complex.exp x))) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) (HAdd.hAdd.{0, 0, 0} Real Real Real (instHAdd.{0} Real Real.instAddReal) (OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal)) r) (Norm.norm.{0} Complex Complex.instNormComplex (Complex.exp x))) (Norm.norm.{0} Complex Complex.instNormComplex (HSub.hSub.{0, 0, 0} Complex Complex Complex (instHSub.{0} Complex Complex.instSubComplex) y x)))))
+Case conversion may be inaccurate. Consider using '#align complex.locally_lipschitz_exp Complex.locally_lipschitz_expβ‚“'. -/
 theorem locally_lipschitz_exp {r : ℝ} (hr_nonneg : 0 ≀ r) (hr_le : r ≀ 1) (x y : β„‚)
     (hyx : β€–y - xβ€– < r) : β€–exp y - exp xβ€– ≀ (1 + r) * β€–exp xβ€– * β€–y - xβ€– :=
   by
@@ -71,6 +83,12 @@ theorem locally_lipschitz_exp {r : ℝ} (hr_nonneg : 0 ≀ r) (hr_le : r ≀ 1)
     
 #align complex.locally_lipschitz_exp Complex.locally_lipschitz_exp
 
+/- warning: complex.continuous_exp -> Complex.continuous_exp is a dubious translation:
+lean 3 declaration is
+  Continuous.{0, 0} Complex Complex (UniformSpace.toTopologicalSpace.{0} Complex (PseudoMetricSpace.toUniformSpace.{0} Complex (SeminormedRing.toPseudoMetricSpace.{0} Complex (SeminormedCommRing.toSemiNormedRing.{0} Complex (NormedCommRing.toSeminormedCommRing.{0} Complex (NormedField.toNormedCommRing.{0} Complex Complex.normedField)))))) (UniformSpace.toTopologicalSpace.{0} Complex (PseudoMetricSpace.toUniformSpace.{0} Complex (SeminormedRing.toPseudoMetricSpace.{0} Complex (SeminormedCommRing.toSemiNormedRing.{0} Complex (NormedCommRing.toSeminormedCommRing.{0} Complex (NormedField.toNormedCommRing.{0} Complex Complex.normedField)))))) Complex.exp
+but is expected to have type
+  Continuous.{0, 0} Complex Complex (UniformSpace.toTopologicalSpace.{0} Complex (PseudoMetricSpace.toUniformSpace.{0} Complex (SeminormedRing.toPseudoMetricSpace.{0} Complex (SeminormedCommRing.toSeminormedRing.{0} Complex (NormedCommRing.toSeminormedCommRing.{0} Complex (NormedField.toNormedCommRing.{0} Complex Complex.instNormedFieldComplex)))))) (UniformSpace.toTopologicalSpace.{0} Complex (PseudoMetricSpace.toUniformSpace.{0} Complex (SeminormedRing.toPseudoMetricSpace.{0} Complex (SeminormedCommRing.toSeminormedRing.{0} Complex (NormedCommRing.toSeminormedCommRing.{0} Complex (NormedField.toNormedCommRing.{0} Complex Complex.instNormedFieldComplex)))))) Complex.exp
+Case conversion may be inaccurate. Consider using '#align complex.continuous_exp Complex.continuous_expβ‚“'. -/
 @[continuity]
 theorem continuous_exp : Continuous exp :=
   continuous_iff_continuousAt.mpr fun x =>
@@ -78,6 +96,12 @@ theorem continuous_exp : Continuous exp :=
       (locally_lipschitz_exp zero_le_one le_rfl x)
 #align complex.continuous_exp Complex.continuous_exp
 
+/- warning: complex.continuous_on_exp -> Complex.continuousOn_exp is a dubious translation:
+lean 3 declaration is
+  forall {s : Set.{0} Complex}, ContinuousOn.{0, 0} Complex Complex (UniformSpace.toTopologicalSpace.{0} Complex (PseudoMetricSpace.toUniformSpace.{0} Complex (SeminormedRing.toPseudoMetricSpace.{0} Complex (SeminormedCommRing.toSemiNormedRing.{0} Complex (NormedCommRing.toSeminormedCommRing.{0} Complex (NormedField.toNormedCommRing.{0} Complex Complex.normedField)))))) (UniformSpace.toTopologicalSpace.{0} Complex (PseudoMetricSpace.toUniformSpace.{0} Complex (SeminormedRing.toPseudoMetricSpace.{0} Complex (SeminormedCommRing.toSemiNormedRing.{0} Complex (NormedCommRing.toSeminormedCommRing.{0} Complex (NormedField.toNormedCommRing.{0} Complex Complex.normedField)))))) Complex.exp s
+but is expected to have type
+  forall {s : Set.{0} Complex}, ContinuousOn.{0, 0} Complex Complex (UniformSpace.toTopologicalSpace.{0} Complex (PseudoMetricSpace.toUniformSpace.{0} Complex (SeminormedRing.toPseudoMetricSpace.{0} Complex (SeminormedCommRing.toSeminormedRing.{0} Complex (NormedCommRing.toSeminormedCommRing.{0} Complex (NormedField.toNormedCommRing.{0} Complex Complex.instNormedFieldComplex)))))) (UniformSpace.toTopologicalSpace.{0} Complex (PseudoMetricSpace.toUniformSpace.{0} Complex (SeminormedRing.toPseudoMetricSpace.{0} Complex (SeminormedCommRing.toSeminormedRing.{0} Complex (NormedCommRing.toSeminormedCommRing.{0} Complex (NormedField.toNormedCommRing.{0} Complex Complex.instNormedFieldComplex)))))) Complex.exp s
+Case conversion may be inaccurate. Consider using '#align complex.continuous_on_exp Complex.continuousOn_expβ‚“'. -/
 theorem continuousOn_exp {s : Set β„‚} : ContinuousOn exp s :=
   continuous_exp.ContinuousOn
 #align complex.continuous_on_exp Complex.continuousOn_exp
@@ -90,6 +114,12 @@ variable {Ξ± : Type _}
 
 open Complex
 
+/- warning: filter.tendsto.cexp -> Filter.Tendsto.cexp is a dubious translation:
+lean 3 declaration is
+  forall {Ξ± : Type.{u1}} {l : Filter.{u1} Ξ±} {f : Ξ± -> Complex} {z : Complex}, (Filter.Tendsto.{u1, 0} Ξ± Complex f l (nhds.{0} Complex (UniformSpace.toTopologicalSpace.{0} Complex (PseudoMetricSpace.toUniformSpace.{0} Complex (SeminormedRing.toPseudoMetricSpace.{0} Complex (SeminormedCommRing.toSemiNormedRing.{0} Complex (NormedCommRing.toSeminormedCommRing.{0} Complex (NormedField.toNormedCommRing.{0} Complex Complex.normedField)))))) z)) -> (Filter.Tendsto.{u1, 0} Ξ± Complex (fun (x : Ξ±) => Complex.exp (f x)) l (nhds.{0} Complex (UniformSpace.toTopologicalSpace.{0} Complex (PseudoMetricSpace.toUniformSpace.{0} Complex (SeminormedRing.toPseudoMetricSpace.{0} Complex (SeminormedCommRing.toSemiNormedRing.{0} Complex (NormedCommRing.toSeminormedCommRing.{0} Complex (NormedField.toNormedCommRing.{0} Complex Complex.normedField)))))) (Complex.exp z)))
+but is expected to have type
+  forall {Ξ± : Type.{u1}} {l : Filter.{u1} Ξ±} {f : Ξ± -> Complex} {z : Complex}, (Filter.Tendsto.{u1, 0} Ξ± Complex f l (nhds.{0} Complex (UniformSpace.toTopologicalSpace.{0} Complex (PseudoMetricSpace.toUniformSpace.{0} Complex (SeminormedRing.toPseudoMetricSpace.{0} Complex (SeminormedCommRing.toSeminormedRing.{0} Complex (NormedCommRing.toSeminormedCommRing.{0} Complex (NormedField.toNormedCommRing.{0} Complex Complex.instNormedFieldComplex)))))) z)) -> (Filter.Tendsto.{u1, 0} Ξ± Complex (fun (x : Ξ±) => Complex.exp (f x)) l (nhds.{0} Complex (UniformSpace.toTopologicalSpace.{0} Complex (PseudoMetricSpace.toUniformSpace.{0} Complex (SeminormedRing.toPseudoMetricSpace.{0} Complex (SeminormedCommRing.toSeminormedRing.{0} Complex (NormedCommRing.toSeminormedCommRing.{0} Complex (NormedField.toNormedCommRing.{0} Complex Complex.instNormedFieldComplex)))))) (Complex.exp z)))
+Case conversion may be inaccurate. Consider using '#align filter.tendsto.cexp Filter.Tendsto.cexpβ‚“'. -/
 theorem Filter.Tendsto.cexp {l : Filter Ξ±} {f : Ξ± β†’ β„‚} {z : β„‚} (hf : Tendsto f l (𝓝 z)) :
     Tendsto (fun x => exp (f x)) l (𝓝 (exp z)) :=
   (continuous_exp.Tendsto _).comp hf
@@ -97,19 +127,43 @@ theorem Filter.Tendsto.cexp {l : Filter Ξ±} {f : Ξ± β†’ β„‚} {z : β„‚} (hf : Ten
 
 variable [TopologicalSpace Ξ±] {f : Ξ± β†’ β„‚} {s : Set Ξ±} {x : Ξ±}
 
+/- warning: continuous_within_at.cexp -> ContinuousWithinAt.cexp is a dubious translation:
+lean 3 declaration is
+  forall {Ξ± : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} Ξ±] {f : Ξ± -> Complex} {s : Set.{u1} Ξ±} {x : Ξ±}, (ContinuousWithinAt.{u1, 0} Ξ± Complex _inst_1 (UniformSpace.toTopologicalSpace.{0} Complex (PseudoMetricSpace.toUniformSpace.{0} Complex (SeminormedRing.toPseudoMetricSpace.{0} Complex (SeminormedCommRing.toSemiNormedRing.{0} Complex (NormedCommRing.toSeminormedCommRing.{0} Complex (NormedField.toNormedCommRing.{0} Complex Complex.normedField)))))) f s x) -> (ContinuousWithinAt.{u1, 0} Ξ± Complex _inst_1 (UniformSpace.toTopologicalSpace.{0} Complex (PseudoMetricSpace.toUniformSpace.{0} Complex (SeminormedRing.toPseudoMetricSpace.{0} Complex (SeminormedCommRing.toSemiNormedRing.{0} Complex (NormedCommRing.toSeminormedCommRing.{0} Complex (NormedField.toNormedCommRing.{0} Complex Complex.normedField)))))) (fun (y : Ξ±) => Complex.exp (f y)) s x)
+but is expected to have type
+  forall {Ξ± : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} Ξ±] {f : Ξ± -> Complex} {s : Set.{u1} Ξ±} {x : Ξ±}, (ContinuousWithinAt.{u1, 0} Ξ± Complex _inst_1 (UniformSpace.toTopologicalSpace.{0} Complex (PseudoMetricSpace.toUniformSpace.{0} Complex (SeminormedRing.toPseudoMetricSpace.{0} Complex (SeminormedCommRing.toSeminormedRing.{0} Complex (NormedCommRing.toSeminormedCommRing.{0} Complex (NormedField.toNormedCommRing.{0} Complex Complex.instNormedFieldComplex)))))) f s x) -> (ContinuousWithinAt.{u1, 0} Ξ± Complex _inst_1 (UniformSpace.toTopologicalSpace.{0} Complex (PseudoMetricSpace.toUniformSpace.{0} Complex (SeminormedRing.toPseudoMetricSpace.{0} Complex (SeminormedCommRing.toSeminormedRing.{0} Complex (NormedCommRing.toSeminormedCommRing.{0} Complex (NormedField.toNormedCommRing.{0} Complex Complex.instNormedFieldComplex)))))) (fun (y : Ξ±) => Complex.exp (f y)) s x)
+Case conversion may be inaccurate. Consider using '#align continuous_within_at.cexp ContinuousWithinAt.cexpβ‚“'. -/
 theorem ContinuousWithinAt.cexp (h : ContinuousWithinAt f s x) :
     ContinuousWithinAt (fun y => exp (f y)) s x :=
   h.cexp
 #align continuous_within_at.cexp ContinuousWithinAt.cexp
 
+/- warning: continuous_at.cexp -> ContinuousAt.cexp is a dubious translation:
+lean 3 declaration is
+  forall {Ξ± : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} Ξ±] {f : Ξ± -> Complex} {x : Ξ±}, (ContinuousAt.{u1, 0} Ξ± Complex _inst_1 (UniformSpace.toTopologicalSpace.{0} Complex (PseudoMetricSpace.toUniformSpace.{0} Complex (SeminormedRing.toPseudoMetricSpace.{0} Complex (SeminormedCommRing.toSemiNormedRing.{0} Complex (NormedCommRing.toSeminormedCommRing.{0} Complex (NormedField.toNormedCommRing.{0} Complex Complex.normedField)))))) f x) -> (ContinuousAt.{u1, 0} Ξ± Complex _inst_1 (UniformSpace.toTopologicalSpace.{0} Complex (PseudoMetricSpace.toUniformSpace.{0} Complex (SeminormedRing.toPseudoMetricSpace.{0} Complex (SeminormedCommRing.toSemiNormedRing.{0} Complex (NormedCommRing.toSeminormedCommRing.{0} Complex (NormedField.toNormedCommRing.{0} Complex Complex.normedField)))))) (fun (y : Ξ±) => Complex.exp (f y)) x)
+but is expected to have type
+  forall {Ξ± : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} Ξ±] {f : Ξ± -> Complex} {x : Ξ±}, (ContinuousAt.{u1, 0} Ξ± Complex _inst_1 (UniformSpace.toTopologicalSpace.{0} Complex (PseudoMetricSpace.toUniformSpace.{0} Complex (SeminormedRing.toPseudoMetricSpace.{0} Complex (SeminormedCommRing.toSeminormedRing.{0} Complex (NormedCommRing.toSeminormedCommRing.{0} Complex (NormedField.toNormedCommRing.{0} Complex Complex.instNormedFieldComplex)))))) f x) -> (ContinuousAt.{u1, 0} Ξ± Complex _inst_1 (UniformSpace.toTopologicalSpace.{0} Complex (PseudoMetricSpace.toUniformSpace.{0} Complex (SeminormedRing.toPseudoMetricSpace.{0} Complex (SeminormedCommRing.toSeminormedRing.{0} Complex (NormedCommRing.toSeminormedCommRing.{0} Complex (NormedField.toNormedCommRing.{0} Complex Complex.instNormedFieldComplex)))))) (fun (y : Ξ±) => Complex.exp (f y)) x)
+Case conversion may be inaccurate. Consider using '#align continuous_at.cexp ContinuousAt.cexpβ‚“'. -/
 theorem ContinuousAt.cexp (h : ContinuousAt f x) : ContinuousAt (fun y => exp (f y)) x :=
   h.cexp
 #align continuous_at.cexp ContinuousAt.cexp
 
+/- warning: continuous_on.cexp -> ContinuousOn.cexp is a dubious translation:
+lean 3 declaration is
+  forall {Ξ± : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} Ξ±] {f : Ξ± -> Complex} {s : Set.{u1} Ξ±}, (ContinuousOn.{u1, 0} Ξ± Complex _inst_1 (UniformSpace.toTopologicalSpace.{0} Complex (PseudoMetricSpace.toUniformSpace.{0} Complex (SeminormedRing.toPseudoMetricSpace.{0} Complex (SeminormedCommRing.toSemiNormedRing.{0} Complex (NormedCommRing.toSeminormedCommRing.{0} Complex (NormedField.toNormedCommRing.{0} Complex Complex.normedField)))))) f s) -> (ContinuousOn.{u1, 0} Ξ± Complex _inst_1 (UniformSpace.toTopologicalSpace.{0} Complex (PseudoMetricSpace.toUniformSpace.{0} Complex (SeminormedRing.toPseudoMetricSpace.{0} Complex (SeminormedCommRing.toSemiNormedRing.{0} Complex (NormedCommRing.toSeminormedCommRing.{0} Complex (NormedField.toNormedCommRing.{0} Complex Complex.normedField)))))) (fun (y : Ξ±) => Complex.exp (f y)) s)
+but is expected to have type
+  forall {Ξ± : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} Ξ±] {f : Ξ± -> Complex} {s : Set.{u1} Ξ±}, (ContinuousOn.{u1, 0} Ξ± Complex _inst_1 (UniformSpace.toTopologicalSpace.{0} Complex (PseudoMetricSpace.toUniformSpace.{0} Complex (SeminormedRing.toPseudoMetricSpace.{0} Complex (SeminormedCommRing.toSeminormedRing.{0} Complex (NormedCommRing.toSeminormedCommRing.{0} Complex (NormedField.toNormedCommRing.{0} Complex Complex.instNormedFieldComplex)))))) f s) -> (ContinuousOn.{u1, 0} Ξ± Complex _inst_1 (UniformSpace.toTopologicalSpace.{0} Complex (PseudoMetricSpace.toUniformSpace.{0} Complex (SeminormedRing.toPseudoMetricSpace.{0} Complex (SeminormedCommRing.toSeminormedRing.{0} Complex (NormedCommRing.toSeminormedCommRing.{0} Complex (NormedField.toNormedCommRing.{0} Complex Complex.instNormedFieldComplex)))))) (fun (y : Ξ±) => Complex.exp (f y)) s)
+Case conversion may be inaccurate. Consider using '#align continuous_on.cexp ContinuousOn.cexpβ‚“'. -/
 theorem ContinuousOn.cexp (h : ContinuousOn f s) : ContinuousOn (fun y => exp (f y)) s :=
   fun x hx => (h x hx).cexp
 #align continuous_on.cexp ContinuousOn.cexp
 
+/- warning: continuous.cexp -> Continuous.cexp is a dubious translation:
+lean 3 declaration is
+  forall {Ξ± : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} Ξ±] {f : Ξ± -> Complex}, (Continuous.{u1, 0} Ξ± Complex _inst_1 (UniformSpace.toTopologicalSpace.{0} Complex (PseudoMetricSpace.toUniformSpace.{0} Complex (SeminormedRing.toPseudoMetricSpace.{0} Complex (SeminormedCommRing.toSemiNormedRing.{0} Complex (NormedCommRing.toSeminormedCommRing.{0} Complex (NormedField.toNormedCommRing.{0} Complex Complex.normedField)))))) f) -> (Continuous.{u1, 0} Ξ± Complex _inst_1 (UniformSpace.toTopologicalSpace.{0} Complex (PseudoMetricSpace.toUniformSpace.{0} Complex (SeminormedRing.toPseudoMetricSpace.{0} Complex (SeminormedCommRing.toSemiNormedRing.{0} Complex (NormedCommRing.toSeminormedCommRing.{0} Complex (NormedField.toNormedCommRing.{0} Complex Complex.normedField)))))) (fun (y : Ξ±) => Complex.exp (f y)))
+but is expected to have type
+  forall {Ξ± : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} Ξ±] {f : Ξ± -> Complex}, (Continuous.{u1, 0} Ξ± Complex _inst_1 (UniformSpace.toTopologicalSpace.{0} Complex (PseudoMetricSpace.toUniformSpace.{0} Complex (SeminormedRing.toPseudoMetricSpace.{0} Complex (SeminormedCommRing.toSeminormedRing.{0} Complex (NormedCommRing.toSeminormedCommRing.{0} Complex (NormedField.toNormedCommRing.{0} Complex Complex.instNormedFieldComplex)))))) f) -> (Continuous.{u1, 0} Ξ± Complex _inst_1 (UniformSpace.toTopologicalSpace.{0} Complex (PseudoMetricSpace.toUniformSpace.{0} Complex (SeminormedRing.toPseudoMetricSpace.{0} Complex (SeminormedCommRing.toSeminormedRing.{0} Complex (NormedCommRing.toSeminormedCommRing.{0} Complex (NormedField.toNormedCommRing.{0} Complex Complex.instNormedFieldComplex)))))) (fun (y : Ξ±) => Complex.exp (f y)))
+Case conversion may be inaccurate. Consider using '#align continuous.cexp Continuous.cexpβ‚“'. -/
 theorem Continuous.cexp (h : Continuous f) : Continuous fun y => exp (f y) :=
   continuous_iff_continuousAt.2 fun x => h.ContinuousAt.cexp
 #align continuous.cexp Continuous.cexp
@@ -118,14 +172,18 @@ end ComplexContinuousExpComp
 
 namespace Real
 
+#print Real.continuous_exp /-
 @[continuity]
 theorem continuous_exp : Continuous exp :=
   Complex.continuous_re.comp Complex.continuous_ofReal.cexp
 #align real.continuous_exp Real.continuous_exp
+-/
 
+#print Real.continuousOn_exp /-
 theorem continuousOn_exp {s : Set ℝ} : ContinuousOn exp s :=
   continuous_exp.ContinuousOn
 #align real.continuous_on_exp Real.continuousOn_exp
+-/
 
 end Real
 
@@ -135,29 +193,39 @@ variable {Ξ± : Type _}
 
 open Real
 
+#print Filter.Tendsto.exp /-
 theorem Filter.Tendsto.exp {l : Filter Ξ±} {f : Ξ± β†’ ℝ} {z : ℝ} (hf : Tendsto f l (𝓝 z)) :
     Tendsto (fun x => exp (f x)) l (𝓝 (exp z)) :=
   (continuous_exp.Tendsto _).comp hf
 #align filter.tendsto.exp Filter.Tendsto.exp
+-/
 
 variable [TopologicalSpace Ξ±] {f : Ξ± β†’ ℝ} {s : Set Ξ±} {x : Ξ±}
 
+#print ContinuousWithinAt.exp /-
 theorem ContinuousWithinAt.exp (h : ContinuousWithinAt f s x) :
     ContinuousWithinAt (fun y => exp (f y)) s x :=
   h.exp
 #align continuous_within_at.exp ContinuousWithinAt.exp
+-/
 
+#print ContinuousAt.exp /-
 theorem ContinuousAt.exp (h : ContinuousAt f x) : ContinuousAt (fun y => exp (f y)) x :=
   h.exp
 #align continuous_at.exp ContinuousAt.exp
+-/
 
+#print ContinuousOn.exp /-
 theorem ContinuousOn.exp (h : ContinuousOn f s) : ContinuousOn (fun y => exp (f y)) s := fun x hx =>
   (h x hx).exp
 #align continuous_on.exp ContinuousOn.exp
+-/
 
+#print Continuous.exp /-
 theorem Continuous.exp (h : Continuous f) : Continuous fun y => exp (f y) :=
   continuous_iff_continuousAt.2 fun x => h.ContinuousAt.exp
 #align continuous.exp Continuous.exp
+-/
 
 end RealContinuousExpComp
 
@@ -165,10 +233,17 @@ namespace Real
 
 variable {Ξ± : Type _} {x y z : ℝ} {l : Filter Ξ±}
 
+/- warning: real.exp_half -> Real.exp_half is a dubious translation:
+lean 3 declaration is
+  forall (x : Real), Eq.{1} Real (Real.exp (HDiv.hDiv.{0, 0, 0} Real Real Real (instHDiv.{0} Real (DivInvMonoid.toHasDiv.{0} Real (DivisionRing.toDivInvMonoid.{0} Real Real.divisionRing))) x (OfNat.ofNat.{0} Real 2 (OfNat.mk.{0} Real 2 (bit0.{0} Real Real.hasAdd (One.one.{0} Real Real.hasOne)))))) (Real.sqrt (Real.exp x))
+but is expected to have type
+  forall (x : Real), Eq.{1} Real (Real.exp (HDiv.hDiv.{0, 0, 0} Real Real Real (instHDiv.{0} Real (LinearOrderedField.toDiv.{0} Real Real.instLinearOrderedFieldReal)) x (OfNat.ofNat.{0} Real 2 (instOfNat.{0} Real 2 Real.natCast (instAtLeastTwoHAddNatInstHAddInstAddNatOfNat (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0))))))) (Real.sqrt (Real.exp x))
+Case conversion may be inaccurate. Consider using '#align real.exp_half Real.exp_halfβ‚“'. -/
 theorem exp_half (x : ℝ) : exp (x / 2) = sqrt (exp x) := by
   rw [eq_comm, sqrt_eq_iff_sq_eq, sq, ← exp_add, add_halves] <;> exact (exp_pos _).le
 #align real.exp_half Real.exp_half
 
+#print Real.tendsto_exp_atTop /-
 /-- The real exponential function tends to `+∞` at `+∞`. -/
 theorem tendsto_exp_atTop : Tendsto exp atTop atTop :=
   by
@@ -177,13 +252,26 @@ theorem tendsto_exp_atTop : Tendsto exp atTop atTop :=
   have B : βˆ€αΆ  x in at_top, x + 1 ≀ exp x := eventually_at_top.2 ⟨0, fun x hx => add_one_le_exp x⟩
   exact tendsto_at_top_mono' at_top B A
 #align real.tendsto_exp_at_top Real.tendsto_exp_atTop
+-/
 
+/- warning: real.tendsto_exp_neg_at_top_nhds_0 -> Real.tendsto_exp_neg_atTop_nhds_0 is a dubious translation:
+lean 3 declaration is
+  Filter.Tendsto.{0, 0} Real Real (fun (x : Real) => Real.exp (Neg.neg.{0} Real Real.hasNeg x)) (Filter.atTop.{0} Real Real.preorder) (nhds.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))
+but is expected to have type
+  Filter.Tendsto.{0, 0} Real Real (fun (x : Real) => Real.exp (Neg.neg.{0} Real Real.instNegReal x)) (Filter.atTop.{0} Real Real.instPreorderReal) (nhds.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))
+Case conversion may be inaccurate. Consider using '#align real.tendsto_exp_neg_at_top_nhds_0 Real.tendsto_exp_neg_atTop_nhds_0β‚“'. -/
 /-- The real exponential function tends to `0` at `-∞` or, equivalently, `exp(-x)` tends to `0`
 at `+∞` -/
 theorem tendsto_exp_neg_atTop_nhds_0 : Tendsto (fun x => exp (-x)) atTop (𝓝 0) :=
   (tendsto_inv_atTop_zero.comp tendsto_exp_atTop).congr fun x => (exp_neg x).symm
 #align real.tendsto_exp_neg_at_top_nhds_0 Real.tendsto_exp_neg_atTop_nhds_0
 
+/- warning: real.tendsto_exp_nhds_0_nhds_1 -> Real.tendsto_exp_nhds_0_nhds_1 is a dubious translation:
+lean 3 declaration is
+  Filter.Tendsto.{0, 0} Real Real Real.exp (nhds.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))) (nhds.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (OfNat.ofNat.{0} Real 1 (OfNat.mk.{0} Real 1 (One.one.{0} Real Real.hasOne))))
+but is expected to have type
+  Filter.Tendsto.{0, 0} Real Real Real.exp (nhds.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))) (nhds.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal)))
+Case conversion may be inaccurate. Consider using '#align real.tendsto_exp_nhds_0_nhds_1 Real.tendsto_exp_nhds_0_nhds_1β‚“'. -/
 /-- The real exponential function tends to `1` at `0`. -/
 theorem tendsto_exp_nhds_0_nhds_1 : Tendsto exp (𝓝 0) (𝓝 1) :=
   by
@@ -191,27 +279,57 @@ theorem tendsto_exp_nhds_0_nhds_1 : Tendsto exp (𝓝 0) (𝓝 1) :=
   simp
 #align real.tendsto_exp_nhds_0_nhds_1 Real.tendsto_exp_nhds_0_nhds_1
 
+/- warning: real.tendsto_exp_at_bot -> Real.tendsto_exp_atBot is a dubious translation:
+lean 3 declaration is
+  Filter.Tendsto.{0, 0} Real Real Real.exp (Filter.atBot.{0} Real Real.preorder) (nhds.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))
+but is expected to have type
+  Filter.Tendsto.{0, 0} Real Real Real.exp (Filter.atBot.{0} Real Real.instPreorderReal) (nhds.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))
+Case conversion may be inaccurate. Consider using '#align real.tendsto_exp_at_bot Real.tendsto_exp_atBotβ‚“'. -/
 theorem tendsto_exp_atBot : Tendsto exp atBot (𝓝 0) :=
   (tendsto_exp_neg_atTop_nhds_0.comp tendsto_neg_atBot_atTop).congr fun x =>
     congr_arg exp <| neg_neg x
 #align real.tendsto_exp_at_bot Real.tendsto_exp_atBot
 
+/- warning: real.tendsto_exp_at_bot_nhds_within -> Real.tendsto_exp_atBot_nhdsWithin is a dubious translation:
+lean 3 declaration is
+  Filter.Tendsto.{0, 0} Real Real Real.exp (Filter.atBot.{0} Real Real.preorder) (nhdsWithin.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))))
+but is expected to have type
+  Filter.Tendsto.{0, 0} Real Real Real.exp (Filter.atBot.{0} Real Real.instPreorderReal) (nhdsWithin.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))))
+Case conversion may be inaccurate. Consider using '#align real.tendsto_exp_at_bot_nhds_within Real.tendsto_exp_atBot_nhdsWithinβ‚“'. -/
 theorem tendsto_exp_atBot_nhdsWithin : Tendsto exp atBot (𝓝[>] 0) :=
   tendsto_inf.2 ⟨tendsto_exp_atBot, tendsto_principal.2 <| eventually_of_forall exp_pos⟩
 #align real.tendsto_exp_at_bot_nhds_within Real.tendsto_exp_atBot_nhdsWithin
 
+/- warning: real.is_bounded_under_ge_exp_comp -> Real.isBoundedUnder_ge_exp_comp is a dubious translation:
+lean 3 declaration is
+  forall {Ξ± : Type.{u1}} (l : Filter.{u1} Ξ±) (f : Ξ± -> Real), Filter.IsBoundedUnder.{0, u1} Real Ξ± (GE.ge.{0} Real Real.hasLe) l (fun (x : Ξ±) => Real.exp (f x))
+but is expected to have type
+  forall {Ξ± : Type.{u1}} (l : Filter.{u1} Ξ±) (f : Ξ± -> Real), Filter.IsBoundedUnder.{0, u1} Real Ξ± (fun (x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.1807 : Real) (x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.1809 : Real) => GE.ge.{0} Real Real.instLEReal x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.1807 x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.1809) l (fun (x : Ξ±) => Real.exp (f x))
+Case conversion may be inaccurate. Consider using '#align real.is_bounded_under_ge_exp_comp Real.isBoundedUnder_ge_exp_compβ‚“'. -/
 @[simp]
 theorem isBoundedUnder_ge_exp_comp (l : Filter Ξ±) (f : Ξ± β†’ ℝ) :
     IsBoundedUnder (Β· β‰₯ Β·) l fun x => exp (f x) :=
   isBoundedUnder_of ⟨0, fun x => (exp_pos _).le⟩
 #align real.is_bounded_under_ge_exp_comp Real.isBoundedUnder_ge_exp_comp
 
+/- warning: real.is_bounded_under_le_exp_comp -> Real.isBoundedUnder_le_exp_comp is a dubious translation:
+lean 3 declaration is
+  forall {Ξ± : Type.{u1}} {l : Filter.{u1} Ξ±} {f : Ξ± -> Real}, Iff (Filter.IsBoundedUnder.{0, u1} Real Ξ± (LE.le.{0} Real Real.hasLe) l (fun (x : Ξ±) => Real.exp (f x))) (Filter.IsBoundedUnder.{0, u1} Real Ξ± (LE.le.{0} Real Real.hasLe) l f)
+but is expected to have type
+  forall {Ξ± : Type.{u1}} {l : Filter.{u1} Ξ±} {f : Ξ± -> Real}, Iff (Filter.IsBoundedUnder.{0, u1} Real Ξ± (fun (x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.1869 : Real) (x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.1871 : Real) => LE.le.{0} Real Real.instLEReal x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.1869 x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.1871) l (fun (x : Ξ±) => Real.exp (f x))) (Filter.IsBoundedUnder.{0, u1} Real Ξ± (fun (x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.1894 : Real) (x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.1896 : Real) => LE.le.{0} Real Real.instLEReal x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.1894 x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.1896) l f)
+Case conversion may be inaccurate. Consider using '#align real.is_bounded_under_le_exp_comp Real.isBoundedUnder_le_exp_compβ‚“'. -/
 @[simp]
 theorem isBoundedUnder_le_exp_comp {f : Ξ± β†’ ℝ} :
     (IsBoundedUnder (Β· ≀ Β·) l fun x => exp (f x)) ↔ IsBoundedUnder (Β· ≀ Β·) l f :=
   exp_monotone.isBoundedUnder_le_comp tendsto_exp_atTop
 #align real.is_bounded_under_le_exp_comp Real.isBoundedUnder_le_exp_comp
 
+/- warning: real.tendsto_exp_div_pow_at_top -> Real.tendsto_exp_div_pow_atTop is a dubious translation:
+lean 3 declaration is
+  forall (n : Nat), Filter.Tendsto.{0, 0} Real Real (fun (x : Real) => HDiv.hDiv.{0, 0, 0} Real Real Real (instHDiv.{0} Real (DivInvMonoid.toHasDiv.{0} Real (DivisionRing.toDivInvMonoid.{0} Real Real.divisionRing))) (Real.exp x) (HPow.hPow.{0, 0, 0} Real Nat Real (instHPow.{0, 0} Real Nat (Monoid.Pow.{0} Real Real.monoid)) x n)) (Filter.atTop.{0} Real Real.preorder) (Filter.atTop.{0} Real Real.preorder)
+but is expected to have type
+  forall (n : Nat), Filter.Tendsto.{0, 0} Real Real (fun (x : Real) => HDiv.hDiv.{0, 0, 0} Real Real Real (instHDiv.{0} Real (LinearOrderedField.toDiv.{0} Real Real.instLinearOrderedFieldReal)) (Real.exp x) (HPow.hPow.{0, 0, 0} Real Nat Real (instHPow.{0, 0} Real Nat (Monoid.Pow.{0} Real Real.instMonoidReal)) x n)) (Filter.atTop.{0} Real Real.instPreorderReal) (Filter.atTop.{0} Real Real.instPreorderReal)
+Case conversion may be inaccurate. Consider using '#align real.tendsto_exp_div_pow_at_top Real.tendsto_exp_div_pow_atTopβ‚“'. -/
 /-- The function `exp(x)/x^n` tends to `+∞` at `+∞`, for any natural number `n` -/
 theorem tendsto_exp_div_pow_atTop (n : β„•) : Tendsto (fun x => exp x / x ^ n) atTop atTop :=
   by
@@ -237,6 +355,12 @@ theorem tendsto_exp_div_pow_atTop (n : β„•) : Tendsto (fun x => exp x / x ^ n) a
     
 #align real.tendsto_exp_div_pow_at_top Real.tendsto_exp_div_pow_atTop
 
+/- warning: real.tendsto_pow_mul_exp_neg_at_top_nhds_0 -> Real.tendsto_pow_mul_exp_neg_atTop_nhds_0 is a dubious translation:
+lean 3 declaration is
+  forall (n : Nat), Filter.Tendsto.{0, 0} Real Real (fun (x : Real) => HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) (HPow.hPow.{0, 0, 0} Real Nat Real (instHPow.{0, 0} Real Nat (Monoid.Pow.{0} Real Real.monoid)) x n) (Real.exp (Neg.neg.{0} Real Real.hasNeg x))) (Filter.atTop.{0} Real Real.preorder) (nhds.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))
+but is expected to have type
+  forall (n : Nat), Filter.Tendsto.{0, 0} Real Real (fun (x : Real) => HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) (HPow.hPow.{0, 0, 0} Real Nat Real (instHPow.{0, 0} Real Nat (Monoid.Pow.{0} Real Real.instMonoidReal)) x n) (Real.exp (Neg.neg.{0} Real Real.instNegReal x))) (Filter.atTop.{0} Real Real.instPreorderReal) (nhds.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))
+Case conversion may be inaccurate. Consider using '#align real.tendsto_pow_mul_exp_neg_at_top_nhds_0 Real.tendsto_pow_mul_exp_neg_atTop_nhds_0β‚“'. -/
 /-- The function `x^n * exp(-x)` tends to `0` at `+∞`, for any natural number `n`. -/
 theorem tendsto_pow_mul_exp_neg_atTop_nhds_0 (n : β„•) :
     Tendsto (fun x => x ^ n * exp (-x)) atTop (𝓝 0) :=
@@ -244,6 +368,12 @@ theorem tendsto_pow_mul_exp_neg_atTop_nhds_0 (n : β„•) :
     rw [comp_app, inv_eq_one_div, div_div_eq_mul_div, one_mul, div_eq_mul_inv, exp_neg]
 #align real.tendsto_pow_mul_exp_neg_at_top_nhds_0 Real.tendsto_pow_mul_exp_neg_atTop_nhds_0
 
+/- warning: real.tendsto_mul_exp_add_div_pow_at_top -> Real.tendsto_mul_exp_add_div_pow_atTop is a dubious translation:
+lean 3 declaration is
+  forall (b : Real) (c : Real) (n : Nat), (LT.lt.{0} Real Real.hasLt (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) b) -> (Filter.Tendsto.{0, 0} Real Real (fun (x : Real) => HDiv.hDiv.{0, 0, 0} Real Real Real (instHDiv.{0} Real (DivInvMonoid.toHasDiv.{0} Real (DivisionRing.toDivInvMonoid.{0} Real Real.divisionRing))) (HAdd.hAdd.{0, 0, 0} Real Real Real (instHAdd.{0} Real Real.hasAdd) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) b (Real.exp x)) c) (HPow.hPow.{0, 0, 0} Real Nat Real (instHPow.{0, 0} Real Nat (Monoid.Pow.{0} Real Real.monoid)) x n)) (Filter.atTop.{0} Real Real.preorder) (Filter.atTop.{0} Real Real.preorder))
+but is expected to have type
+  forall (b : Real) (c : Real) (n : Nat), (LT.lt.{0} Real Real.instLTReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) b) -> (Filter.Tendsto.{0, 0} Real Real (fun (x : Real) => HDiv.hDiv.{0, 0, 0} Real Real Real (instHDiv.{0} Real (LinearOrderedField.toDiv.{0} Real Real.instLinearOrderedFieldReal)) (HAdd.hAdd.{0, 0, 0} Real Real Real (instHAdd.{0} Real Real.instAddReal) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) b (Real.exp x)) c) (HPow.hPow.{0, 0, 0} Real Nat Real (instHPow.{0, 0} Real Nat (Monoid.Pow.{0} Real Real.instMonoidReal)) x n)) (Filter.atTop.{0} Real Real.instPreorderReal) (Filter.atTop.{0} Real Real.instPreorderReal))
+Case conversion may be inaccurate. Consider using '#align real.tendsto_mul_exp_add_div_pow_at_top Real.tendsto_mul_exp_add_div_pow_atTopβ‚“'. -/
 /-- The function `(b * exp x + c) / (x ^ n)` tends to `+∞` at `+∞`, for any natural number
 `n` and any real numbers `b` and `c` such that `b` is positive. -/
 theorem tendsto_mul_exp_add_div_pow_atTop (b c : ℝ) (n : β„•) (hb : 0 < b) :
@@ -258,6 +388,12 @@ theorem tendsto_mul_exp_add_div_pow_atTop (b c : ℝ) (n : β„•) (hb : 0 < b) :
       (tendsto_const_nhds.div_at_top (tendsto_pow_at_top hn))
 #align real.tendsto_mul_exp_add_div_pow_at_top Real.tendsto_mul_exp_add_div_pow_atTop
 
+/- warning: real.tendsto_div_pow_mul_exp_add_at_top -> Real.tendsto_div_pow_mul_exp_add_atTop is a dubious translation:
+lean 3 declaration is
+  forall (b : Real) (c : Real) (n : Nat), (Ne.{1} Real (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) b) -> (Filter.Tendsto.{0, 0} Real Real (fun (x : Real) => HDiv.hDiv.{0, 0, 0} Real Real Real (instHDiv.{0} Real (DivInvMonoid.toHasDiv.{0} Real (DivisionRing.toDivInvMonoid.{0} Real Real.divisionRing))) (HPow.hPow.{0, 0, 0} Real Nat Real (instHPow.{0, 0} Real Nat (Monoid.Pow.{0} Real Real.monoid)) x n) (HAdd.hAdd.{0, 0, 0} Real Real Real (instHAdd.{0} Real Real.hasAdd) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) b (Real.exp x)) c)) (Filter.atTop.{0} Real Real.preorder) (nhds.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))))
+but is expected to have type
+  forall (b : Real) (c : Real) (n : Nat), (Ne.{1} Real (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) b) -> (Filter.Tendsto.{0, 0} Real Real (fun (x : Real) => HDiv.hDiv.{0, 0, 0} Real Real Real (instHDiv.{0} Real (LinearOrderedField.toDiv.{0} Real Real.instLinearOrderedFieldReal)) (HPow.hPow.{0, 0, 0} Real Nat Real (instHPow.{0, 0} Real Nat (Monoid.Pow.{0} Real Real.instMonoidReal)) x n) (HAdd.hAdd.{0, 0, 0} Real Real Real (instHAdd.{0} Real Real.instAddReal) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) b (Real.exp x)) c)) (Filter.atTop.{0} Real Real.instPreorderReal) (nhds.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))))
+Case conversion may be inaccurate. Consider using '#align real.tendsto_div_pow_mul_exp_add_at_top Real.tendsto_div_pow_mul_exp_add_atTopβ‚“'. -/
 /-- The function `(x ^ n) / (b * exp x + c)` tends to `0` at `+∞`, for any natural number
 `n` and any real numbers `b` and `c` such that `b` is nonzero. -/
 theorem tendsto_div_pow_mul_exp_add_atTop (b c : ℝ) (n : β„•) (hb : 0 β‰  b) :
@@ -278,6 +414,12 @@ theorem tendsto_div_pow_mul_exp_add_atTop (b c : ℝ) (n : β„•) (hb : 0 β‰  b) :
     Β· exact neg_zero.symm
 #align real.tendsto_div_pow_mul_exp_add_at_top Real.tendsto_div_pow_mul_exp_add_atTop
 
+/- warning: real.exp_order_iso -> Real.expOrderIso is a dubious translation:
+lean 3 declaration is
+  OrderIso.{0, 0} Real (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) Real.hasLe (Subtype.hasLe.{0} Real Real.hasLe (fun (x : Real) => Membership.Mem.{0, 0} Real (Set.{0} Real) (Set.hasMem.{0} Real) x (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))))
+but is expected to have type
+  OrderIso.{0, 0} Real (Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) Real.instLEReal (Subtype.le.{0} Real Real.instLEReal (fun (x : Real) => Membership.mem.{0, 0} Real (Set.{0} Real) (Set.instMembershipSet.{0} Real) x (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))))
+Case conversion may be inaccurate. Consider using '#align real.exp_order_iso Real.expOrderIsoβ‚“'. -/
 /-- `real.exp` as an order isomorphism between `ℝ` and `(0, +∞)`. -/
 def expOrderIso : ℝ ≃o Ioi (0 : ℝ) :=
   StrictMono.orderIsoOfSurjective _ (exp_strictMono.codRestrict exp_pos) <|
@@ -286,73 +428,141 @@ def expOrderIso : ℝ ≃o Ioi (0 : ℝ) :=
       (by simp [tendsto_exp_at_bot_nhds_within])
 #align real.exp_order_iso Real.expOrderIso
 
+/- warning: real.coe_exp_order_iso_apply -> Real.coe_expOrderIso_apply is a dubious translation:
+lean 3 declaration is
+  forall (x : Real), Eq.{1} Real ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) Real (HasLiftT.mk.{1, 1} (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) Real (CoeTCβ‚“.coe.{1, 1} (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) Real (coeBase.{1, 1} (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) Real (coeSubtype.{1} Real (fun (x : Real) => Membership.Mem.{0, 0} Real (Set.{0} Real) (Set.hasMem.{0} Real) x (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))))))) (coeFn.{1, 1} (OrderIso.{0, 0} Real (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) Real.hasLe (Subtype.hasLe.{0} Real Real.hasLe (fun (x : Real) => Membership.Mem.{0, 0} Real (Set.{0} Real) (Set.hasMem.{0} Real) x (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))))) (fun (_x : RelIso.{0, 0} Real (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) (LE.le.{0} Real Real.hasLe) (LE.le.{0} (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) (Subtype.hasLe.{0} Real Real.hasLe (fun (x : Real) => Membership.Mem.{0, 0} Real (Set.{0} Real) (Set.hasMem.{0} Real) x (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))))))) => Real -> (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))))) (RelIso.hasCoeToFun.{0, 0} Real (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) (LE.le.{0} Real Real.hasLe) (LE.le.{0} (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) (Subtype.hasLe.{0} Real Real.hasLe (fun (x : Real) => Membership.Mem.{0, 0} Real (Set.{0} Real) (Set.hasMem.{0} Real) x (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))))))) Real.expOrderIso x)) (Real.exp x)
+but is expected to have type
+  forall (x : Real), Eq.{1} Real (Subtype.val.{1} Real (fun (x : Real) => Membership.mem.{0, 0} Real (Set.{0} Real) (Set.instMembershipSet.{0} Real) x (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (FunLike.coe.{1, 1, 1} (RelIso.{0, 0} Real (Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1281 : Real) (x._@.Mathlib.Order.Hom.Basic._hyg.1283 : Real) => LE.le.{0} Real Real.instLEReal x._@.Mathlib.Order.Hom.Basic._hyg.1281 x._@.Mathlib.Order.Hom.Basic._hyg.1283) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1296 : Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (x._@.Mathlib.Order.Hom.Basic._hyg.1298 : Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) => LE.le.{0} (Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (Subtype.le.{0} Real Real.instLEReal (fun (x : Real) => Membership.mem.{0, 0} Real (Set.{0} Real) (Set.instMembershipSet.{0} Real) x (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))))) x._@.Mathlib.Order.Hom.Basic._hyg.1296 x._@.Mathlib.Order.Hom.Basic._hyg.1298)) Real (fun (_x : Real) => Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (RelHomClass.toFunLike.{0, 0, 0} (RelIso.{0, 0} Real (Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1281 : Real) (x._@.Mathlib.Order.Hom.Basic._hyg.1283 : Real) => LE.le.{0} Real Real.instLEReal x._@.Mathlib.Order.Hom.Basic._hyg.1281 x._@.Mathlib.Order.Hom.Basic._hyg.1283) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1296 : Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (x._@.Mathlib.Order.Hom.Basic._hyg.1298 : Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) => LE.le.{0} (Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (Subtype.le.{0} Real Real.instLEReal (fun (x : Real) => Membership.mem.{0, 0} Real (Set.{0} Real) (Set.instMembershipSet.{0} Real) x (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))))) x._@.Mathlib.Order.Hom.Basic._hyg.1296 x._@.Mathlib.Order.Hom.Basic._hyg.1298)) Real (Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1281 : Real) (x._@.Mathlib.Order.Hom.Basic._hyg.1283 : Real) => LE.le.{0} Real Real.instLEReal x._@.Mathlib.Order.Hom.Basic._hyg.1281 x._@.Mathlib.Order.Hom.Basic._hyg.1283) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1296 : Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (x._@.Mathlib.Order.Hom.Basic._hyg.1298 : Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) => LE.le.{0} (Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (Subtype.le.{0} Real Real.instLEReal (fun (x : Real) => Membership.mem.{0, 0} Real (Set.{0} Real) (Set.instMembershipSet.{0} Real) x (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))))) x._@.Mathlib.Order.Hom.Basic._hyg.1296 x._@.Mathlib.Order.Hom.Basic._hyg.1298) (RelIso.instRelHomClassRelIso.{0, 0} Real (Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1281 : Real) (x._@.Mathlib.Order.Hom.Basic._hyg.1283 : Real) => LE.le.{0} Real Real.instLEReal x._@.Mathlib.Order.Hom.Basic._hyg.1281 x._@.Mathlib.Order.Hom.Basic._hyg.1283) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1296 : Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (x._@.Mathlib.Order.Hom.Basic._hyg.1298 : Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) => LE.le.{0} (Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (Subtype.le.{0} Real Real.instLEReal (fun (x : Real) => Membership.mem.{0, 0} Real (Set.{0} Real) (Set.instMembershipSet.{0} Real) x (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))))) x._@.Mathlib.Order.Hom.Basic._hyg.1296 x._@.Mathlib.Order.Hom.Basic._hyg.1298))) Real.expOrderIso x)) (Real.exp x)
+Case conversion may be inaccurate. Consider using '#align real.coe_exp_order_iso_apply Real.coe_expOrderIso_applyβ‚“'. -/
 @[simp]
 theorem coe_expOrderIso_apply (x : ℝ) : (expOrderIso x : ℝ) = exp x :=
   rfl
 #align real.coe_exp_order_iso_apply Real.coe_expOrderIso_apply
 
+/- warning: real.coe_comp_exp_order_iso -> Real.coe_comp_expOrderIso is a dubious translation:
+lean 3 declaration is
+  Eq.{1} (Real -> Real) (Function.comp.{1, 1, 1} Real (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) Real ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) Real (HasLiftT.mk.{1, 1} (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) Real (CoeTCβ‚“.coe.{1, 1} (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) Real (coeBase.{1, 1} (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) Real (coeSubtype.{1} Real (fun (x : Real) => Membership.Mem.{0, 0} Real (Set.{0} Real) (Set.hasMem.{0} Real) x (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))))))))) (coeFn.{1, 1} (OrderIso.{0, 0} Real (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) Real.hasLe (Subtype.hasLe.{0} Real Real.hasLe (fun (x : Real) => Membership.Mem.{0, 0} Real (Set.{0} Real) (Set.hasMem.{0} Real) x (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))))) (fun (_x : RelIso.{0, 0} Real (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) (LE.le.{0} Real Real.hasLe) (LE.le.{0} (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) (Subtype.hasLe.{0} Real Real.hasLe (fun (x : Real) => Membership.Mem.{0, 0} Real (Set.{0} Real) (Set.hasMem.{0} Real) x (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))))))) => Real -> (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))))) (RelIso.hasCoeToFun.{0, 0} Real (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) (LE.le.{0} Real Real.hasLe) (LE.le.{0} (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) (Subtype.hasLe.{0} Real Real.hasLe (fun (x : Real) => Membership.Mem.{0, 0} Real (Set.{0} Real) (Set.hasMem.{0} Real) x (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))))))) Real.expOrderIso)) Real.exp
+but is expected to have type
+  Eq.{1} (Real -> Real) (Function.comp.{1, 1, 1} Real (Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) Real (Subtype.val.{1} Real (fun (x : Real) => Membership.mem.{0, 0} Real (Set.{0} Real) (Set.instMembershipSet.{0} Real) x (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))))) (FunLike.coe.{1, 1, 1} (RelIso.{0, 0} Real (Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1281 : Real) (x._@.Mathlib.Order.Hom.Basic._hyg.1283 : Real) => LE.le.{0} Real Real.instLEReal x._@.Mathlib.Order.Hom.Basic._hyg.1281 x._@.Mathlib.Order.Hom.Basic._hyg.1283) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1296 : Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (x._@.Mathlib.Order.Hom.Basic._hyg.1298 : Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) => LE.le.{0} (Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (Subtype.le.{0} Real Real.instLEReal (fun (x : Real) => Membership.mem.{0, 0} Real (Set.{0} Real) (Set.instMembershipSet.{0} Real) x (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))))) x._@.Mathlib.Order.Hom.Basic._hyg.1296 x._@.Mathlib.Order.Hom.Basic._hyg.1298)) Real (fun (_x : Real) => Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (RelHomClass.toFunLike.{0, 0, 0} (RelIso.{0, 0} Real (Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1281 : Real) (x._@.Mathlib.Order.Hom.Basic._hyg.1283 : Real) => LE.le.{0} Real Real.instLEReal x._@.Mathlib.Order.Hom.Basic._hyg.1281 x._@.Mathlib.Order.Hom.Basic._hyg.1283) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1296 : Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (x._@.Mathlib.Order.Hom.Basic._hyg.1298 : Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) => LE.le.{0} (Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (Subtype.le.{0} Real Real.instLEReal (fun (x : Real) => Membership.mem.{0, 0} Real (Set.{0} Real) (Set.instMembershipSet.{0} Real) x (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))))) x._@.Mathlib.Order.Hom.Basic._hyg.1296 x._@.Mathlib.Order.Hom.Basic._hyg.1298)) Real (Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1281 : Real) (x._@.Mathlib.Order.Hom.Basic._hyg.1283 : Real) => LE.le.{0} Real Real.instLEReal x._@.Mathlib.Order.Hom.Basic._hyg.1281 x._@.Mathlib.Order.Hom.Basic._hyg.1283) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1296 : Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (x._@.Mathlib.Order.Hom.Basic._hyg.1298 : Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) => LE.le.{0} (Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (Subtype.le.{0} Real Real.instLEReal (fun (x : Real) => Membership.mem.{0, 0} Real (Set.{0} Real) (Set.instMembershipSet.{0} Real) x (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))))) x._@.Mathlib.Order.Hom.Basic._hyg.1296 x._@.Mathlib.Order.Hom.Basic._hyg.1298) (RelIso.instRelHomClassRelIso.{0, 0} Real (Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1281 : Real) (x._@.Mathlib.Order.Hom.Basic._hyg.1283 : Real) => LE.le.{0} Real Real.instLEReal x._@.Mathlib.Order.Hom.Basic._hyg.1281 x._@.Mathlib.Order.Hom.Basic._hyg.1283) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1296 : Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (x._@.Mathlib.Order.Hom.Basic._hyg.1298 : Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) => LE.le.{0} (Set.Elem.{0} Real (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (Subtype.le.{0} Real Real.instLEReal (fun (x : Real) => Membership.mem.{0, 0} Real (Set.{0} Real) (Set.instMembershipSet.{0} Real) x (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))))) x._@.Mathlib.Order.Hom.Basic._hyg.1296 x._@.Mathlib.Order.Hom.Basic._hyg.1298))) Real.expOrderIso)) Real.exp
+Case conversion may be inaccurate. Consider using '#align real.coe_comp_exp_order_iso Real.coe_comp_expOrderIsoβ‚“'. -/
 @[simp]
 theorem coe_comp_expOrderIso : coe ∘ expOrderIso = exp :=
   rfl
 #align real.coe_comp_exp_order_iso Real.coe_comp_expOrderIso
 
+/- warning: real.range_exp -> Real.range_exp is a dubious translation:
+lean 3 declaration is
+  Eq.{1} (Set.{0} Real) (Set.range.{0, 1} Real Real Real.exp) (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))
+but is expected to have type
+  Eq.{1} (Set.{0} Real) (Set.range.{0, 1} Real Real Real.exp) (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))
+Case conversion may be inaccurate. Consider using '#align real.range_exp Real.range_expβ‚“'. -/
 @[simp]
 theorem range_exp : range exp = Ioi 0 := by
   rw [← coe_comp_exp_order_iso, range_comp, exp_order_iso.range_eq, image_univ, Subtype.range_coe]
 #align real.range_exp Real.range_exp
 
+#print Real.map_exp_atTop /-
 @[simp]
 theorem map_exp_atTop : map exp atTop = atTop := by
   rw [← coe_comp_exp_order_iso, ← Filter.map_map, OrderIso.map_atTop, map_coe_Ioi_at_top]
 #align real.map_exp_at_top Real.map_exp_atTop
+-/
 
+#print Real.comap_exp_atTop /-
 @[simp]
 theorem comap_exp_atTop : comap exp atTop = atTop := by
   rw [← map_exp_at_top, comap_map exp_injective, map_exp_at_top]
 #align real.comap_exp_at_top Real.comap_exp_atTop
+-/
 
+#print Real.tendsto_exp_comp_atTop /-
 @[simp]
 theorem tendsto_exp_comp_atTop {f : Ξ± β†’ ℝ} :
     Tendsto (fun x => exp (f x)) l atTop ↔ Tendsto f l atTop := by
   rw [← tendsto_comap_iff, comap_exp_at_top]
 #align real.tendsto_exp_comp_at_top Real.tendsto_exp_comp_atTop
+-/
 
+#print Real.tendsto_comp_exp_atTop /-
 theorem tendsto_comp_exp_atTop {f : ℝ β†’ Ξ±} :
     Tendsto (fun x => f (exp x)) atTop l ↔ Tendsto f atTop l := by
   rw [← tendsto_map'_iff, map_exp_at_top]
 #align real.tendsto_comp_exp_at_top Real.tendsto_comp_exp_atTop
+-/
 
+/- warning: real.map_exp_at_bot -> Real.map_exp_atBot is a dubious translation:
+lean 3 declaration is
+  Eq.{1} (Filter.{0} Real) (Filter.map.{0, 0} Real Real Real.exp (Filter.atBot.{0} Real Real.preorder)) (nhdsWithin.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))))
+but is expected to have type
+  Eq.{1} (Filter.{0} Real) (Filter.map.{0, 0} Real Real Real.exp (Filter.atBot.{0} Real Real.instPreorderReal)) (nhdsWithin.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))))
+Case conversion may be inaccurate. Consider using '#align real.map_exp_at_bot Real.map_exp_atBotβ‚“'. -/
 @[simp]
 theorem map_exp_atBot : map exp atBot = 𝓝[>] 0 := by
   rw [← coe_comp_exp_order_iso, ← Filter.map_map, exp_order_iso.map_at_bot, ← map_coe_Ioi_atBot]
 #align real.map_exp_at_bot Real.map_exp_atBot
 
+/- warning: real.comap_exp_nhds_within_Ioi_zero -> Real.comap_exp_nhdsWithin_Ioi_zero is a dubious translation:
+lean 3 declaration is
+  Eq.{1} (Filter.{0} Real) (Filter.comap.{0, 0} Real Real Real.exp (nhdsWithin.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))))) (Filter.atBot.{0} Real Real.preorder)
+but is expected to have type
+  Eq.{1} (Filter.{0} Real) (Filter.comap.{0, 0} Real Real Real.exp (nhdsWithin.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))))) (Filter.atBot.{0} Real Real.instPreorderReal)
+Case conversion may be inaccurate. Consider using '#align real.comap_exp_nhds_within_Ioi_zero Real.comap_exp_nhdsWithin_Ioi_zeroβ‚“'. -/
 @[simp]
 theorem comap_exp_nhdsWithin_Ioi_zero : comap exp (𝓝[>] 0) = atBot := by
   rw [← map_exp_at_bot, comap_map exp_injective]
 #align real.comap_exp_nhds_within_Ioi_zero Real.comap_exp_nhdsWithin_Ioi_zero
 
+/- warning: real.tendsto_comp_exp_at_bot -> Real.tendsto_comp_exp_atBot is a dubious translation:
+lean 3 declaration is
+  forall {Ξ± : Type.{u1}} {l : Filter.{u1} Ξ±} {f : Real -> Ξ±}, Iff (Filter.Tendsto.{0, u1} Real Ξ± (fun (x : Real) => f (Real.exp x)) (Filter.atBot.{0} Real Real.preorder) l) (Filter.Tendsto.{0, u1} Real Ξ± f (nhdsWithin.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) l)
+but is expected to have type
+  forall {Ξ± : Type.{u1}} {l : Filter.{u1} Ξ±} {f : Real -> Ξ±}, Iff (Filter.Tendsto.{0, u1} Real Ξ± (fun (x : Real) => f (Real.exp x)) (Filter.atBot.{0} Real Real.instPreorderReal) l) (Filter.Tendsto.{0, u1} Real Ξ± f (nhdsWithin.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) l)
+Case conversion may be inaccurate. Consider using '#align real.tendsto_comp_exp_at_bot Real.tendsto_comp_exp_atBotβ‚“'. -/
 theorem tendsto_comp_exp_atBot {f : ℝ β†’ Ξ±} :
     Tendsto (fun x => f (exp x)) atBot l ↔ Tendsto f (𝓝[>] 0) l := by
   rw [← map_exp_at_bot, tendsto_map'_iff]
 #align real.tendsto_comp_exp_at_bot Real.tendsto_comp_exp_atBot
 
+/- warning: real.comap_exp_nhds_zero -> Real.comap_exp_nhds_zero is a dubious translation:
+lean 3 declaration is
+  Eq.{1} (Filter.{0} Real) (Filter.comap.{0, 0} Real Real Real.exp (nhds.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) (Filter.atBot.{0} Real Real.preorder)
+but is expected to have type
+  Eq.{1} (Filter.{0} Real) (Filter.comap.{0, 0} Real Real Real.exp (nhds.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (Filter.atBot.{0} Real Real.instPreorderReal)
+Case conversion may be inaccurate. Consider using '#align real.comap_exp_nhds_zero Real.comap_exp_nhds_zeroβ‚“'. -/
 @[simp]
 theorem comap_exp_nhds_zero : comap exp (𝓝 0) = atBot :=
   (comap_nhdsWithin_range exp 0).symm.trans <| by simp
 #align real.comap_exp_nhds_zero Real.comap_exp_nhds_zero
 
+/- warning: real.tendsto_exp_comp_nhds_zero -> Real.tendsto_exp_comp_nhds_zero is a dubious translation:
+lean 3 declaration is
+  forall {Ξ± : Type.{u1}} {l : Filter.{u1} Ξ±} {f : Ξ± -> Real}, Iff (Filter.Tendsto.{u1, 0} Ξ± Real (fun (x : Ξ±) => Real.exp (f x)) l (nhds.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) (Filter.Tendsto.{u1, 0} Ξ± Real f l (Filter.atBot.{0} Real Real.preorder))
+but is expected to have type
+  forall {Ξ± : Type.{u1}} {l : Filter.{u1} Ξ±} {f : Ξ± -> Real}, Iff (Filter.Tendsto.{u1, 0} Ξ± Real (fun (x : Ξ±) => Real.exp (f x)) l (nhds.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) (Filter.Tendsto.{u1, 0} Ξ± Real f l (Filter.atBot.{0} Real Real.instPreorderReal))
+Case conversion may be inaccurate. Consider using '#align real.tendsto_exp_comp_nhds_zero Real.tendsto_exp_comp_nhds_zeroβ‚“'. -/
 @[simp]
 theorem tendsto_exp_comp_nhds_zero {f : Ξ± β†’ ℝ} :
     Tendsto (fun x => exp (f x)) l (𝓝 0) ↔ Tendsto f l atBot := by
   rw [← tendsto_comap_iff, comap_exp_nhds_zero]
 #align real.tendsto_exp_comp_nhds_zero Real.tendsto_exp_comp_nhds_zero
 
+/- warning: real.is_o_pow_exp_at_top -> Real.isLittleO_pow_exp_atTop is a dubious translation:
+lean 3 declaration is
+  forall {n : Nat}, Asymptotics.IsLittleO.{0, 0, 0} Real Real Real Real.hasNorm Real.hasNorm (Filter.atTop.{0} Real Real.preorder) (fun (x : Real) => HPow.hPow.{0, 0, 0} Real Nat Real (instHPow.{0, 0} Real Nat (Monoid.Pow.{0} Real Real.monoid)) x n) Real.exp
+but is expected to have type
+  forall {n : Nat}, Asymptotics.IsLittleO.{0, 0, 0} Real Real Real Real.norm Real.norm (Filter.atTop.{0} Real Real.instPreorderReal) (fun (x : Real) => HPow.hPow.{0, 0, 0} Real Nat Real (instHPow.{0, 0} Real Nat (Monoid.Pow.{0} Real Real.instMonoidReal)) x n) Real.exp
+Case conversion may be inaccurate. Consider using '#align real.is_o_pow_exp_at_top Real.isLittleO_pow_exp_atTopβ‚“'. -/
 theorem isLittleO_pow_exp_atTop {n : β„•} : (fun x => x ^ n) =o[atTop] Real.exp := by
   simpa [is_o_iff_tendsto fun x hx => ((exp_pos x).ne' hx).elim] using
     tendsto_div_pow_mul_exp_add_at_top 1 0 n zero_ne_one
 #align real.is_o_pow_exp_at_top Real.isLittleO_pow_exp_atTop
 
+/- warning: real.is_O_exp_comp_exp_comp -> Real.isBigO_exp_comp_exp_comp is a dubious translation:
+lean 3 declaration is
+  forall {Ξ± : Type.{u1}} {l : Filter.{u1} Ξ±} {f : Ξ± -> Real} {g : Ξ± -> Real}, Iff (Asymptotics.IsBigO.{u1, 0, 0} Ξ± Real Real Real.hasNorm Real.hasNorm l (fun (x : Ξ±) => Real.exp (f x)) (fun (x : Ξ±) => Real.exp (g x))) (Filter.IsBoundedUnder.{0, u1} Real Ξ± (LE.le.{0} Real Real.hasLe) l (HSub.hSub.{u1, u1, u1} (Ξ± -> Real) (Ξ± -> Real) (Ξ± -> Real) (instHSub.{u1} (Ξ± -> Real) (Pi.instSub.{u1, 0} Ξ± (fun (αΎ° : Ξ±) => Real) (fun (i : Ξ±) => Real.hasSub))) f g))
+but is expected to have type
+  forall {Ξ± : Type.{u1}} {l : Filter.{u1} Ξ±} {f : Ξ± -> Real} {g : Ξ± -> Real}, Iff (Asymptotics.IsBigO.{u1, 0, 0} Ξ± Real Real Real.norm Real.norm l (fun (x : Ξ±) => Real.exp (f x)) (fun (x : Ξ±) => Real.exp (g x))) (Filter.IsBoundedUnder.{0, u1} Real Ξ± (fun (x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.3651 : Real) (x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.3653 : Real) => LE.le.{0} Real Real.instLEReal x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.3651 x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.3653) l (HSub.hSub.{u1, u1, u1} (Ξ± -> Real) (Ξ± -> Real) (Ξ± -> Real) (instHSub.{u1} (Ξ± -> Real) (Pi.instSub.{u1, 0} Ξ± (fun (αΎ° : Ξ±) => Real) (fun (i : Ξ±) => Real.instSubReal))) f g))
+Case conversion may be inaccurate. Consider using '#align real.is_O_exp_comp_exp_comp Real.isBigO_exp_comp_exp_compβ‚“'. -/
 @[simp]
 theorem isBigO_exp_comp_exp_comp {f g : Ξ± β†’ ℝ} :
     ((fun x => exp (f x)) =O[l] fun x => exp (g x)) ↔ IsBoundedUnder (Β· ≀ Β·) l (f - g) :=
@@ -360,6 +570,12 @@ theorem isBigO_exp_comp_exp_comp {f g : Ξ± β†’ ℝ} :
     simp only [norm_eq_abs, abs_exp, ← exp_sub, is_bounded_under_le_exp_comp, Pi.sub_def]
 #align real.is_O_exp_comp_exp_comp Real.isBigO_exp_comp_exp_comp
 
+/- warning: real.is_Theta_exp_comp_exp_comp -> Real.isTheta_exp_comp_exp_comp is a dubious translation:
+lean 3 declaration is
+  forall {Ξ± : Type.{u1}} {l : Filter.{u1} Ξ±} {f : Ξ± -> Real} {g : Ξ± -> Real}, Iff (Asymptotics.IsTheta.{u1, 0, 0} Ξ± Real Real Real.hasNorm Real.hasNorm l (fun (x : Ξ±) => Real.exp (f x)) (fun (x : Ξ±) => Real.exp (g x))) (Filter.IsBoundedUnder.{0, u1} Real Ξ± (LE.le.{0} Real Real.hasLe) l (fun (x : Ξ±) => Abs.abs.{0} Real (Neg.toHasAbs.{0} Real Real.hasNeg Real.hasSup) (HSub.hSub.{0, 0, 0} Real Real Real (instHSub.{0} Real Real.hasSub) (f x) (g x))))
+but is expected to have type
+  forall {Ξ± : Type.{u1}} {l : Filter.{u1} Ξ±} {f : Ξ± -> Real} {g : Ξ± -> Real}, Iff (Asymptotics.IsTheta.{u1, 0, 0} Ξ± Real Real Real.norm Real.norm l (fun (x : Ξ±) => Real.exp (f x)) (fun (x : Ξ±) => Real.exp (g x))) (Filter.IsBoundedUnder.{0, u1} Real Ξ± (fun (x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.3750 : Real) (x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.3752 : Real) => LE.le.{0} Real Real.instLEReal x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.3750 x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.3752) l (fun (x : Ξ±) => Abs.abs.{0} Real (Neg.toHasAbs.{0} Real Real.instNegReal Real.instSupReal) (HSub.hSub.{0, 0, 0} Real Real Real (instHSub.{0} Real Real.instSubReal) (f x) (g x))))
+Case conversion may be inaccurate. Consider using '#align real.is_Theta_exp_comp_exp_comp Real.isTheta_exp_comp_exp_compβ‚“'. -/
 @[simp]
 theorem isTheta_exp_comp_exp_comp {f g : Ξ± β†’ ℝ} :
     ((fun x => exp (f x)) =Θ[l] fun x => exp (g x)) ↔
@@ -369,6 +585,12 @@ theorem isTheta_exp_comp_exp_comp {f g : Ξ± β†’ ℝ} :
     is_O_exp_comp_exp_comp, Pi.sub_def]
 #align real.is_Theta_exp_comp_exp_comp Real.isTheta_exp_comp_exp_comp
 
+/- warning: real.is_o_exp_comp_exp_comp -> Real.isLittleO_exp_comp_exp_comp is a dubious translation:
+lean 3 declaration is
+  forall {Ξ± : Type.{u1}} {l : Filter.{u1} Ξ±} {f : Ξ± -> Real} {g : Ξ± -> Real}, Iff (Asymptotics.IsLittleO.{u1, 0, 0} Ξ± Real Real Real.hasNorm Real.hasNorm l (fun (x : Ξ±) => Real.exp (f x)) (fun (x : Ξ±) => Real.exp (g x))) (Filter.Tendsto.{u1, 0} Ξ± Real (fun (x : Ξ±) => HSub.hSub.{0, 0, 0} Real Real Real (instHSub.{0} Real Real.hasSub) (g x) (f x)) l (Filter.atTop.{0} Real Real.preorder))
+but is expected to have type
+  forall {Ξ± : Type.{u1}} {l : Filter.{u1} Ξ±} {f : Ξ± -> Real} {g : Ξ± -> Real}, Iff (Asymptotics.IsLittleO.{u1, 0, 0} Ξ± Real Real Real.norm Real.norm l (fun (x : Ξ±) => Real.exp (f x)) (fun (x : Ξ±) => Real.exp (g x))) (Filter.Tendsto.{u1, 0} Ξ± Real (fun (x : Ξ±) => HSub.hSub.{0, 0, 0} Real Real Real (instHSub.{0} Real Real.instSubReal) (g x) (f x)) l (Filter.atTop.{0} Real Real.instPreorderReal))
+Case conversion may be inaccurate. Consider using '#align real.is_o_exp_comp_exp_comp Real.isLittleO_exp_comp_exp_compβ‚“'. -/
 @[simp]
 theorem isLittleO_exp_comp_exp_comp {f g : Ξ± β†’ ℝ} :
     ((fun x => exp (f x)) =o[l] fun x => exp (g x)) ↔ Tendsto (fun x => g x - f x) l atTop := by
@@ -376,12 +598,24 @@ theorem isLittleO_exp_comp_exp_comp {f g : Ξ± β†’ ℝ} :
     imp_true_iff, tendsto_exp_comp_nhds_zero, neg_sub]
 #align real.is_o_exp_comp_exp_comp Real.isLittleO_exp_comp_exp_comp
 
+/- warning: real.is_o_one_exp_comp -> Real.isLittleO_one_exp_comp is a dubious translation:
+lean 3 declaration is
+  forall {Ξ± : Type.{u1}} {l : Filter.{u1} Ξ±} {f : Ξ± -> Real}, Iff (Asymptotics.IsLittleO.{u1, 0, 0} Ξ± Real Real Real.hasNorm Real.hasNorm l (fun (x : Ξ±) => OfNat.ofNat.{0} Real 1 (OfNat.mk.{0} Real 1 (One.one.{0} Real Real.hasOne))) (fun (x : Ξ±) => Real.exp (f x))) (Filter.Tendsto.{u1, 0} Ξ± Real f l (Filter.atTop.{0} Real Real.preorder))
+but is expected to have type
+  forall {Ξ± : Type.{u1}} {l : Filter.{u1} Ξ±} {f : Ξ± -> Real}, Iff (Asymptotics.IsLittleO.{u1, 0, 0} Ξ± Real Real Real.norm Real.norm l (fun (x : Ξ±) => OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal)) (fun (x : Ξ±) => Real.exp (f x))) (Filter.Tendsto.{u1, 0} Ξ± Real f l (Filter.atTop.{0} Real Real.instPreorderReal))
+Case conversion may be inaccurate. Consider using '#align real.is_o_one_exp_comp Real.isLittleO_one_exp_compβ‚“'. -/
 @[simp]
 theorem isLittleO_one_exp_comp {f : Ξ± β†’ ℝ} :
     ((fun x => 1 : Ξ± β†’ ℝ) =o[l] fun x => exp (f x)) ↔ Tendsto f l atTop := by
   simp only [← exp_zero, is_o_exp_comp_exp_comp, sub_zero]
 #align real.is_o_one_exp_comp Real.isLittleO_one_exp_comp
 
+/- warning: real.is_O_one_exp_comp -> Real.isBigO_one_exp_comp is a dubious translation:
+lean 3 declaration is
+  forall {Ξ± : Type.{u1}} {l : Filter.{u1} Ξ±} {f : Ξ± -> Real}, Iff (Asymptotics.IsBigO.{u1, 0, 0} Ξ± Real Real Real.hasNorm Real.hasNorm l (fun (x : Ξ±) => OfNat.ofNat.{0} Real 1 (OfNat.mk.{0} Real 1 (One.one.{0} Real Real.hasOne))) (fun (x : Ξ±) => Real.exp (f x))) (Filter.IsBoundedUnder.{0, u1} Real Ξ± (GE.ge.{0} Real Real.hasLe) l f)
+but is expected to have type
+  forall {Ξ± : Type.{u1}} {l : Filter.{u1} Ξ±} {f : Ξ± -> Real}, Iff (Asymptotics.IsBigO.{u1, 0, 0} Ξ± Real Real Real.norm Real.norm l (fun (x : Ξ±) => OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal)) (fun (x : Ξ±) => Real.exp (f x))) (Filter.IsBoundedUnder.{0, u1} Real Ξ± (fun (x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.3964 : Real) (x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.3966 : Real) => GE.ge.{0} Real Real.instLEReal x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.3964 x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.3966) l f)
+Case conversion may be inaccurate. Consider using '#align real.is_O_one_exp_comp Real.isBigO_one_exp_compβ‚“'. -/
 /-- `real.exp (f x)` is bounded away from zero along a filter if and only if this filter is bounded
 from below under `f`. -/
 @[simp]
@@ -390,6 +624,12 @@ theorem isBigO_one_exp_comp {f : Ξ± β†’ ℝ} :
   simp only [← exp_zero, is_O_exp_comp_exp_comp, Pi.sub_def, zero_sub, is_bounded_under_le_neg]
 #align real.is_O_one_exp_comp Real.isBigO_one_exp_comp
 
+/- warning: real.is_O_exp_comp_one -> Real.isBigO_exp_comp_one is a dubious translation:
+lean 3 declaration is
+  forall {Ξ± : Type.{u1}} {l : Filter.{u1} Ξ±} {f : Ξ± -> Real}, Iff (Asymptotics.IsBigO.{u1, 0, 0} Ξ± Real Real Real.hasNorm Real.hasNorm l (fun (x : Ξ±) => Real.exp (f x)) (fun (x : Ξ±) => OfNat.ofNat.{0} Real 1 (OfNat.mk.{0} Real 1 (One.one.{0} Real Real.hasOne)))) (Filter.IsBoundedUnder.{0, u1} Real Ξ± (LE.le.{0} Real Real.hasLe) l f)
+but is expected to have type
+  forall {Ξ± : Type.{u1}} {l : Filter.{u1} Ξ±} {f : Ξ± -> Real}, Iff (Asymptotics.IsBigO.{u1, 0, 0} Ξ± Real Real Real.norm Real.norm l (fun (x : Ξ±) => Real.exp (f x)) (fun (x : Ξ±) => OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal))) (Filter.IsBoundedUnder.{0, u1} Real Ξ± (fun (x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.4040 : Real) (x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.4042 : Real) => LE.le.{0} Real Real.instLEReal x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.4040 x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.4042) l f)
+Case conversion may be inaccurate. Consider using '#align real.is_O_exp_comp_one Real.isBigO_exp_comp_oneβ‚“'. -/
 /-- `real.exp (f x)` is bounded away from zero along a filter if and only if this filter is bounded
 from below under `f`. -/
 theorem isBigO_exp_comp_one {f : Ξ± β†’ ℝ} :
@@ -397,6 +637,12 @@ theorem isBigO_exp_comp_one {f : Ξ± β†’ ℝ} :
   simp only [is_O_one_iff, norm_eq_abs, abs_exp, is_bounded_under_le_exp_comp]
 #align real.is_O_exp_comp_one Real.isBigO_exp_comp_one
 
+/- warning: real.is_Theta_exp_comp_one -> Real.isTheta_exp_comp_one is a dubious translation:
+lean 3 declaration is
+  forall {Ξ± : Type.{u1}} {l : Filter.{u1} Ξ±} {f : Ξ± -> Real}, Iff (Asymptotics.IsTheta.{u1, 0, 0} Ξ± Real Real Real.hasNorm Real.hasNorm l (fun (x : Ξ±) => Real.exp (f x)) (fun (x : Ξ±) => OfNat.ofNat.{0} Real 1 (OfNat.mk.{0} Real 1 (One.one.{0} Real Real.hasOne)))) (Filter.IsBoundedUnder.{0, u1} Real Ξ± (LE.le.{0} Real Real.hasLe) l (fun (x : Ξ±) => Abs.abs.{0} Real (Neg.toHasAbs.{0} Real Real.hasNeg Real.hasSup) (f x)))
+but is expected to have type
+  forall {Ξ± : Type.{u1}} {l : Filter.{u1} Ξ±} {f : Ξ± -> Real}, Iff (Asymptotics.IsTheta.{u1, 0, 0} Ξ± Real Real Real.norm Real.norm l (fun (x : Ξ±) => Real.exp (f x)) (fun (x : Ξ±) => OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal))) (Filter.IsBoundedUnder.{0, u1} Real Ξ± (fun (x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.4116 : Real) (x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.4118 : Real) => LE.le.{0} Real Real.instLEReal x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.4116 x._@.Mathlib.Analysis.SpecialFunctions.Exp._hyg.4118) l (fun (x : Ξ±) => Abs.abs.{0} Real (Neg.toHasAbs.{0} Real Real.instNegReal Real.instSupReal) (f x)))
+Case conversion may be inaccurate. Consider using '#align real.is_Theta_exp_comp_one Real.isTheta_exp_comp_oneβ‚“'. -/
 /-- `real.exp (f x)` is bounded away from zero and infinity along a filter `l` if and only if
 `|f x|` is bounded from above along this filter. -/
 @[simp]
@@ -409,6 +655,12 @@ end Real
 
 namespace Complex
 
+/- warning: complex.comap_exp_comap_abs_at_top -> Complex.comap_exp_comap_abs_atTop is a dubious translation:
+lean 3 declaration is
+  Eq.{1} (Filter.{0} Complex) (Filter.comap.{0, 0} Complex Complex Complex.exp (Filter.comap.{0, 0} Complex Real (coeFn.{1, 1} (AbsoluteValue.{0, 0} Complex Real (Ring.toSemiring.{0} Complex Complex.ring) Real.orderedSemiring) (fun (f : AbsoluteValue.{0, 0} Complex Real (Ring.toSemiring.{0} Complex Complex.ring) Real.orderedSemiring) => Complex -> Real) (AbsoluteValue.hasCoeToFun.{0, 0} Complex Real (Ring.toSemiring.{0} Complex Complex.ring) Real.orderedSemiring) Complex.abs) (Filter.atTop.{0} Real Real.preorder))) (Filter.comap.{0, 0} Complex Real Complex.re (Filter.atTop.{0} Real Real.preorder))
+but is expected to have type
+  Eq.{1} (Filter.{0} Complex) (Filter.comap.{0, 0} Complex Complex Complex.exp (Filter.comap.{0, 0} Complex Real (FunLike.coe.{1, 1, 1} (AbsoluteValue.{0, 0} Complex Real Complex.instSemiringComplex Real.orderedSemiring) Complex (fun (f : Complex) => (fun (x._@.Mathlib.Algebra.Order.Hom.Basic._hyg.99 : Complex) => Real) f) (SubadditiveHomClass.toFunLike.{0, 0, 0} (AbsoluteValue.{0, 0} Complex Real Complex.instSemiringComplex Real.orderedSemiring) Complex Real (Distrib.toAdd.{0} Complex (NonUnitalNonAssocSemiring.toDistrib.{0} Complex (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex Complex.instSemiringComplex)))) (Distrib.toAdd.{0} Real (NonUnitalNonAssocSemiring.toDistrib.{0} Real (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Real (Semiring.toNonAssocSemiring.{0} Real (OrderedSemiring.toSemiring.{0} Real Real.orderedSemiring))))) (Preorder.toLE.{0} Real (PartialOrder.toPreorder.{0} Real (OrderedSemiring.toPartialOrder.{0} Real Real.orderedSemiring))) (AbsoluteValue.subadditiveHomClass.{0, 0} Complex Real Complex.instSemiringComplex Real.orderedSemiring)) Complex.abs) (Filter.atTop.{0} Real Real.instPreorderReal))) (Filter.comap.{0, 0} Complex Real Complex.re (Filter.atTop.{0} Real Real.instPreorderReal))
+Case conversion may be inaccurate. Consider using '#align complex.comap_exp_comap_abs_at_top Complex.comap_exp_comap_abs_atTopβ‚“'. -/
 theorem comap_exp_comap_abs_atTop : comap exp (comap abs atTop) = comap re atTop :=
   calc
     comap exp (comap abs atTop) = comap re (comap Real.exp atTop) := by
@@ -417,6 +669,12 @@ theorem comap_exp_comap_abs_atTop : comap exp (comap abs atTop) = comap re atTop
     
 #align complex.comap_exp_comap_abs_at_top Complex.comap_exp_comap_abs_atTop
 
+/- warning: complex.comap_exp_nhds_zero -> Complex.comap_exp_nhds_zero is a dubious translation:
+lean 3 declaration is
+  Eq.{1} (Filter.{0} Complex) (Filter.comap.{0, 0} Complex Complex Complex.exp (nhds.{0} Complex (UniformSpace.toTopologicalSpace.{0} Complex (PseudoMetricSpace.toUniformSpace.{0} Complex (SeminormedRing.toPseudoMetricSpace.{0} Complex (SeminormedCommRing.toSemiNormedRing.{0} Complex (NormedCommRing.toSeminormedCommRing.{0} Complex (NormedField.toNormedCommRing.{0} Complex Complex.normedField)))))) (OfNat.ofNat.{0} Complex 0 (OfNat.mk.{0} Complex 0 (Zero.zero.{0} Complex Complex.hasZero))))) (Filter.comap.{0, 0} Complex Real Complex.re (Filter.atBot.{0} Real Real.preorder))
+but is expected to have type
+  Eq.{1} (Filter.{0} Complex) (Filter.comap.{0, 0} Complex Complex Complex.exp (nhds.{0} Complex (UniformSpace.toTopologicalSpace.{0} Complex (PseudoMetricSpace.toUniformSpace.{0} Complex (SeminormedRing.toPseudoMetricSpace.{0} Complex (SeminormedCommRing.toSeminormedRing.{0} Complex (NormedCommRing.toSeminormedCommRing.{0} Complex (NormedField.toNormedCommRing.{0} Complex Complex.instNormedFieldComplex)))))) (OfNat.ofNat.{0} Complex 0 (Zero.toOfNat0.{0} Complex Complex.instZeroComplex)))) (Filter.comap.{0, 0} Complex Real Complex.re (Filter.atBot.{0} Real Real.instPreorderReal))
+Case conversion may be inaccurate. Consider using '#align complex.comap_exp_nhds_zero Complex.comap_exp_nhds_zeroβ‚“'. -/
 theorem comap_exp_nhds_zero : comap exp (𝓝 0) = comap re atBot :=
   calc
     comap exp (𝓝 0) = comap re (comap Real.exp (𝓝 0)) := by
@@ -425,27 +683,57 @@ theorem comap_exp_nhds_zero : comap exp (𝓝 0) = comap re atBot :=
     
 #align complex.comap_exp_nhds_zero Complex.comap_exp_nhds_zero
 
+/- warning: complex.comap_exp_nhds_within_zero -> Complex.comap_exp_nhdsWithin_zero is a dubious translation:
+lean 3 declaration is
+  Eq.{1} (Filter.{0} Complex) (Filter.comap.{0, 0} Complex Complex Complex.exp (nhdsWithin.{0} Complex (UniformSpace.toTopologicalSpace.{0} Complex (PseudoMetricSpace.toUniformSpace.{0} Complex (SeminormedRing.toPseudoMetricSpace.{0} Complex (SeminormedCommRing.toSemiNormedRing.{0} Complex (NormedCommRing.toSeminormedCommRing.{0} Complex (NormedField.toNormedCommRing.{0} Complex Complex.normedField)))))) (OfNat.ofNat.{0} Complex 0 (OfNat.mk.{0} Complex 0 (Zero.zero.{0} Complex Complex.hasZero))) (HasCompl.compl.{0} (Set.{0} Complex) (BooleanAlgebra.toHasCompl.{0} (Set.{0} Complex) (Set.booleanAlgebra.{0} Complex)) (Singleton.singleton.{0, 0} Complex (Set.{0} Complex) (Set.hasSingleton.{0} Complex) (OfNat.ofNat.{0} Complex 0 (OfNat.mk.{0} Complex 0 (Zero.zero.{0} Complex Complex.hasZero))))))) (Filter.comap.{0, 0} Complex Real Complex.re (Filter.atBot.{0} Real Real.preorder))
+but is expected to have type
+  Eq.{1} (Filter.{0} Complex) (Filter.comap.{0, 0} Complex Complex Complex.exp (nhdsWithin.{0} Complex (UniformSpace.toTopologicalSpace.{0} Complex (PseudoMetricSpace.toUniformSpace.{0} Complex (SeminormedRing.toPseudoMetricSpace.{0} Complex (SeminormedCommRing.toSeminormedRing.{0} Complex (NormedCommRing.toSeminormedCommRing.{0} Complex (NormedField.toNormedCommRing.{0} Complex Complex.instNormedFieldComplex)))))) (OfNat.ofNat.{0} Complex 0 (Zero.toOfNat0.{0} Complex Complex.instZeroComplex)) (HasCompl.compl.{0} (Set.{0} Complex) (BooleanAlgebra.toHasCompl.{0} (Set.{0} Complex) (Set.instBooleanAlgebraSet.{0} Complex)) (Singleton.singleton.{0, 0} Complex (Set.{0} Complex) (Set.instSingletonSet.{0} Complex) (OfNat.ofNat.{0} Complex 0 (Zero.toOfNat0.{0} Complex Complex.instZeroComplex)))))) (Filter.comap.{0, 0} Complex Real Complex.re (Filter.atBot.{0} Real Real.instPreorderReal))
+Case conversion may be inaccurate. Consider using '#align complex.comap_exp_nhds_within_zero Complex.comap_exp_nhdsWithin_zeroβ‚“'. -/
 theorem comap_exp_nhdsWithin_zero : comap exp (𝓝[β‰ ] 0) = comap re atBot :=
   by
   have : exp ⁻¹' {0}ᢜ = univ := eq_univ_of_forall exp_ne_zero
   simp [nhdsWithin, comap_exp_nhds_zero, this]
 #align complex.comap_exp_nhds_within_zero Complex.comap_exp_nhdsWithin_zero
 
+/- warning: complex.tendsto_exp_nhds_zero_iff -> Complex.tendsto_exp_nhds_zero_iff is a dubious translation:
+lean 3 declaration is
+  forall {Ξ± : Type.{u1}} {l : Filter.{u1} Ξ±} {f : Ξ± -> Complex}, Iff (Filter.Tendsto.{u1, 0} Ξ± Complex (fun (x : Ξ±) => Complex.exp (f x)) l (nhds.{0} Complex (UniformSpace.toTopologicalSpace.{0} Complex (PseudoMetricSpace.toUniformSpace.{0} Complex (SeminormedRing.toPseudoMetricSpace.{0} Complex (SeminormedCommRing.toSemiNormedRing.{0} Complex (NormedCommRing.toSeminormedCommRing.{0} Complex (NormedField.toNormedCommRing.{0} Complex Complex.normedField)))))) (OfNat.ofNat.{0} Complex 0 (OfNat.mk.{0} Complex 0 (Zero.zero.{0} Complex Complex.hasZero))))) (Filter.Tendsto.{u1, 0} Ξ± Real (fun (x : Ξ±) => Complex.re (f x)) l (Filter.atBot.{0} Real Real.preorder))
+but is expected to have type
+  forall {Ξ± : Type.{u1}} {l : Filter.{u1} Ξ±} {f : Ξ± -> Complex}, Iff (Filter.Tendsto.{u1, 0} Ξ± Complex (fun (x : Ξ±) => Complex.exp (f x)) l (nhds.{0} Complex (UniformSpace.toTopologicalSpace.{0} Complex (PseudoMetricSpace.toUniformSpace.{0} Complex (SeminormedRing.toPseudoMetricSpace.{0} Complex (SeminormedCommRing.toSeminormedRing.{0} Complex (NormedCommRing.toSeminormedCommRing.{0} Complex (NormedField.toNormedCommRing.{0} Complex Complex.instNormedFieldComplex)))))) (OfNat.ofNat.{0} Complex 0 (Zero.toOfNat0.{0} Complex Complex.instZeroComplex)))) (Filter.Tendsto.{u1, 0} Ξ± Real (fun (x : Ξ±) => Complex.re (f x)) l (Filter.atBot.{0} Real Real.instPreorderReal))
+Case conversion may be inaccurate. Consider using '#align complex.tendsto_exp_nhds_zero_iff Complex.tendsto_exp_nhds_zero_iffβ‚“'. -/
 theorem tendsto_exp_nhds_zero_iff {Ξ± : Type _} {l : Filter Ξ±} {f : Ξ± β†’ β„‚} :
     Tendsto (fun x => exp (f x)) l (𝓝 0) ↔ Tendsto (fun x => re (f x)) l atBot := by
   rw [← tendsto_comap_iff, comap_exp_nhds_zero, tendsto_comap_iff]
 #align complex.tendsto_exp_nhds_zero_iff Complex.tendsto_exp_nhds_zero_iff
 
+/- warning: complex.tendsto_exp_comap_re_at_top -> Complex.tendsto_exp_comap_re_atTop is a dubious translation:
+lean 3 declaration is
+  Filter.Tendsto.{0, 0} Complex Complex Complex.exp (Filter.comap.{0, 0} Complex Real Complex.re (Filter.atTop.{0} Real Real.preorder)) (Filter.comap.{0, 0} Complex Real (coeFn.{1, 1} (AbsoluteValue.{0, 0} Complex Real (Ring.toSemiring.{0} Complex Complex.ring) Real.orderedSemiring) (fun (f : AbsoluteValue.{0, 0} Complex Real (Ring.toSemiring.{0} Complex Complex.ring) Real.orderedSemiring) => Complex -> Real) (AbsoluteValue.hasCoeToFun.{0, 0} Complex Real (Ring.toSemiring.{0} Complex Complex.ring) Real.orderedSemiring) Complex.abs) (Filter.atTop.{0} Real Real.preorder))
+but is expected to have type
+  Filter.Tendsto.{0, 0} Complex Complex Complex.exp (Filter.comap.{0, 0} Complex Real Complex.re (Filter.atTop.{0} Real Real.instPreorderReal)) (Filter.comap.{0, 0} Complex Real (FunLike.coe.{1, 1, 1} (AbsoluteValue.{0, 0} Complex Real Complex.instSemiringComplex Real.orderedSemiring) Complex (fun (f : Complex) => (fun (x._@.Mathlib.Algebra.Order.Hom.Basic._hyg.99 : Complex) => Real) f) (SubadditiveHomClass.toFunLike.{0, 0, 0} (AbsoluteValue.{0, 0} Complex Real Complex.instSemiringComplex Real.orderedSemiring) Complex Real (Distrib.toAdd.{0} Complex (NonUnitalNonAssocSemiring.toDistrib.{0} Complex (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex Complex.instSemiringComplex)))) (Distrib.toAdd.{0} Real (NonUnitalNonAssocSemiring.toDistrib.{0} Real (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Real (Semiring.toNonAssocSemiring.{0} Real (OrderedSemiring.toSemiring.{0} Real Real.orderedSemiring))))) (Preorder.toLE.{0} Real (PartialOrder.toPreorder.{0} Real (OrderedSemiring.toPartialOrder.{0} Real Real.orderedSemiring))) (AbsoluteValue.subadditiveHomClass.{0, 0} Complex Real Complex.instSemiringComplex Real.orderedSemiring)) Complex.abs) (Filter.atTop.{0} Real Real.instPreorderReal))
+Case conversion may be inaccurate. Consider using '#align complex.tendsto_exp_comap_re_at_top Complex.tendsto_exp_comap_re_atTopβ‚“'. -/
 /-- `complex.abs (complex.exp z) β†’ ∞` as `complex.re z β†’ ∞`. TODO: use `bornology.cobounded`. -/
 theorem tendsto_exp_comap_re_atTop : Tendsto exp (comap re atTop) (comap abs atTop) :=
   comap_exp_comap_abs_atTop β–Έ tendsto_comap
 #align complex.tendsto_exp_comap_re_at_top Complex.tendsto_exp_comap_re_atTop
 
+/- warning: complex.tendsto_exp_comap_re_at_bot -> Complex.tendsto_exp_comap_re_atBot is a dubious translation:
+lean 3 declaration is
+  Filter.Tendsto.{0, 0} Complex Complex Complex.exp (Filter.comap.{0, 0} Complex Real Complex.re (Filter.atBot.{0} Real Real.preorder)) (nhds.{0} Complex (UniformSpace.toTopologicalSpace.{0} Complex (PseudoMetricSpace.toUniformSpace.{0} Complex (SeminormedRing.toPseudoMetricSpace.{0} Complex (SeminormedCommRing.toSemiNormedRing.{0} Complex (NormedCommRing.toSeminormedCommRing.{0} Complex (NormedField.toNormedCommRing.{0} Complex Complex.normedField)))))) (OfNat.ofNat.{0} Complex 0 (OfNat.mk.{0} Complex 0 (Zero.zero.{0} Complex Complex.hasZero))))
+but is expected to have type
+  Filter.Tendsto.{0, 0} Complex Complex Complex.exp (Filter.comap.{0, 0} Complex Real Complex.re (Filter.atBot.{0} Real Real.instPreorderReal)) (nhds.{0} Complex (UniformSpace.toTopologicalSpace.{0} Complex (PseudoMetricSpace.toUniformSpace.{0} Complex (SeminormedRing.toPseudoMetricSpace.{0} Complex (SeminormedCommRing.toSeminormedRing.{0} Complex (NormedCommRing.toSeminormedCommRing.{0} Complex (NormedField.toNormedCommRing.{0} Complex Complex.instNormedFieldComplex)))))) (OfNat.ofNat.{0} Complex 0 (Zero.toOfNat0.{0} Complex Complex.instZeroComplex)))
+Case conversion may be inaccurate. Consider using '#align complex.tendsto_exp_comap_re_at_bot Complex.tendsto_exp_comap_re_atBotβ‚“'. -/
 /-- `complex.exp z β†’ 0` as `complex.re z β†’ -∞`.-/
 theorem tendsto_exp_comap_re_atBot : Tendsto exp (comap re atBot) (𝓝 0) :=
   comap_exp_nhds_zero β–Έ tendsto_comap
 #align complex.tendsto_exp_comap_re_at_bot Complex.tendsto_exp_comap_re_atBot
 
+/- warning: complex.tendsto_exp_comap_re_at_bot_nhds_within -> Complex.tendsto_exp_comap_re_atBot_nhdsWithin is a dubious translation:
+lean 3 declaration is
+  Filter.Tendsto.{0, 0} Complex Complex Complex.exp (Filter.comap.{0, 0} Complex Real Complex.re (Filter.atBot.{0} Real Real.preorder)) (nhdsWithin.{0} Complex (UniformSpace.toTopologicalSpace.{0} Complex (PseudoMetricSpace.toUniformSpace.{0} Complex (SeminormedRing.toPseudoMetricSpace.{0} Complex (SeminormedCommRing.toSemiNormedRing.{0} Complex (NormedCommRing.toSeminormedCommRing.{0} Complex (NormedField.toNormedCommRing.{0} Complex Complex.normedField)))))) (OfNat.ofNat.{0} Complex 0 (OfNat.mk.{0} Complex 0 (Zero.zero.{0} Complex Complex.hasZero))) (HasCompl.compl.{0} (Set.{0} Complex) (BooleanAlgebra.toHasCompl.{0} (Set.{0} Complex) (Set.booleanAlgebra.{0} Complex)) (Singleton.singleton.{0, 0} Complex (Set.{0} Complex) (Set.hasSingleton.{0} Complex) (OfNat.ofNat.{0} Complex 0 (OfNat.mk.{0} Complex 0 (Zero.zero.{0} Complex Complex.hasZero))))))
+but is expected to have type
+  Filter.Tendsto.{0, 0} Complex Complex Complex.exp (Filter.comap.{0, 0} Complex Real Complex.re (Filter.atBot.{0} Real Real.instPreorderReal)) (nhdsWithin.{0} Complex (UniformSpace.toTopologicalSpace.{0} Complex (PseudoMetricSpace.toUniformSpace.{0} Complex (SeminormedRing.toPseudoMetricSpace.{0} Complex (SeminormedCommRing.toSeminormedRing.{0} Complex (NormedCommRing.toSeminormedCommRing.{0} Complex (NormedField.toNormedCommRing.{0} Complex Complex.instNormedFieldComplex)))))) (OfNat.ofNat.{0} Complex 0 (Zero.toOfNat0.{0} Complex Complex.instZeroComplex)) (HasCompl.compl.{0} (Set.{0} Complex) (BooleanAlgebra.toHasCompl.{0} (Set.{0} Complex) (Set.instBooleanAlgebraSet.{0} Complex)) (Singleton.singleton.{0, 0} Complex (Set.{0} Complex) (Set.instSingletonSet.{0} Complex) (OfNat.ofNat.{0} Complex 0 (Zero.toOfNat0.{0} Complex Complex.instZeroComplex)))))
+Case conversion may be inaccurate. Consider using '#align complex.tendsto_exp_comap_re_at_bot_nhds_within Complex.tendsto_exp_comap_re_atBot_nhdsWithinβ‚“'. -/
 theorem tendsto_exp_comap_re_atBot_nhdsWithin : Tendsto exp (comap re atBot) (𝓝[β‰ ] 0) :=
   comap_exp_nhdsWithin_zero β–Έ tendsto_comap
 #align complex.tendsto_exp_comap_re_at_bot_nhds_within Complex.tendsto_exp_comap_re_atBot_nhdsWithin
Diff
@@ -120,7 +120,7 @@ namespace Real
 
 @[continuity]
 theorem continuous_exp : Continuous exp :=
-  Complex.continuous_re.comp Complex.continuous_of_real.cexp
+  Complex.continuous_re.comp Complex.continuous_ofReal.cexp
 #align real.continuous_exp Real.continuous_exp
 
 theorem continuousOn_exp {s : Set ℝ} : ContinuousOn exp s :=
Diff
@@ -4,14 +4,13 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Chris Hughes, Abhimanyu Pallavi Sudhir, Jean Lo, Calle SΓΆnne
 
 ! This file was ported from Lean 3 source module analysis.special_functions.exp
-! leanprover-community/mathlib commit f2ce6086713c78a7f880485f7917ea547a215982
+! leanprover-community/mathlib commit 2c1d8ca2812b64f88992a5294ea3dba144755cd1
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
 import Mathbin.Analysis.Asymptotics.Theta
 import Mathbin.Analysis.Complex.Basic
 import Mathbin.Analysis.SpecificLimits.Normed
-import Mathbin.Data.Complex.Exponential
 
 /-!
 # Complex and real exponential
Diff
@@ -349,17 +349,17 @@ theorem tendsto_exp_comp_nhds_zero {f : Ξ± β†’ ℝ} :
   rw [← tendsto_comap_iff, comap_exp_nhds_zero]
 #align real.tendsto_exp_comp_nhds_zero Real.tendsto_exp_comp_nhds_zero
 
-theorem isOCat_pow_exp_atTop {n : β„•} : (fun x => x ^ n) =o[atTop] Real.exp := by
+theorem isLittleO_pow_exp_atTop {n : β„•} : (fun x => x ^ n) =o[atTop] Real.exp := by
   simpa [is_o_iff_tendsto fun x hx => ((exp_pos x).ne' hx).elim] using
     tendsto_div_pow_mul_exp_add_at_top 1 0 n zero_ne_one
-#align real.is_o_pow_exp_at_top Real.isOCat_pow_exp_atTop
+#align real.is_o_pow_exp_at_top Real.isLittleO_pow_exp_atTop
 
 @[simp]
-theorem isO_exp_comp_exp_comp {f g : Ξ± β†’ ℝ} :
+theorem isBigO_exp_comp_exp_comp {f g : Ξ± β†’ ℝ} :
     ((fun x => exp (f x)) =O[l] fun x => exp (g x)) ↔ IsBoundedUnder (Β· ≀ Β·) l (f - g) :=
-  Iff.trans (isO_iff_isBoundedUnder_le_div <| eventually_of_forall fun x => exp_ne_zero _) <| by
+  Iff.trans (isBigO_iff_isBoundedUnder_le_div <| eventually_of_forall fun x => exp_ne_zero _) <| by
     simp only [norm_eq_abs, abs_exp, ← exp_sub, is_bounded_under_le_exp_comp, Pi.sub_def]
-#align real.is_O_exp_comp_exp_comp Real.isO_exp_comp_exp_comp
+#align real.is_O_exp_comp_exp_comp Real.isBigO_exp_comp_exp_comp
 
 @[simp]
 theorem isTheta_exp_comp_exp_comp {f g : Ξ± β†’ ℝ} :
@@ -371,32 +371,32 @@ theorem isTheta_exp_comp_exp_comp {f g : Ξ± β†’ ℝ} :
 #align real.is_Theta_exp_comp_exp_comp Real.isTheta_exp_comp_exp_comp
 
 @[simp]
-theorem isOCat_exp_comp_exp_comp {f g : Ξ± β†’ ℝ} :
+theorem isLittleO_exp_comp_exp_comp {f g : Ξ± β†’ ℝ} :
     ((fun x => exp (f x)) =o[l] fun x => exp (g x)) ↔ Tendsto (fun x => g x - f x) l atTop := by
   simp only [is_o_iff_tendsto, exp_ne_zero, ← exp_sub, ← tendsto_neg_at_top_iff, false_imp_iff,
     imp_true_iff, tendsto_exp_comp_nhds_zero, neg_sub]
-#align real.is_o_exp_comp_exp_comp Real.isOCat_exp_comp_exp_comp
+#align real.is_o_exp_comp_exp_comp Real.isLittleO_exp_comp_exp_comp
 
 @[simp]
-theorem isOCat_one_exp_comp {f : Ξ± β†’ ℝ} :
+theorem isLittleO_one_exp_comp {f : Ξ± β†’ ℝ} :
     ((fun x => 1 : Ξ± β†’ ℝ) =o[l] fun x => exp (f x)) ↔ Tendsto f l atTop := by
   simp only [← exp_zero, is_o_exp_comp_exp_comp, sub_zero]
-#align real.is_o_one_exp_comp Real.isOCat_one_exp_comp
+#align real.is_o_one_exp_comp Real.isLittleO_one_exp_comp
 
 /-- `real.exp (f x)` is bounded away from zero along a filter if and only if this filter is bounded
 from below under `f`. -/
 @[simp]
-theorem isO_one_exp_comp {f : Ξ± β†’ ℝ} :
+theorem isBigO_one_exp_comp {f : Ξ± β†’ ℝ} :
     ((fun x => 1 : Ξ± β†’ ℝ) =O[l] fun x => exp (f x)) ↔ IsBoundedUnder (Β· β‰₯ Β·) l f := by
   simp only [← exp_zero, is_O_exp_comp_exp_comp, Pi.sub_def, zero_sub, is_bounded_under_le_neg]
-#align real.is_O_one_exp_comp Real.isO_one_exp_comp
+#align real.is_O_one_exp_comp Real.isBigO_one_exp_comp
 
 /-- `real.exp (f x)` is bounded away from zero along a filter if and only if this filter is bounded
 from below under `f`. -/
-theorem isO_exp_comp_one {f : Ξ± β†’ ℝ} :
+theorem isBigO_exp_comp_one {f : Ξ± β†’ ℝ} :
     (fun x => exp (f x)) =O[l] (fun x => 1 : Ξ± β†’ ℝ) ↔ IsBoundedUnder (Β· ≀ Β·) l f := by
   simp only [is_O_one_iff, norm_eq_abs, abs_exp, is_bounded_under_le_exp_comp]
-#align real.is_O_exp_comp_one Real.isO_exp_comp_one
+#align real.is_O_exp_comp_one Real.isBigO_exp_comp_one
 
 /-- `real.exp (f x)` is bounded away from zero and infinity along a filter `l` if and only if
 `|f x|` is bounded from above along this filter. -/
Diff
@@ -267,12 +267,12 @@ theorem tendsto_div_pow_mul_exp_add_atTop (b c : ℝ) (n : β„•) (hb : 0 β‰  b) :
   have H : βˆ€ d e, 0 < d β†’ tendsto (fun x : ℝ => x ^ n / (d * exp x + e)) at_top (𝓝 0) :=
     by
     intro b' c' h
-    convert (tendsto_mul_exp_add_div_pow_at_top b' c' n h).inv_tendsto_atTop
+    convert(tendsto_mul_exp_add_div_pow_at_top b' c' n h).inv_tendsto_atTop
     ext x
     simpa only [Pi.inv_apply] using (inv_div _ _).symm
   cases lt_or_gt_of_ne hb
   Β· exact H b c h
-  Β· convert (H (-b) (-c) (neg_pos.mpr h)).neg
+  Β· convert(H (-b) (-c) (neg_pos.mpr h)).neg
     Β· ext x
       field_simp
       rw [← neg_add (b * exp x) c, neg_div_neg_eq]
Diff
@@ -410,10 +410,9 @@ end Real
 
 namespace Complex
 
-theorem comap_exp_comap_abs_atTop :
-    comap exp (comap Complex.AbsTheory.Complex.abs atTop) = comap re atTop :=
+theorem comap_exp_comap_abs_atTop : comap exp (comap abs atTop) = comap re atTop :=
   calc
-    comap exp (comap Complex.AbsTheory.Complex.abs atTop) = comap re (comap Real.exp atTop) := by
+    comap exp (comap abs atTop) = comap re (comap Real.exp atTop) := by
       simp only [comap_comap, (· ∘ ·), abs_exp]
     _ = comap re atTop := by rw [Real.comap_exp_atTop]
     
@@ -439,8 +438,7 @@ theorem tendsto_exp_nhds_zero_iff {Ξ± : Type _} {l : Filter Ξ±} {f : Ξ± β†’ β„‚}
 #align complex.tendsto_exp_nhds_zero_iff Complex.tendsto_exp_nhds_zero_iff
 
 /-- `complex.abs (complex.exp z) β†’ ∞` as `complex.re z β†’ ∞`. TODO: use `bornology.cobounded`. -/
-theorem tendsto_exp_comap_re_atTop :
-    Tendsto exp (comap re atTop) (comap Complex.AbsTheory.Complex.abs atTop) :=
+theorem tendsto_exp_comap_re_atTop : Tendsto exp (comap re atTop) (comap abs atTop) :=
   comap_exp_comap_abs_atTop β–Έ tendsto_comap
 #align complex.tendsto_exp_comap_re_at_top Complex.tendsto_exp_comap_re_atTop
 
Diff
@@ -410,9 +410,10 @@ end Real
 
 namespace Complex
 
-theorem comap_exp_comap_abs_atTop : comap exp (comap abs atTop) = comap re atTop :=
+theorem comap_exp_comap_abs_atTop :
+    comap exp (comap Complex.AbsTheory.Complex.abs atTop) = comap re atTop :=
   calc
-    comap exp (comap abs atTop) = comap re (comap Real.exp atTop) := by
+    comap exp (comap Complex.AbsTheory.Complex.abs atTop) = comap re (comap Real.exp atTop) := by
       simp only [comap_comap, (· ∘ ·), abs_exp]
     _ = comap re atTop := by rw [Real.comap_exp_atTop]
     
@@ -438,7 +439,8 @@ theorem tendsto_exp_nhds_zero_iff {Ξ± : Type _} {l : Filter Ξ±} {f : Ξ± β†’ β„‚}
 #align complex.tendsto_exp_nhds_zero_iff Complex.tendsto_exp_nhds_zero_iff
 
 /-- `complex.abs (complex.exp z) β†’ ∞` as `complex.re z β†’ ∞`. TODO: use `bornology.cobounded`. -/
-theorem tendsto_exp_comap_re_atTop : Tendsto exp (comap re atTop) (comap abs atTop) :=
+theorem tendsto_exp_comap_re_atTop :
+    Tendsto exp (comap re atTop) (comap Complex.AbsTheory.Complex.abs atTop) :=
   comap_exp_comap_abs_atTop β–Έ tendsto_comap
 #align complex.tendsto_exp_comap_re_at_top Complex.tendsto_exp_comap_re_atTop
 
Diff
@@ -43,7 +43,7 @@ theorem exp_bound_sq (x z : β„‚) (hz : β€–zβ€– ≀ 1) :
       congr
       rw [exp_add]
       ring
-    _ = β€–exp xβ€– * β€–exp z - 1 - zβ€– := norm_mul _ _
+    _ = β€–exp xβ€– * β€–exp z - 1 - zβ€– := (norm_mul _ _)
     _ ≀ β€–exp xβ€– * β€–zβ€– ^ 2 :=
       mul_le_mul_of_nonneg_left (abs_exp_sub_one_sub_id_le hz) (norm_nonneg _)
     
@@ -65,9 +65,9 @@ theorem locally_lipschitz_exp {r : ℝ} (hr_nonneg : 0 ≀ r) (hr_le : r ≀ 1)
     exact (norm_sub_norm_le _ _).trans this
   calc
     β€–exp y - exp xβ€– = β€–exp (x + (y - x)) - exp xβ€– := by nth_rw 1 [hy_eq]
-    _ ≀ β€–y - xβ€– * β€–exp xβ€– + β€–exp xβ€– * β€–y - xβ€– ^ 2 := h_sq (y - x) (hyx.le.trans hr_le)
+    _ ≀ β€–y - xβ€– * β€–exp xβ€– + β€–exp xβ€– * β€–y - xβ€– ^ 2 := (h_sq (y - x) (hyx.le.trans hr_le))
     _ ≀ β€–y - xβ€– * β€–exp xβ€– + β€–exp xβ€– * (r * β€–y - xβ€–) :=
-      add_le_add_left (mul_le_mul le_rfl hyx_sq_le (sq_nonneg _) (norm_nonneg _)) _
+      (add_le_add_left (mul_le_mul le_rfl hyx_sq_le (sq_nonneg _) (norm_nonneg _)) _)
     _ = (1 + r) * β€–exp xβ€– * β€–y - xβ€– := by ring
     
 #align complex.locally_lipschitz_exp Complex.locally_lipschitz_exp
@@ -232,8 +232,8 @@ theorem tendsto_exp_div_pow_atTop (n : β„•) : Tendsto (fun x => exp x / x ^ n) a
     x ^ n ≀ ⌈xβŒ‰β‚Š ^ n := pow_le_pow_of_le_left hxβ‚€.le (Nat.le_ceil _) _
     _ ≀ exp ⌈xβŒ‰β‚Š / (exp 1 * C) := (hN _ (Nat.lt_ceil.2 hx).le).le
     _ ≀ exp (x + 1) / (exp 1 * C) :=
-      div_le_div_of_le (mul_pos (exp_pos _) hCβ‚€).le
-        (exp_le_exp.2 <| (Nat.ceil_lt_add_one hxβ‚€.le).le)
+      (div_le_div_of_le (mul_pos (exp_pos _) hCβ‚€).le
+        (exp_le_exp.2 <| (Nat.ceil_lt_add_one hxβ‚€.le).le))
     _ = exp x / C := by rw [add_comm, exp_add, mul_div_mul_left _ _ (exp_pos _).ne']
     
 #align real.tendsto_exp_div_pow_at_top Real.tendsto_exp_div_pow_atTop

Changes in mathlib4

mathlib3
mathlib4
chore(Analysis): add missing deprecation dates (#12336)
Diff
@@ -188,14 +188,14 @@ at `+∞` -/
 theorem tendsto_exp_neg_atTop_nhds_zero : Tendsto (fun x => exp (-x)) atTop (𝓝 0) :=
   (tendsto_inv_atTop_zero.comp tendsto_exp_atTop).congr fun x => (exp_neg x).symm
 #align real.tendsto_exp_neg_at_top_nhds_0 Real.tendsto_exp_neg_atTop_nhds_zero
-@[deprecated] alias tendsto_exp_neg_atTop_nhds_0 := tendsto_exp_neg_atTop_nhds_zero
+@[deprecated] alias tendsto_exp_neg_atTop_nhds_0 := tendsto_exp_neg_atTop_nhds_zero -- 2024-01-31
 
 /-- The real exponential function tends to `1` at `0`. -/
 theorem tendsto_exp_nhds_zero_nhds_one : Tendsto exp (𝓝 0) (𝓝 1) := by
   convert continuous_exp.tendsto 0
   simp
 #align real.tendsto_exp_nhds_0_nhds_1 Real.tendsto_exp_nhds_zero_nhds_one
-@[deprecated] alias tendsto_exp_nhds_0_nhds_1 := tendsto_exp_nhds_zero_nhds_one
+@[deprecated] alias tendsto_exp_nhds_0_nhds_1 := tendsto_exp_nhds_zero_nhds_one -- 2024-01-31
 
 theorem tendsto_exp_atBot : Tendsto exp atBot (𝓝 0) :=
   (tendsto_exp_neg_atTop_nhds_zero.comp tendsto_neg_atBot_atTop).congr fun x =>
@@ -245,7 +245,8 @@ theorem tendsto_pow_mul_exp_neg_atTop_nhds_zero (n : β„•) :
   (tendsto_inv_atTop_zero.comp (tendsto_exp_div_pow_atTop n)).congr fun x => by
     rw [comp_apply, inv_eq_one_div, div_div_eq_mul_div, one_mul, div_eq_mul_inv, exp_neg]
 #align real.tendsto_pow_mul_exp_neg_at_top_nhds_0 Real.tendsto_pow_mul_exp_neg_atTop_nhds_zero
-@[deprecated] alias tendsto_pow_mul_exp_neg_atTop_nhds_0 := tendsto_pow_mul_exp_neg_atTop_nhds_zero
+@[deprecated] -- 2024-01-31
+alias tendsto_pow_mul_exp_neg_atTop_nhds_0 := tendsto_pow_mul_exp_neg_atTop_nhds_zero
 
 /-- The function `(b * exp x + c) / (x ^ n)` tends to `+∞` at `+∞`, for any natural number
 `n` and any real numbers `b` and `c` such that `b` is positive. -/
chore: superfluous parentheses part 2 (#12131)

Co-authored-by: Moritz Firsching <firsching@google.com>

Diff
@@ -38,7 +38,7 @@ theorem exp_bound_sq (x z : β„‚) (hz : β€–zβ€– ≀ 1) :
       congr
       rw [exp_add]
       ring
-    _ = β€–exp xβ€– * β€–exp z - 1 - zβ€– := (norm_mul _ _)
+    _ = β€–exp xβ€– * β€–exp z - 1 - zβ€– := norm_mul _ _
     _ ≀ β€–exp xβ€– * β€–zβ€– ^ 2 :=
       mul_le_mul_of_nonneg_left (abs_exp_sub_one_sub_id_le hz) (norm_nonneg _)
 #align complex.exp_bound_sq Complex.exp_bound_sq
@@ -56,7 +56,7 @@ theorem locally_lipschitz_exp {r : ℝ} (hr_nonneg : 0 ≀ r) (hr_le : r ≀ 1)
     exact (norm_sub_norm_le _ _).trans this
   calc
     β€–exp y - exp xβ€– = β€–exp (x + (y - x)) - exp xβ€– := by nth_rw 1 [hy_eq]
-    _ ≀ β€–y - xβ€– * β€–exp xβ€– + β€–exp xβ€– * β€–y - xβ€– ^ 2 := (h_sq (y - x) (hyx.le.trans hr_le))
+    _ ≀ β€–y - xβ€– * β€–exp xβ€– + β€–exp xβ€– * β€–y - xβ€– ^ 2 := h_sq (y - x) (hyx.le.trans hr_le)
     _ ≀ β€–y - xβ€– * β€–exp xβ€– + β€–exp xβ€– * (r * β€–y - xβ€–) :=
       (add_le_add_left (mul_le_mul le_rfl hyx_sq_le (sq_nonneg _) (norm_nonneg _)) _)
     _ = (1 + r) * β€–exp xβ€– * β€–y - xβ€– := by ring
feat: add notation for Real.sqrt (#12056)

This adds the notation √r for Real.sqrt r. The precedence is such that √x⁻¹ is parsed as √(x⁻¹); not because this is particularly desirable, but because it's the default and the choice doesn't really matter.

This is extracted from #7907, which adds a more general nth root typeclass. The idea is to perform all the boring substitutions downstream quickly, so that we can play around with custom elaborators with a much slower rate of code-rot. This PR also won't rot as quickly, as it does not forbid writing x.sqrt as that PR does.

While perhaps claiming √ for Real.sqrt is greedy; it:

  • Is far more common thatn NNReal.sqrt and Nat.sqrt
  • Is far more interesting to mathlib than sqrt on Float
  • Can be overloaded anyway, so this does not prevent downstream code using the notation on their own types.
  • Will be replaced by a more general typeclass in a future PR.

Zulip

Co-authored-by: Yury G. Kudryashov <urkud@urkud.name>

Diff
@@ -171,7 +171,7 @@ namespace Real
 
 variable {Ξ± : Type*} {x y z : ℝ} {l : Filter Ξ±}
 
-theorem exp_half (x : ℝ) : exp (x / 2) = sqrt (exp x) := by
+theorem exp_half (x : ℝ) : exp (x / 2) = √(exp x) := by
   rw [eq_comm, sqrt_eq_iff_sq_eq, sq, ← exp_add, add_halves] <;> exact (exp_pos _).le
 #align real.exp_half Real.exp_half
 
style: replace '.-/' by '. -/' (#11938)

Purely automatic replacement. If this is in any way controversial; I'm happy to just close this PR.

Diff
@@ -475,7 +475,7 @@ theorem tendsto_exp_comap_re_atTop : Tendsto exp (comap re atTop) (cobounded β„‚
   comap_exp_cobounded β–Έ tendsto_comap
 #align complex.tendsto_exp_comap_re_at_top Complex.tendsto_exp_comap_re_atTop
 
-/-- `Complex.exp z β†’ 0` as `Complex.re z β†’ -∞`.-/
+/-- `Complex.exp z β†’ 0` as `Complex.re z β†’ -∞`. -/
 theorem tendsto_exp_comap_re_atBot : Tendsto exp (comap re atBot) (𝓝 0) :=
   comap_exp_nhds_zero β–Έ tendsto_comap
 #align complex.tendsto_exp_comap_re_at_bot Complex.tendsto_exp_comap_re_atBot
feat(Analysis/PSeries): some summability results (#11150)

Summability of n ↦ 1 / |n + a| ^ s and n ↦ n ^ k exp (-r * n)

Diff
@@ -433,6 +433,12 @@ lemma summable_exp_nat_mul_iff {a : ℝ} :
 lemma summable_exp_neg_nat : Summable fun n : β„• ↦ exp (-n) := by
   simpa only [mul_neg_one] using summable_exp_nat_mul_iff.mpr neg_one_lt_zero
 
+lemma summable_pow_mul_exp_neg_nat_mul (k : β„•) {r : ℝ} (hr : 0 < r) :
+    Summable fun n : β„• ↦ n ^ k * exp (-r * n) := by
+  simp_rw [mul_comm (-r), exp_nat_mul]
+  apply summable_pow_mul_geometric_of_norm_lt_one
+  rwa [norm_of_nonneg (exp_nonneg _), exp_lt_one_iff, neg_lt_zero]
+
 end Real
 
 namespace Complex
chore: classify "@[simp] can prove" porting notes (#11474)

Classifies by adding issue number #10618 to porting notes claiming

@[simp] can prove

Diff
@@ -392,7 +392,7 @@ theorem isLittleO_exp_comp_exp_comp {f g : Ξ± β†’ ℝ} :
     imp_true_iff, tendsto_exp_comp_nhds_zero, neg_sub]
 #align real.is_o_exp_comp_exp_comp Real.isLittleO_exp_comp_exp_comp
 
--- Porting note: @[simp] can prove:  by simp only [@Asymptotics.isLittleO_one_left_iff,
+-- Porting note (#10618): @[simp] can prove:  by simp only [@Asymptotics.isLittleO_one_left_iff,
 --   Real.norm_eq_abs, Real.abs_exp, @Real.tendsto_exp_comp_atTop]
 theorem isLittleO_one_exp_comp {f : Ξ± β†’ ℝ} :
     ((fun _ => 1 : Ξ± β†’ ℝ) =o[l] fun x => exp (f x)) ↔ Tendsto f l atTop := by
chore: classify new theorem / theorem porting notes (#11432)

Classifies by adding issue number #10756 to porting notes claiming anything equivalent to:

  • "added theorem"
  • "added theorems"
  • "new theorem"
  • "new theorems"
  • "added lemma"
  • "new lemma"
  • "new lemmas"
Diff
@@ -353,12 +353,12 @@ theorem tendsto_exp_comp_nhds_zero {f : Ξ± β†’ ℝ} :
 theorem openEmbedding_exp : OpenEmbedding exp :=
   isOpen_Ioi.openEmbedding_subtype_val.comp expOrderIso.toHomeomorph.openEmbedding
 
--- Porting note: new lemma;
+-- Porting note (#10756): new lemma;
 -- Porting note (#11215): TODO: backport & make `@[simp]`
 theorem map_exp_nhds (x : ℝ) : map exp (𝓝 x) = 𝓝 (exp x) :=
   openEmbedding_exp.map_nhds_eq x
 
--- Porting note: new lemma;
+-- Porting note (#10756): new lemma;
 -- Porting note (#11215): TODO: backport & make `@[simp]`
 theorem comap_exp_nhds_exp (x : ℝ) : comap exp (𝓝 (exp x)) = 𝓝 x :=
   (openEmbedding_exp.nhds_eq_comap x).symm
chore: replace Ξ» by fun (#11301)

Per the style guidelines, Ξ» is disallowed in mathlib. This is close to exhaustive; I left some tactic code alone when it seemed to me that tactic could be upstreamed soon.

Notes

  • In lines I was modifying anyway, I also converted => to ↦.
  • Also contains some mild in-passing indentation fixes in Mathlib/Order/SupClosed.
  • Some doc comments still contained Lean 3 syntax Ξ» x, , which I also replaced.
Diff
@@ -68,7 +68,7 @@ theorem locally_lipschitz_exp {r : ℝ} (hr_nonneg : 0 ≀ r) (hr_le : r ≀ 1)
 theorem continuous_exp : Continuous exp :=
   continuous_iff_continuousAt.mpr fun x =>
     continuousAt_of_locally_lipschitz zero_lt_one (2 * β€–exp xβ€–)
-      (Ξ» y => by
+      (fun y ↦ by
         convert locally_lipschitz_exp zero_le_one le_rfl x y using 2
         congr
         ring)
chore: classify new lemma porting notes (#11217)

Classifies by adding issue number #10756 to porting notes claiming anything semantically equivalent to:

  • "new lemma"
  • "added lemma"
Diff
@@ -349,7 +349,7 @@ theorem tendsto_exp_comp_nhds_zero {f : Ξ± β†’ ℝ} :
   simp_rw [← comp_apply (f := exp), ← tendsto_comap_iff, comap_exp_nhds_zero]
 #align real.tendsto_exp_comp_nhds_zero Real.tendsto_exp_comp_nhds_zero
 
--- Porting note: new lemma
+-- Porting note (#10756): new lemma
 theorem openEmbedding_exp : OpenEmbedding exp :=
   isOpen_Ioi.openEmbedding_subtype_val.comp expOrderIso.toHomeomorph.openEmbedding
 
chore: classify todo porting notes (#11216)

Classifies by adding issue number #11215 to porting notes claiming "TODO".

Diff
@@ -353,11 +353,13 @@ theorem tendsto_exp_comp_nhds_zero {f : Ξ± β†’ ℝ} :
 theorem openEmbedding_exp : OpenEmbedding exp :=
   isOpen_Ioi.openEmbedding_subtype_val.comp expOrderIso.toHomeomorph.openEmbedding
 
--- Porting note: new lemma; TODO: backport & make `@[simp]`
+-- Porting note: new lemma;
+-- Porting note (#11215): TODO: backport & make `@[simp]`
 theorem map_exp_nhds (x : ℝ) : map exp (𝓝 x) = 𝓝 (exp x) :=
   openEmbedding_exp.map_nhds_eq x
 
--- Porting note: new lemma; TODO: backport & make `@[simp]`
+-- Porting note: new lemma;
+-- Porting note (#11215): TODO: backport & make `@[simp]`
 theorem comap_exp_nhds_exp (x : ℝ) : comap exp (𝓝 (exp x)) = 𝓝 x :=
   (openEmbedding_exp.nhds_eq_comap x).symm
 
chore: Rename monotonicity of / lemmas (#10634)

The new names and argument orders match the corresponding * lemmas, which I already took care of in a previous PR.

From LeanAPAP

Diff
@@ -235,9 +235,7 @@ theorem tendsto_exp_div_pow_atTop (n : β„•) : Tendsto (fun x => exp x / x ^ n) a
   calc
     x ^ n ≀ ⌈xβŒ‰β‚Š ^ n := mod_cast pow_le_pow_left hxβ‚€.le (Nat.le_ceil _) _
     _ ≀ exp ⌈xβŒ‰β‚Š / (exp 1 * C) := mod_cast (hN _ (Nat.lt_ceil.2 hx).le).le
-    _ ≀ exp (x + 1) / (exp 1 * C) :=
-      (div_le_div_of_le (mul_pos (exp_pos _) hCβ‚€).le
-        (exp_le_exp.2 <| (Nat.ceil_lt_add_one hxβ‚€.le).le))
+    _ ≀ exp (x + 1) / (exp 1 * C) := by gcongr; exact (Nat.ceil_lt_add_one hxβ‚€.le).le
     _ = exp x / C := by rw [add_comm, exp_add, mul_div_mul_left _ _ (exp_pos _).ne']
 #align real.tendsto_exp_div_pow_at_top Real.tendsto_exp_div_pow_atTop
 
chore: redistribute tags for fun_prop regarding continuity across the library (#10494)

Co-authored-by: Yury G. Kudryashov <urkud@urkud.name>

Diff
@@ -99,15 +99,18 @@ theorem ContinuousWithinAt.cexp (h : ContinuousWithinAt f s x) :
   h.cexp
 #align continuous_within_at.cexp ContinuousWithinAt.cexp
 
+@[fun_prop]
 nonrec
 theorem ContinuousAt.cexp (h : ContinuousAt f x) : ContinuousAt (fun y => exp (f y)) x :=
   h.cexp
 #align continuous_at.cexp ContinuousAt.cexp
 
+@[fun_prop]
 theorem ContinuousOn.cexp (h : ContinuousOn f s) : ContinuousOn (fun y => exp (f y)) s :=
   fun x hx => (h x hx).cexp
 #align continuous_on.cexp ContinuousOn.cexp
 
+@[fun_prop]
 theorem Continuous.cexp (h : Continuous f) : Continuous fun y => exp (f y) :=
   continuous_iff_continuousAt.2 fun _ => h.continuousAt.cexp
 #align continuous.cexp Continuous.cexp
@@ -146,15 +149,18 @@ theorem ContinuousWithinAt.exp (h : ContinuousWithinAt f s x) :
   h.exp
 #align continuous_within_at.exp ContinuousWithinAt.exp
 
+@[fun_prop]
 nonrec
 theorem ContinuousAt.exp (h : ContinuousAt f x) : ContinuousAt (fun y => exp (f y)) x :=
   h.exp
 #align continuous_at.exp ContinuousAt.exp
 
+@[fun_prop]
 theorem ContinuousOn.exp (h : ContinuousOn f s) : ContinuousOn (fun y => exp (f y)) s := fun x hx =>
   (h x hx).exp
 #align continuous_on.exp ContinuousOn.exp
 
+@[fun_prop]
 theorem Continuous.exp (h : Continuous f) : Continuous fun y => exp (f y) :=
   continuous_iff_continuousAt.2 fun _ => h.continuousAt.exp
 #align continuous.exp Continuous.exp
chore(Analysis/SpecificLimits/* and others): rename _0 -> _zero, _1 -> _one (#10077)

See here on Zulip.

This PR changes a bunch of names containing nhds_0 or/and lt_1 to nhds_zero or/and lt_one.

Diff
@@ -179,18 +179,20 @@ theorem tendsto_exp_atTop : Tendsto exp atTop atTop := by
 
 /-- The real exponential function tends to `0` at `-∞` or, equivalently, `exp(-x)` tends to `0`
 at `+∞` -/
-theorem tendsto_exp_neg_atTop_nhds_0 : Tendsto (fun x => exp (-x)) atTop (𝓝 0) :=
+theorem tendsto_exp_neg_atTop_nhds_zero : Tendsto (fun x => exp (-x)) atTop (𝓝 0) :=
   (tendsto_inv_atTop_zero.comp tendsto_exp_atTop).congr fun x => (exp_neg x).symm
-#align real.tendsto_exp_neg_at_top_nhds_0 Real.tendsto_exp_neg_atTop_nhds_0
+#align real.tendsto_exp_neg_at_top_nhds_0 Real.tendsto_exp_neg_atTop_nhds_zero
+@[deprecated] alias tendsto_exp_neg_atTop_nhds_0 := tendsto_exp_neg_atTop_nhds_zero
 
 /-- The real exponential function tends to `1` at `0`. -/
-theorem tendsto_exp_nhds_0_nhds_1 : Tendsto exp (𝓝 0) (𝓝 1) := by
+theorem tendsto_exp_nhds_zero_nhds_one : Tendsto exp (𝓝 0) (𝓝 1) := by
   convert continuous_exp.tendsto 0
   simp
-#align real.tendsto_exp_nhds_0_nhds_1 Real.tendsto_exp_nhds_0_nhds_1
+#align real.tendsto_exp_nhds_0_nhds_1 Real.tendsto_exp_nhds_zero_nhds_one
+@[deprecated] alias tendsto_exp_nhds_0_nhds_1 := tendsto_exp_nhds_zero_nhds_one
 
 theorem tendsto_exp_atBot : Tendsto exp atBot (𝓝 0) :=
-  (tendsto_exp_neg_atTop_nhds_0.comp tendsto_neg_atBot_atTop).congr fun x =>
+  (tendsto_exp_neg_atTop_nhds_zero.comp tendsto_neg_atBot_atTop).congr fun x =>
     congr_arg exp <| neg_neg x
 #align real.tendsto_exp_at_bot Real.tendsto_exp_atBot
 
@@ -234,11 +236,12 @@ theorem tendsto_exp_div_pow_atTop (n : β„•) : Tendsto (fun x => exp x / x ^ n) a
 #align real.tendsto_exp_div_pow_at_top Real.tendsto_exp_div_pow_atTop
 
 /-- The function `x^n * exp(-x)` tends to `0` at `+∞`, for any natural number `n`. -/
-theorem tendsto_pow_mul_exp_neg_atTop_nhds_0 (n : β„•) :
+theorem tendsto_pow_mul_exp_neg_atTop_nhds_zero (n : β„•) :
     Tendsto (fun x => x ^ n * exp (-x)) atTop (𝓝 0) :=
   (tendsto_inv_atTop_zero.comp (tendsto_exp_div_pow_atTop n)).congr fun x => by
     rw [comp_apply, inv_eq_one_div, div_div_eq_mul_div, one_mul, div_eq_mul_inv, exp_neg]
-#align real.tendsto_pow_mul_exp_neg_at_top_nhds_0 Real.tendsto_pow_mul_exp_neg_atTop_nhds_0
+#align real.tendsto_pow_mul_exp_neg_at_top_nhds_0 Real.tendsto_pow_mul_exp_neg_atTop_nhds_zero
+@[deprecated] alias tendsto_pow_mul_exp_neg_atTop_nhds_0 := tendsto_pow_mul_exp_neg_atTop_nhds_zero
 
 /-- The function `(b * exp x + c) / (x ^ n)` tends to `+∞` at `+∞`, for any natural number
 `n` and any real numbers `b` and `c` such that `b` is positive. -/
@@ -418,7 +421,7 @@ set_option linter.uppercaseLean3 false in
 
 lemma summable_exp_nat_mul_iff {a : ℝ} :
     Summable (fun n : β„• ↦ exp (n * a)) ↔ a < 0 := by
-  simp only [exp_nat_mul, summable_geometric_iff_norm_lt_1, norm_of_nonneg (exp_nonneg _),
+  simp only [exp_nat_mul, summable_geometric_iff_norm_lt_one, norm_of_nonneg (exp_nonneg _),
     exp_lt_one_iff]
 
 lemma summable_exp_neg_nat : Summable fun n : β„• ↦ exp (-n) := by
feat(NumberTheory/ModularForms): two-variable Jacobi theta (#9666)

Add a more general version of the Jacobi theta function with a second variable, and prove the transformation law for this more general function rather than just for the one-variable version. Preparatory to functional equations for Dirichlet L-functions.

Diff
@@ -416,6 +416,14 @@ theorem isTheta_exp_comp_one {f : Ξ± β†’ ℝ} :
 set_option linter.uppercaseLean3 false in
 #align real.is_Theta_exp_comp_one Real.isTheta_exp_comp_one
 
+lemma summable_exp_nat_mul_iff {a : ℝ} :
+    Summable (fun n : β„• ↦ exp (n * a)) ↔ a < 0 := by
+  simp only [exp_nat_mul, summable_geometric_iff_norm_lt_1, norm_of_nonneg (exp_nonneg _),
+    exp_lt_one_iff]
+
+lemma summable_exp_neg_nat : Summable fun n : β„• ↦ exp (-n) := by
+  simpa only [mul_neg_one] using summable_exp_nat_mul_iff.mpr neg_one_lt_zero
+
 end Real
 
 namespace Complex
chore: Rename pow monotonicity lemmas (#9095)

The names for lemmas about monotonicity of (a ^ Β·) and (Β· ^ n) were a mess. This PR tidies up everything related by following the naming convention for (a * Β·) and (Β· * b). Namely, (a ^ Β·) is pow_right and (Β· ^ n) is pow_left in lemma names. All lemma renames follow the corresponding multiplication lemma names closely.

Renames

Algebra.GroupPower.Order

  • pow_mono β†’ pow_right_mono
  • pow_le_pow β†’ pow_le_pow_right
  • pow_le_pow_of_le_left β†’ pow_le_pow_left
  • pow_lt_pow_of_lt_left β†’ pow_lt_pow_left
  • strictMonoOn_pow β†’ pow_left_strictMonoOn
  • pow_strictMono_right β†’ pow_right_strictMono
  • pow_lt_pow β†’ pow_lt_pow_right
  • pow_lt_pow_iff β†’ pow_lt_pow_iff_right
  • pow_le_pow_iff β†’ pow_le_pow_iff_right
  • self_lt_pow β†’ lt_self_pow
  • strictAnti_pow β†’ pow_right_strictAnti
  • pow_lt_pow_iff_of_lt_one β†’ pow_lt_pow_iff_right_of_lt_one
  • pow_lt_pow_of_lt_one β†’ pow_lt_pow_right_of_lt_one
  • lt_of_pow_lt_pow β†’ lt_of_pow_lt_pow_left
  • le_of_pow_le_pow β†’ le_of_pow_le_pow_left
  • pow_lt_powβ‚€ β†’ pow_lt_pow_rightβ‚€

Algebra.GroupPower.CovariantClass

  • pow_le_pow_of_le_left' β†’ pow_le_pow_left'
  • nsmul_le_nsmul_of_le_right β†’ nsmul_le_nsmul_right
  • pow_lt_pow' β†’ pow_lt_pow_right'
  • nsmul_lt_nsmul β†’ nsmul_lt_nsmul_left
  • pow_strictMono_left β†’ pow_right_strictMono'
  • nsmul_strictMono_right β†’ nsmul_left_strictMono
  • StrictMono.pow_right' β†’ StrictMono.pow_const
  • StrictMono.nsmul_left β†’ StrictMono.const_nsmul
  • pow_strictMono_right' β†’ pow_left_strictMono
  • nsmul_strictMono_left β†’ nsmul_right_strictMono
  • Monotone.pow_right β†’ Monotone.pow_const
  • Monotone.nsmul_left β†’ Monotone.const_nsmul
  • lt_of_pow_lt_pow' β†’ lt_of_pow_lt_pow_left'
  • lt_of_nsmul_lt_nsmul β†’ lt_of_nsmul_lt_nsmul_right
  • pow_le_pow' β†’ pow_le_pow_right'
  • nsmul_le_nsmul β†’ nsmul_le_nsmul_left
  • pow_le_pow_of_le_one' β†’ pow_le_pow_right_of_le_one'
  • nsmul_le_nsmul_of_nonpos β†’ nsmul_le_nsmul_left_of_nonpos
  • le_of_pow_le_pow' β†’ le_of_pow_le_pow_left'
  • le_of_nsmul_le_nsmul' β†’ le_of_nsmul_le_nsmul_right'
  • pow_le_pow_iff' β†’ pow_le_pow_iff_right'
  • nsmul_le_nsmul_iff β†’ nsmul_le_nsmul_iff_left
  • pow_lt_pow_iff' β†’ pow_lt_pow_iff_right'
  • nsmul_lt_nsmul_iff β†’ nsmul_lt_nsmul_iff_left

Data.Nat.Pow

  • Nat.pow_lt_pow_of_lt_left β†’ Nat.pow_lt_pow_left
  • Nat.pow_le_iff_le_left β†’ Nat.pow_le_pow_iff_left
  • Nat.pow_lt_iff_lt_left β†’ Nat.pow_lt_pow_iff_left

Lemmas added

  • pow_le_pow_iff_left
  • pow_lt_pow_iff_left
  • pow_right_injective
  • pow_right_inj
  • Nat.pow_le_pow_left to have the correct name since Nat.pow_le_pow_of_le_left is in Std.
  • Nat.pow_le_pow_right to have the correct name since Nat.pow_le_pow_of_le_right is in Std.

Lemmas removed

  • self_le_pow was a duplicate of le_self_pow.
  • Nat.pow_lt_pow_of_lt_right is defeq to pow_lt_pow_right.
  • Nat.pow_right_strictMono is defeq to pow_right_strictMono.
  • Nat.pow_le_iff_le_right is defeq to pow_le_pow_iff_right.
  • Nat.pow_lt_iff_lt_right is defeq to pow_lt_pow_iff_right.

Other changes

  • A bunch of proofs have been golfed.
  • Some lemma assumptions have been turned from 0 < n or 1 ≀ n to n β‰  0.
  • A few Nat lemmas have been protected.
  • One docstring has been fixed.
Diff
@@ -225,7 +225,7 @@ theorem tendsto_exp_div_pow_atTop (n : β„•) : Tendsto (fun x => exp x / x ^ n) a
   have hxβ‚€ : 0 < x := (Nat.cast_nonneg N).trans_lt hx
   rw [Set.mem_Ici, le_div_iff (pow_pos hxβ‚€ _), ← le_div_iff' hCβ‚€]
   calc
-    x ^ n ≀ ⌈xβŒ‰β‚Š ^ n := mod_cast pow_le_pow_of_le_left hxβ‚€.le (Nat.le_ceil _) _
+    x ^ n ≀ ⌈xβŒ‰β‚Š ^ n := mod_cast pow_le_pow_left hxβ‚€.le (Nat.le_ceil _) _
     _ ≀ exp ⌈xβŒ‰β‚Š / (exp 1 * C) := mod_cast (hN _ (Nat.lt_ceil.2 hx).le).le
     _ ≀ exp (x + 1) / (exp 1 * C) :=
       (div_le_div_of_le (mul_pos (exp_pos _) hCβ‚€).le
chore: space after ← (#8178)

Co-authored-by: Moritz Firsching <firsching@google.com>

Diff
@@ -307,12 +307,12 @@ theorem comap_exp_atTop : comap exp atTop = atTop := by
 @[simp]
 theorem tendsto_exp_comp_atTop {f : Ξ± β†’ ℝ} :
     Tendsto (fun x => exp (f x)) l atTop ↔ Tendsto f l atTop := by
-  simp_rw [←comp_apply (f := exp), ← tendsto_comap_iff, comap_exp_atTop]
+  simp_rw [← comp_apply (f := exp), ← tendsto_comap_iff, comap_exp_atTop]
 #align real.tendsto_exp_comp_at_top Real.tendsto_exp_comp_atTop
 
 theorem tendsto_comp_exp_atTop {f : ℝ β†’ Ξ±} :
     Tendsto (fun x => f (exp x)) atTop l ↔ Tendsto f atTop l := by
-  simp_rw [←comp_apply (g := exp), ← tendsto_map'_iff, map_exp_atTop]
+  simp_rw [← comp_apply (g := exp), ← tendsto_map'_iff, map_exp_atTop]
 #align real.tendsto_comp_exp_at_top Real.tendsto_comp_exp_atTop
 
 @[simp]
@@ -339,7 +339,7 @@ theorem comap_exp_nhds_zero : comap exp (𝓝 0) = atBot :=
 @[simp]
 theorem tendsto_exp_comp_nhds_zero {f : Ξ± β†’ ℝ} :
     Tendsto (fun x => exp (f x)) l (𝓝 0) ↔ Tendsto f l atBot := by
-  simp_rw [←comp_apply (f := exp), ← tendsto_comap_iff, comap_exp_nhds_zero]
+  simp_rw [← comp_apply (f := exp), ← tendsto_comap_iff, comap_exp_nhds_zero]
 #align real.tendsto_exp_comp_nhds_zero Real.tendsto_exp_comp_nhds_zero
 
 -- Porting note: new lemma
@@ -443,7 +443,7 @@ theorem comap_exp_nhdsWithin_zero : comap exp (𝓝[β‰ ] 0) = comap re atBot :=
 
 theorem tendsto_exp_nhds_zero_iff {Ξ± : Type*} {l : Filter Ξ±} {f : Ξ± β†’ β„‚} :
     Tendsto (fun x => exp (f x)) l (𝓝 0) ↔ Tendsto (fun x => re (f x)) l atBot := by
-  simp_rw [←comp_apply (f := exp), ← tendsto_comap_iff, comap_exp_nhds_zero, tendsto_comap_iff]
+  simp_rw [← comp_apply (f := exp), ← tendsto_comap_iff, comap_exp_nhds_zero, tendsto_comap_iff]
   rfl
 #align complex.tendsto_exp_nhds_zero_iff Complex.tendsto_exp_nhds_zero_iff
 
refactor: get rid of comap norm atTop (#8262)

Co-authored-by: Jireh Loreaux <loreaujy@gmail.com>

Diff
@@ -23,9 +23,9 @@ exp
 
 noncomputable section
 
-open Finset Filter Metric Asymptotics Set Function
+open Finset Filter Metric Asymptotics Set Function Bornology
 
-open Classical Topology
+open scoped Classical Topology
 
 namespace Complex
 
@@ -420,20 +420,20 @@ end Real
 
 namespace Complex
 
-theorem comap_exp_comap_abs_atTop : comap exp (comap abs atTop) = comap re atTop :=
+@[simp]
+theorem comap_exp_cobounded : comap exp (cobounded β„‚) = comap re atTop :=
   calc
-    comap exp (comap abs atTop) = comap re (comap Real.exp atTop) := by
-      simp only [comap_comap, (· ∘ ·), abs_exp]
+    comap exp (cobounded β„‚) = comap re (comap Real.exp atTop) := by
+      simp only [← comap_norm_atTop, Complex.norm_eq_abs, comap_comap, (Β· ∘ Β·), abs_exp]
     _ = comap re atTop := by rw [Real.comap_exp_atTop]
+#align complex.comap_exp_comap_abs_at_top Complex.comap_exp_cobounded
 
-#align complex.comap_exp_comap_abs_at_top Complex.comap_exp_comap_abs_atTop
-
+@[simp]
 theorem comap_exp_nhds_zero : comap exp (𝓝 0) = comap re atBot :=
   calc
     comap exp (𝓝 0) = comap re (comap Real.exp (𝓝 0)) := by
       simp only [comap_comap, ← comap_abs_nhds_zero, (Β· ∘ Β·), abs_exp]
     _ = comap re atBot := by rw [Real.comap_exp_nhds_zero]
-
 #align complex.comap_exp_nhds_zero Complex.comap_exp_nhds_zero
 
 theorem comap_exp_nhdsWithin_zero : comap exp (𝓝[β‰ ] 0) = comap re atBot := by
@@ -447,9 +447,9 @@ theorem tendsto_exp_nhds_zero_iff {Ξ± : Type*} {l : Filter Ξ±} {f : Ξ± β†’ β„‚}
   rfl
 #align complex.tendsto_exp_nhds_zero_iff Complex.tendsto_exp_nhds_zero_iff
 
-/-- `Complex.abs (Complex.exp z) β†’ ∞` as `Complex.re z β†’ ∞`. TODO: use `Bornology.cobounded`. -/
-theorem tendsto_exp_comap_re_atTop : Tendsto exp (comap re atTop) (comap abs atTop) :=
-  comap_exp_comap_abs_atTop β–Έ tendsto_comap
+/-- `Complex.abs (Complex.exp z) β†’ ∞` as `Complex.re z β†’ ∞`. -/
+theorem tendsto_exp_comap_re_atTop : Tendsto exp (comap re atTop) (cobounded β„‚) :=
+  comap_exp_cobounded β–Έ tendsto_comap
 #align complex.tendsto_exp_comap_re_at_top Complex.tendsto_exp_comap_re_atTop
 
 /-- `Complex.exp z β†’ 0` as `Complex.re z β†’ -∞`.-/
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
@@ -225,8 +225,8 @@ theorem tendsto_exp_div_pow_atTop (n : β„•) : Tendsto (fun x => exp x / x ^ n) a
   have hxβ‚€ : 0 < x := (Nat.cast_nonneg N).trans_lt hx
   rw [Set.mem_Ici, le_div_iff (pow_pos hxβ‚€ _), ← le_div_iff' hCβ‚€]
   calc
-    x ^ n ≀ ⌈xβŒ‰β‚Š ^ n := by exact_mod_cast pow_le_pow_of_le_left hxβ‚€.le (Nat.le_ceil _) _
-    _ ≀ exp ⌈xβŒ‰β‚Š / (exp 1 * C) := by exact_mod_cast (hN _ (Nat.lt_ceil.2 hx).le).le
+    x ^ n ≀ ⌈xβŒ‰β‚Š ^ n := mod_cast pow_le_pow_of_le_left hxβ‚€.le (Nat.le_ceil _) _
+    _ ≀ exp ⌈xβŒ‰β‚Š / (exp 1 * C) := mod_cast (hN _ (Nat.lt_ceil.2 hx).le).le
     _ ≀ exp (x + 1) / (exp 1 * C) :=
       (div_le_div_of_le (mul_pos (exp_pos _) hCβ‚€).le
         (exp_le_exp.2 <| (Nat.ceil_lt_add_one hxβ‚€.le).le))
chore: missing spaces after rcases, convert and congrm (#7725)

Replace rcases( with rcases (. Same thing for convert( and congrm(. No other change.

Diff
@@ -259,12 +259,12 @@ theorem tendsto_div_pow_mul_exp_add_atTop (b c : ℝ) (n : β„•) (hb : 0 β‰  b) :
     Tendsto (fun x => x ^ n / (b * exp x + c)) atTop (𝓝 0) := by
   have H : βˆ€ d e, 0 < d β†’ Tendsto (fun x : ℝ => x ^ n / (d * exp x + e)) atTop (𝓝 0) := by
     intro b' c' h
-    convert(tendsto_mul_exp_add_div_pow_atTop b' c' n h).inv_tendsto_atTop using 1
+    convert (tendsto_mul_exp_add_div_pow_atTop b' c' n h).inv_tendsto_atTop using 1
     ext x
     simp
   cases' lt_or_gt_of_ne hb with h h
   Β· exact H b c h
-  Β· convert(H (-b) (-c) (neg_pos.mpr h)).neg using 1
+  Β· convert (H (-b) (-c) (neg_pos.mpr h)).neg using 1
     Β· ext x
       field_simp
       rw [← neg_add (b * exp x) c, neg_div_neg_eq]
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
@@ -82,7 +82,7 @@ end Complex
 
 section ComplexContinuousExpComp
 
-variable {Ξ± : Type _}
+variable {Ξ± : Type*}
 
 open Complex
 
@@ -129,7 +129,7 @@ end Real
 
 section RealContinuousExpComp
 
-variable {Ξ± : Type _}
+variable {Ξ± : Type*}
 
 open Real
 
@@ -163,7 +163,7 @@ end RealContinuousExpComp
 
 namespace Real
 
-variable {Ξ± : Type _} {x y z : ℝ} {l : Filter Ξ±}
+variable {Ξ± : Type*} {x y z : ℝ} {l : Filter Ξ±}
 
 theorem exp_half (x : ℝ) : exp (x / 2) = sqrt (exp x) := by
   rw [eq_comm, sqrt_eq_iff_sq_eq, sq, ← exp_add, add_halves] <;> exact (exp_pos _).le
@@ -441,7 +441,7 @@ theorem comap_exp_nhdsWithin_zero : comap exp (𝓝[β‰ ] 0) = comap re atBot :=
   simp [nhdsWithin, comap_exp_nhds_zero, this]
 #align complex.comap_exp_nhds_within_zero Complex.comap_exp_nhdsWithin_zero
 
-theorem tendsto_exp_nhds_zero_iff {Ξ± : Type _} {l : Filter Ξ±} {f : Ξ± β†’ β„‚} :
+theorem tendsto_exp_nhds_zero_iff {Ξ± : Type*} {l : Filter Ξ±} {f : Ξ± β†’ β„‚} :
     Tendsto (fun x => exp (f x)) l (𝓝 0) ↔ Tendsto (fun x => re (f x)) l atBot := by
   simp_rw [←comp_apply (f := exp), ← tendsto_comap_iff, comap_exp_nhds_zero, tendsto_comap_iff]
   rfl
feat: miscellaneous results about Filter.IsBoundedUnder (#6287)
Diff
@@ -207,7 +207,7 @@ theorem isBoundedUnder_ge_exp_comp (l : Filter Ξ±) (f : Ξ± β†’ ℝ) :
 @[simp]
 theorem isBoundedUnder_le_exp_comp {f : Ξ± β†’ ℝ} :
     (IsBoundedUnder (Β· ≀ Β·) l fun x => exp (f x)) ↔ IsBoundedUnder (Β· ≀ Β·) l f :=
-  exp_monotone.isBoundedUnder_le_comp tendsto_exp_atTop
+  exp_monotone.isBoundedUnder_le_comp_iff tendsto_exp_atTop
 #align real.is_bounded_under_le_exp_comp Real.isBoundedUnder_le_exp_comp
 
 /-- The function `exp(x)/x^n` tends to `+∞` at `+∞`, for any natural number `n` -/
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,16 +2,13 @@
 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
-
-! This file was ported from Lean 3 source module analysis.special_functions.exp
-! leanprover-community/mathlib commit ba5ff5ad5d120fb0ef094ad2994967e9bfaf5112
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathlib.Analysis.Asymptotics.Theta
 import Mathlib.Analysis.Complex.Basic
 import Mathlib.Analysis.SpecificLimits.Normed
 
+#align_import analysis.special_functions.exp from "leanprover-community/mathlib"@"ba5ff5ad5d120fb0ef094ad2994967e9bfaf5112"
+
 /-!
 # Complex and real exponential
 
chore: fix upper/lowercase in comments (#4360)
  • Run a non-interactive version of fix-comments.py on all files.
  • Go through the diff and manually add/discard/edit chunks.
Diff
@@ -450,7 +450,7 @@ theorem tendsto_exp_nhds_zero_iff {Ξ± : Type _} {l : Filter Ξ±} {f : Ξ± β†’ β„‚}
   rfl
 #align complex.tendsto_exp_nhds_zero_iff Complex.tendsto_exp_nhds_zero_iff
 
-/-- `Complex.abs (complex.exp z) β†’ ∞` as `Complex.re z β†’ ∞`. TODO: use `Bornology.cobounded`. -/
+/-- `Complex.abs (Complex.exp z) β†’ ∞` as `Complex.re z β†’ ∞`. TODO: use `Bornology.cobounded`. -/
 theorem tendsto_exp_comap_re_atTop : Tendsto exp (comap re atTop) (comap abs atTop) :=
   comap_exp_comap_abs_atTop β–Έ tendsto_comap
 #align complex.tendsto_exp_comap_re_at_top Complex.tendsto_exp_comap_re_atTop
feat: port Analysis.Normed.MulAction + #19053 (#4288)

Both the new file and the other fixes are done in the same PR, since according to the description of leanprover-community/mathlib#19053 "this should be very easy to forward-port".

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
 
 ! This file was ported from Lean 3 source module analysis.special_functions.exp
-! leanprover-community/mathlib commit 2c1d8ca2812b64f88992a5294ea3dba144755cd1
+! leanprover-community/mathlib commit ba5ff5ad5d120fb0ef094ad2994967e9bfaf5112
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -44,7 +44,6 @@ theorem exp_bound_sq (x z : β„‚) (hz : β€–zβ€– ≀ 1) :
     _ = β€–exp xβ€– * β€–exp z - 1 - zβ€– := (norm_mul _ _)
     _ ≀ β€–exp xβ€– * β€–zβ€– ^ 2 :=
       mul_le_mul_of_nonneg_left (abs_exp_sub_one_sub_id_le hz) (norm_nonneg _)
-
 #align complex.exp_bound_sq Complex.exp_bound_sq
 
 theorem locally_lipschitz_exp {r : ℝ} (hr_nonneg : 0 ≀ r) (hr_le : r ≀ 1) (x y : β„‚)
@@ -64,7 +63,6 @@ theorem locally_lipschitz_exp {r : ℝ} (hr_nonneg : 0 ≀ r) (hr_le : r ≀ 1)
     _ ≀ β€–y - xβ€– * β€–exp xβ€– + β€–exp xβ€– * (r * β€–y - xβ€–) :=
       (add_le_add_left (mul_le_mul le_rfl hyx_sq_le (sq_nonneg _) (norm_nonneg _)) _)
     _ = (1 + r) * β€–exp xβ€– * β€–y - xβ€– := by ring
-
 #align complex.locally_lipschitz_exp Complex.locally_lipschitz_exp
 
 -- Porting note: proof by term mode `locally_lipschitz_exp zero_le_one le_rfl x`
@@ -236,7 +234,6 @@ theorem tendsto_exp_div_pow_atTop (n : β„•) : Tendsto (fun x => exp x / x ^ n) a
       (div_le_div_of_le (mul_pos (exp_pos _) hCβ‚€).le
         (exp_le_exp.2 <| (Nat.ceil_lt_add_one hxβ‚€.le).le))
     _ = exp x / C := by rw [add_comm, exp_add, mul_div_mul_left _ _ (exp_pos _).ne']
-
 #align real.tendsto_exp_div_pow_at_top Real.tendsto_exp_div_pow_atTop
 
 /-- The function `x^n * exp(-x)` tends to `0` at `+∞`, for any natural number `n`. -/
feat: port Analysis.SpecialFunctions.Log.Basic (#4019)

Includes some additional declarations and golfs from #4017.

Co-authored-by: Yury G. Kudryashov <urkud@urkud.name>

Diff
@@ -348,6 +348,18 @@ theorem tendsto_exp_comp_nhds_zero {f : Ξ± β†’ ℝ} :
   simp_rw [←comp_apply (f := exp), ← tendsto_comap_iff, comap_exp_nhds_zero]
 #align real.tendsto_exp_comp_nhds_zero Real.tendsto_exp_comp_nhds_zero
 
+-- Porting note: new lemma
+theorem openEmbedding_exp : OpenEmbedding exp :=
+  isOpen_Ioi.openEmbedding_subtype_val.comp expOrderIso.toHomeomorph.openEmbedding
+
+-- Porting note: new lemma; TODO: backport & make `@[simp]`
+theorem map_exp_nhds (x : ℝ) : map exp (𝓝 x) = 𝓝 (exp x) :=
+  openEmbedding_exp.map_nhds_eq x
+
+-- Porting note: new lemma; TODO: backport & make `@[simp]`
+theorem comap_exp_nhds_exp (x : ℝ) : comap exp (𝓝 (exp x)) = 𝓝 x :=
+  (openEmbedding_exp.nhds_eq_comap x).symm
+
 theorem isLittleO_pow_exp_atTop {n : β„•} : (fun x : ℝ => x ^ n) =o[atTop] Real.exp := by
   simpa [isLittleO_iff_tendsto fun x hx => ((exp_pos x).ne' hx).elim] using
     tendsto_div_pow_mul_exp_add_atTop 1 0 n zero_ne_one
feat: port Analysis.SpecialFunctions.Exp (#3988)

Dependencies 12 + 710

711 files ported (98.3%)
313617 lines ported (98.2%)
Show graph

The unported dependencies are

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