analysis.special_functions.complex.log ⟷ Mathlib.Analysis.SpecialFunctions.Complex.Log

This file has been ported!

Changes since the initial port

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

Changes in mathlib3

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(last sync)

Changes in mathlib3port

mathlib3
mathlib3port
Diff
@@ -59,8 +59,8 @@ theorem log_im_le_pi (x : β„‚) : (log x).im ≀ Ο€ := by simp only [log_im, arg_
 theorem exp_log {x : β„‚} (hx : x β‰  0) : exp (log x) = x := by
   rw [log, exp_add_mul_I, ← of_real_sin, sin_arg, ← of_real_cos, cos_arg hx, ← of_real_exp,
     Real.exp_log (abs.pos hx), mul_add, of_real_div, of_real_div,
-    mul_div_cancel' _ (of_real_ne_zero.2 <| abs.ne_zero hx), ← mul_assoc,
-    mul_div_cancel' _ (of_real_ne_zero.2 <| abs.ne_zero hx), re_add_im]
+    mul_div_cancelβ‚€ _ (of_real_ne_zero.2 <| abs.ne_zero hx), ← mul_assoc,
+    mul_div_cancelβ‚€ _ (of_real_ne_zero.2 <| abs.ne_zero hx), re_add_im]
 #align complex.exp_log Complex.exp_log
 -/
 
@@ -165,8 +165,8 @@ theorem log_inv_eq_ite (x : β„‚) : log x⁻¹ = if x.arg = Ο€ then -conj (log x)
   Β· simp_rw [log, map_add, map_mul, conj_of_real, conj_I, norm_sq_eq_abs, Real.log_pow,
       Nat.cast_two, of_real_mul, of_real_bit0, of_real_one, neg_add, mul_neg, two_mul, neg_neg]
     split_ifs
-    Β· rw [add_sub_right_comm, sub_add_cancel']
-    Β· rw [add_sub_right_comm, sub_add_cancel']
+    Β· rw [add_sub_right_comm, sub_add_cancel_left]
+    Β· rw [add_sub_right_comm, sub_add_cancel_left]
   Β· rwa [inv_pos, Complex.normSq_pos]
   Β· rwa [map_ne_zero]
 #align complex.log_inv_eq_ite Complex.log_inv_eq_ite
Diff
@@ -221,7 +221,7 @@ theorem countable_preimage_exp {s : Set β„‚} : (exp ⁻¹' s).Countable ↔ s.Co
     rcases em (βˆƒ w, NormedSpace.exp w = z) with (⟨w, rfl⟩ | hne)
     Β· simp only [preimage, mem_singleton_iff, exp_eq_exp_iff_exists_int, set_of_exists]
       exact countable_Union fun m => countable_singleton _
-    Β· push_neg at hne ; simp [preimage, hne]
+    Β· push_neg at hne; simp [preimage, hne]
 #align complex.countable_preimage_exp Complex.countable_preimage_exp
 -/
 
Diff
@@ -192,7 +192,7 @@ theorem exp_eq_one_iff {x : β„‚} : exp x = 1 ↔ βˆƒ n : β„€, x = n * (2 * Ο€ *
     rw [Int.cast_neg, neg_mul, eq_neg_iff_add_eq_zero]
     have : (x + n * (2 * Ο€ * I)).im ∈ Ioc (-Ο€) Ο€ := by simpa [two_mul, mul_add] using hn
     rw [← log_exp this.1 this.2, exp_periodic.int_mul n, h, log_one]
-  · rintro ⟨n, rfl⟩; exact (exp_periodic.int_mul n).Eq.trans exp_zero
+  · rintro ⟨n, rfl⟩; exact (exp_periodic.int_mul n).Eq.trans NormedSpace.exp_zero
 #align complex.exp_eq_one_iff Complex.exp_eq_one_iff
 -/
 
@@ -213,12 +213,12 @@ theorem exp_eq_exp_iff_exists_int {x y : β„‚} : exp x = exp y ↔ βˆƒ n : β„€, x
 theorem countable_preimage_exp {s : Set β„‚} : (exp ⁻¹' s).Countable ↔ s.Countable :=
   by
   refine' ⟨fun hs => _, fun hs => _⟩
-  Β· refine' ((hs.image exp).insert 0).mono _
+  Β· refine' ((hs.image NormedSpace.exp).insert 0).mono _
     rw [image_preimage_eq_inter_range, range_exp, ← diff_eq, ← union_singleton, diff_union_self]
     exact subset_union_left _ _
   Β· rw [← bUnion_preimage_singleton]
     refine' hs.bUnion fun z hz => _
-    rcases em (βˆƒ w, exp w = z) with (⟨w, rfl⟩ | hne)
+    rcases em (βˆƒ w, NormedSpace.exp w = z) with (⟨w, rfl⟩ | hne)
     Β· simp only [preimage, mem_singleton_iff, exp_eq_exp_iff_exists_int, set_of_exists]
       exact countable_Union fun m => countable_singleton _
     Β· push_neg at hne ; simp [preimage, hne]
Diff
@@ -3,8 +3,8 @@ Copyright (c) 2018 Chris Hughes. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Chris Hughes, Abhimanyu Pallavi Sudhir, Jean Lo, Calle SΓΆnne, Benjamin Davidson
 -/
-import Mathbin.Analysis.SpecialFunctions.Complex.Arg
-import Mathbin.Analysis.SpecialFunctions.Log.Basic
+import Analysis.SpecialFunctions.Complex.Arg
+import Analysis.SpecialFunctions.Log.Basic
 
 #align_import analysis.special_functions.complex.log from "leanprover-community/mathlib"@"33c67ae661dd8988516ff7f247b0be3018cdd952"
 
Diff
@@ -225,7 +225,7 @@ theorem countable_preimage_exp {s : Set β„‚} : (exp ⁻¹' s).Countable ↔ s.Co
 #align complex.countable_preimage_exp Complex.countable_preimage_exp
 -/
 
-alias countable_preimage_exp ↔ _ _root_.set.countable.preimage_cexp
+alias ⟨_, _root_.set.countable.preimage_cexp⟩ := countable_preimage_exp
 #align set.countable.preimage_cexp Set.Countable.preimage_cexp
 
 #print Complex.tendsto_log_nhdsWithin_im_neg_of_re_neg_of_im_zero /-
Diff
@@ -188,7 +188,7 @@ theorem exp_eq_one_iff {x : β„‚} : exp x = 1 ↔ βˆƒ n : β„€, x = n * (2 * Ο€ *
   constructor
   Β· intro h
     rcases existsUnique_add_zsmul_mem_Ioc Real.two_pi_pos x.im (-Ο€) with ⟨n, hn, -⟩
-    use -n
+    use-n
     rw [Int.cast_neg, neg_mul, eq_neg_iff_add_eq_zero]
     have : (x + n * (2 * Ο€ * I)).im ∈ Ioc (-Ο€) Ο€ := by simpa [two_mul, mul_add] using hn
     rw [← log_exp this.1 this.2, exp_periodic.int_mul n, h, log_one]
Diff
@@ -2,15 +2,12 @@
 Copyright (c) 2018 Chris Hughes. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Chris Hughes, Abhimanyu Pallavi Sudhir, Jean Lo, Calle SΓΆnne, Benjamin Davidson
-
-! This file was ported from Lean 3 source module analysis.special_functions.complex.log
-! leanprover-community/mathlib commit 33c67ae661dd8988516ff7f247b0be3018cdd952
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathbin.Analysis.SpecialFunctions.Complex.Arg
 import Mathbin.Analysis.SpecialFunctions.Log.Basic
 
+#align_import analysis.special_functions.complex.log from "leanprover-community/mathlib"@"33c67ae661dd8988516ff7f247b0be3018cdd952"
+
 /-!
 # The complex `log` function
 
Diff
@@ -38,50 +38,69 @@ noncomputable def log (x : β„‚) : β„‚ :=
 #align complex.log Complex.log
 -/
 
+#print Complex.log_re /-
 theorem log_re (x : β„‚) : x.log.re = x.abs.log := by simp [log]
 #align complex.log_re Complex.log_re
+-/
 
 #print Complex.log_im /-
 theorem log_im (x : β„‚) : x.log.im = x.arg := by simp [log]
 #align complex.log_im Complex.log_im
 -/
 
+#print Complex.neg_pi_lt_log_im /-
 theorem neg_pi_lt_log_im (x : β„‚) : -Ο€ < (log x).im := by simp only [log_im, neg_pi_lt_arg]
 #align complex.neg_pi_lt_log_im Complex.neg_pi_lt_log_im
+-/
 
+#print Complex.log_im_le_pi /-
 theorem log_im_le_pi (x : β„‚) : (log x).im ≀ Ο€ := by simp only [log_im, arg_le_pi]
 #align complex.log_im_le_pi Complex.log_im_le_pi
+-/
 
+#print Complex.exp_log /-
 theorem exp_log {x : β„‚} (hx : x β‰  0) : exp (log x) = x := by
   rw [log, exp_add_mul_I, ← of_real_sin, sin_arg, ← of_real_cos, cos_arg hx, ← of_real_exp,
     Real.exp_log (abs.pos hx), mul_add, of_real_div, of_real_div,
     mul_div_cancel' _ (of_real_ne_zero.2 <| abs.ne_zero hx), ← mul_assoc,
     mul_div_cancel' _ (of_real_ne_zero.2 <| abs.ne_zero hx), re_add_im]
 #align complex.exp_log Complex.exp_log
+-/
 
+#print Complex.range_exp /-
 @[simp]
 theorem range_exp : range exp = {0}ᢜ :=
   Set.ext fun x => ⟨by rintro ⟨x, rfl⟩; exact exp_ne_zero x, fun hx => ⟨log x, exp_log hx⟩⟩
 #align complex.range_exp Complex.range_exp
+-/
 
+#print Complex.log_exp /-
 theorem log_exp {x : β„‚} (hx₁ : -Ο€ < x.im) (hxβ‚‚ : x.im ≀ Ο€) : log (exp x) = x := by
   rw [log, abs_exp, Real.log_exp, exp_eq_exp_re_mul_sin_add_cos, ← of_real_exp,
     arg_mul_cos_add_sin_mul_I (Real.exp_pos _) ⟨hx₁, hxβ‚‚βŸ©, re_add_im]
 #align complex.log_exp Complex.log_exp
+-/
 
+#print Complex.exp_inj_of_neg_pi_lt_of_le_pi /-
 theorem exp_inj_of_neg_pi_lt_of_le_pi {x y : β„‚} (hx₁ : -Ο€ < x.im) (hxβ‚‚ : x.im ≀ Ο€) (hy₁ : -Ο€ < y.im)
     (hyβ‚‚ : y.im ≀ Ο€) (hxy : exp x = exp y) : x = y := by
   rw [← log_exp hx₁ hxβ‚‚, ← log_exp hy₁ hyβ‚‚, hxy]
 #align complex.exp_inj_of_neg_pi_lt_of_le_pi Complex.exp_inj_of_neg_pi_lt_of_le_pi
+-/
 
+#print Complex.ofReal_log /-
 theorem ofReal_log {x : ℝ} (hx : 0 ≀ x) : (x.log : β„‚) = log x :=
   Complex.ext (by rw [log_re, of_real_re, abs_of_nonneg hx])
     (by rw [of_real_im, log_im, arg_of_real_of_nonneg hx])
 #align complex.of_real_log Complex.ofReal_log
+-/
 
+#print Complex.log_ofReal_re /-
 theorem log_ofReal_re (x : ℝ) : (log (x : β„‚)).re = Real.log x := by simp [log_re]
 #align complex.log_of_real_re Complex.log_ofReal_re
+-/
 
+#print Complex.log_ofReal_mul /-
 theorem log_ofReal_mul {r : ℝ} (hr : 0 < r) {x : β„‚} (hx : x β‰  0) :
     log (r * x) = Real.log r + log x :=
   by
@@ -89,28 +108,42 @@ theorem log_ofReal_mul {r : ℝ} (hr : 0 < r) {x : β„‚} (hx : x β‰  0) :
   simp_rw [log, map_mul, abs_of_real, arg_real_mul _ hr, abs_of_pos hr, Real.log_mul hr.ne' hx,
     of_real_add, add_assoc]
 #align complex.log_of_real_mul Complex.log_ofReal_mul
+-/
 
+#print Complex.log_mul_ofReal /-
 theorem log_mul_ofReal (r : ℝ) (hr : 0 < r) (x : β„‚) (hx : x β‰  0) :
     log (x * r) = Real.log r + log x := by rw [mul_comm, log_of_real_mul hr hx, add_comm]
 #align complex.log_mul_of_real Complex.log_mul_ofReal
+-/
 
+#print Complex.log_zero /-
 @[simp]
 theorem log_zero : log 0 = 0 := by simp [log]
 #align complex.log_zero Complex.log_zero
+-/
 
+#print Complex.log_one /-
 @[simp]
 theorem log_one : log 1 = 0 := by simp [log]
 #align complex.log_one Complex.log_one
+-/
 
+#print Complex.log_neg_one /-
 theorem log_neg_one : log (-1) = Ο€ * I := by simp [log]
 #align complex.log_neg_one Complex.log_neg_one
+-/
 
+#print Complex.log_I /-
 theorem log_I : log I = Ο€ / 2 * I := by simp [log]
 #align complex.log_I Complex.log_I
+-/
 
+#print Complex.log_neg_I /-
 theorem log_neg_I : log (-I) = -(Ο€ / 2) * I := by simp [log]
 #align complex.log_neg_I Complex.log_neg_I
+-/
 
+#print Complex.log_conj_eq_ite /-
 theorem log_conj_eq_ite (x : β„‚) : log (conj x) = if x.arg = Ο€ then log x else conj (log x) :=
   by
   simp_rw [log, abs_conj, arg_conj, map_add, map_mul, conj_of_real]
@@ -118,11 +151,15 @@ theorem log_conj_eq_ite (x : β„‚) : log (conj x) = if x.arg = Ο€ then log x else
   Β· rw [hx]
   simp_rw [of_real_neg, conj_I, mul_neg, neg_mul]
 #align complex.log_conj_eq_ite Complex.log_conj_eq_ite
+-/
 
+#print Complex.log_conj /-
 theorem log_conj (x : β„‚) (h : x.arg β‰  Ο€) : log (conj x) = conj (log x) := by
   rw [log_conj_eq_ite, if_neg h]
 #align complex.log_conj Complex.log_conj
+-/
 
+#print Complex.log_inv_eq_ite /-
 theorem log_inv_eq_ite (x : β„‚) : log x⁻¹ = if x.arg = Ο€ then -conj (log x) else -log x :=
   by
   by_cases hx : x = 0
@@ -136,13 +173,19 @@ theorem log_inv_eq_ite (x : β„‚) : log x⁻¹ = if x.arg = Ο€ then -conj (log x)
   Β· rwa [inv_pos, Complex.normSq_pos]
   Β· rwa [map_ne_zero]
 #align complex.log_inv_eq_ite Complex.log_inv_eq_ite
+-/
 
+#print Complex.log_inv /-
 theorem log_inv (x : β„‚) (hx : x.arg β‰  Ο€) : log x⁻¹ = -log x := by rw [log_inv_eq_ite, if_neg hx]
 #align complex.log_inv Complex.log_inv
+-/
 
+#print Complex.two_pi_I_ne_zero /-
 theorem two_pi_I_ne_zero : (2 * Ο€ * I : β„‚) β‰  0 := by norm_num [Real.pi_ne_zero, I_ne_zero]
 #align complex.two_pi_I_ne_zero Complex.two_pi_I_ne_zero
+-/
 
+#print Complex.exp_eq_one_iff /-
 theorem exp_eq_one_iff {x : β„‚} : exp x = 1 ↔ βˆƒ n : β„€, x = n * (2 * Ο€ * I) :=
   by
   constructor
@@ -154,14 +197,19 @@ theorem exp_eq_one_iff {x : β„‚} : exp x = 1 ↔ βˆƒ n : β„€, x = n * (2 * Ο€ *
     rw [← log_exp this.1 this.2, exp_periodic.int_mul n, h, log_one]
   · rintro ⟨n, rfl⟩; exact (exp_periodic.int_mul n).Eq.trans exp_zero
 #align complex.exp_eq_one_iff Complex.exp_eq_one_iff
+-/
 
+#print Complex.exp_eq_exp_iff_exp_sub_eq_one /-
 theorem exp_eq_exp_iff_exp_sub_eq_one {x y : β„‚} : exp x = exp y ↔ exp (x - y) = 1 := by
   rw [exp_sub, div_eq_one_iff_eq (exp_ne_zero _)]
 #align complex.exp_eq_exp_iff_exp_sub_eq_one Complex.exp_eq_exp_iff_exp_sub_eq_one
+-/
 
+#print Complex.exp_eq_exp_iff_exists_int /-
 theorem exp_eq_exp_iff_exists_int {x y : β„‚} : exp x = exp y ↔ βˆƒ n : β„€, x = y + n * (2 * Ο€ * I) := by
   simp only [exp_eq_exp_iff_exp_sub_eq_one, exp_eq_one_iff, sub_eq_iff_eq_add']
 #align complex.exp_eq_exp_iff_exists_int Complex.exp_eq_exp_iff_exists_int
+-/
 
 #print Complex.countable_preimage_exp /-
 @[simp]
@@ -183,6 +231,7 @@ theorem countable_preimage_exp {s : Set β„‚} : (exp ⁻¹' s).Countable ↔ s.Co
 alias countable_preimage_exp ↔ _ _root_.set.countable.preimage_cexp
 #align set.countable.preimage_cexp Set.Countable.preimage_cexp
 
+#print Complex.tendsto_log_nhdsWithin_im_neg_of_re_neg_of_im_zero /-
 theorem tendsto_log_nhdsWithin_im_neg_of_re_neg_of_im_zero {z : β„‚} (hre : z.re < 0)
     (him : z.im = 0) : Tendsto log (𝓝[{z : β„‚ | z.im < 0}] z) (𝓝 <| Real.log (abs z) - Ο€ * I) :=
   by
@@ -196,7 +245,9 @@ theorem tendsto_log_nhdsWithin_im_neg_of_re_neg_of_im_zero {z : β„‚} (hre : z.re
   Β· simp [sub_eq_add_neg]
   Β· lift z to ℝ using him; simpa using hre.ne
 #align complex.tendsto_log_nhds_within_im_neg_of_re_neg_of_im_zero Complex.tendsto_log_nhdsWithin_im_neg_of_re_neg_of_im_zero
+-/
 
+#print Complex.continuousWithinAt_log_of_re_neg_of_im_zero /-
 theorem continuousWithinAt_log_of_re_neg_of_im_zero {z : β„‚} (hre : z.re < 0) (him : z.im = 0) :
     ContinuousWithinAt log {z : β„‚ | 0 ≀ z.im} z :=
   by
@@ -209,24 +260,31 @@ theorem continuousWithinAt_log_of_re_neg_of_im_zero {z : β„‚} (hre : z.re < 0) (
   convert this
   Β· lift z to ℝ using him; simpa using hre.ne
 #align complex.continuous_within_at_log_of_re_neg_of_im_zero Complex.continuousWithinAt_log_of_re_neg_of_im_zero
+-/
 
+#print Complex.tendsto_log_nhdsWithin_im_nonneg_of_re_neg_of_im_zero /-
 theorem tendsto_log_nhdsWithin_im_nonneg_of_re_neg_of_im_zero {z : β„‚} (hre : z.re < 0)
     (him : z.im = 0) : Tendsto log (𝓝[{z : β„‚ | 0 ≀ z.im}] z) (𝓝 <| Real.log (abs z) + Ο€ * I) := by
   simpa only [log, arg_eq_pi_iff.2 ⟨hre, him⟩] using
     (continuous_within_at_log_of_re_neg_of_im_zero hre him).Tendsto
 #align complex.tendsto_log_nhds_within_im_nonneg_of_re_neg_of_im_zero Complex.tendsto_log_nhdsWithin_im_nonneg_of_re_neg_of_im_zero
+-/
 
+#print Complex.map_exp_comap_re_atBot /-
 @[simp]
 theorem map_exp_comap_re_atBot : map exp (comap re atBot) = 𝓝[β‰ ] 0 := by
   rw [← comap_exp_nhds_zero, map_comap, range_exp, nhdsWithin]
 #align complex.map_exp_comap_re_at_bot Complex.map_exp_comap_re_atBot
+-/
 
+#print Complex.map_exp_comap_re_atTop /-
 @[simp]
 theorem map_exp_comap_re_atTop : map exp (comap re atTop) = comap abs atTop :=
   by
   rw [← comap_exp_comap_abs_at_top, map_comap, range_exp, inf_eq_left, le_principal_iff]
   exact eventually_ne_of_tendsto_norm_atTop tendsto_comap 0
 #align complex.map_exp_comap_re_at_top Complex.map_exp_comap_re_atTop
+-/
 
 end Complex
 
@@ -238,6 +296,7 @@ open scoped Topology
 
 variable {Ξ± : Type _}
 
+#print continuousAt_clog /-
 theorem continuousAt_clog {x : β„‚} (h : 0 < x.re ∨ x.im β‰  0) : ContinuousAt log x :=
   by
   refine' ContinuousAt.add _ _
@@ -250,33 +309,44 @@ theorem continuousAt_clog {x : β„‚} (h : 0 < x.re ∨ x.im β‰  0) : ContinuousAt
     refine' h_cont_mul.continuous_at.comp (continuous_of_real.continuous_at.comp _)
     exact continuous_at_arg h
 #align continuous_at_clog continuousAt_clog
+-/
 
+#print Filter.Tendsto.clog /-
 theorem Filter.Tendsto.clog {l : Filter Ξ±} {f : Ξ± β†’ β„‚} {x : β„‚} (h : Tendsto f l (𝓝 x))
     (hx : 0 < x.re ∨ x.im β‰  0) : Tendsto (fun t => log (f t)) l (𝓝 <| log x) :=
   (continuousAt_clog hx).Tendsto.comp h
 #align filter.tendsto.clog Filter.Tendsto.clog
+-/
 
 variable [TopologicalSpace Ξ±]
 
+#print ContinuousAt.clog /-
 theorem ContinuousAt.clog {f : Ξ± β†’ β„‚} {x : Ξ±} (h₁ : ContinuousAt f x)
     (hβ‚‚ : 0 < (f x).re ∨ (f x).im β‰  0) : ContinuousAt (fun t => log (f t)) x :=
   h₁.clog hβ‚‚
 #align continuous_at.clog ContinuousAt.clog
+-/
 
+#print ContinuousWithinAt.clog /-
 theorem ContinuousWithinAt.clog {f : Ξ± β†’ β„‚} {s : Set Ξ±} {x : Ξ±} (h₁ : ContinuousWithinAt f s x)
     (hβ‚‚ : 0 < (f x).re ∨ (f x).im β‰  0) : ContinuousWithinAt (fun t => log (f t)) s x :=
   h₁.clog hβ‚‚
 #align continuous_within_at.clog ContinuousWithinAt.clog
+-/
 
+#print ContinuousOn.clog /-
 theorem ContinuousOn.clog {f : Ξ± β†’ β„‚} {s : Set Ξ±} (h₁ : ContinuousOn f s)
     (hβ‚‚ : βˆ€ x ∈ s, 0 < (f x).re ∨ (f x).im β‰  0) : ContinuousOn (fun t => log (f t)) s := fun x hx =>
   (h₁ x hx).clog (hβ‚‚ x hx)
 #align continuous_on.clog ContinuousOn.clog
+-/
 
+#print Continuous.clog /-
 theorem Continuous.clog {f : Ξ± β†’ β„‚} (h₁ : Continuous f) (hβ‚‚ : βˆ€ x, 0 < (f x).re ∨ (f x).im β‰  0) :
     Continuous fun t => log (f t) :=
   continuous_iff_continuousAt.2 fun x => h₁.ContinuousAt.clog (hβ‚‚ x)
 #align continuous.clog Continuous.clog
+-/
 
 end LogDeriv
 
Diff
@@ -74,25 +74,25 @@ theorem exp_inj_of_neg_pi_lt_of_le_pi {x y : β„‚} (hx₁ : -Ο€ < x.im) (hxβ‚‚ :
   rw [← log_exp hx₁ hxβ‚‚, ← log_exp hy₁ hyβ‚‚, hxy]
 #align complex.exp_inj_of_neg_pi_lt_of_le_pi Complex.exp_inj_of_neg_pi_lt_of_le_pi
 
-theorem of_real_log {x : ℝ} (hx : 0 ≀ x) : (x.log : β„‚) = log x :=
+theorem ofReal_log {x : ℝ} (hx : 0 ≀ x) : (x.log : β„‚) = log x :=
   Complex.ext (by rw [log_re, of_real_re, abs_of_nonneg hx])
     (by rw [of_real_im, log_im, arg_of_real_of_nonneg hx])
-#align complex.of_real_log Complex.of_real_log
+#align complex.of_real_log Complex.ofReal_log
 
-theorem log_of_real_re (x : ℝ) : (log (x : β„‚)).re = Real.log x := by simp [log_re]
-#align complex.log_of_real_re Complex.log_of_real_re
+theorem log_ofReal_re (x : ℝ) : (log (x : β„‚)).re = Real.log x := by simp [log_re]
+#align complex.log_of_real_re Complex.log_ofReal_re
 
-theorem log_of_real_mul {r : ℝ} (hr : 0 < r) {x : β„‚} (hx : x β‰  0) :
+theorem log_ofReal_mul {r : ℝ} (hr : 0 < r) {x : β„‚} (hx : x β‰  0) :
     log (r * x) = Real.log r + log x :=
   by
   replace hx := complex.abs.ne_zero_iff.mpr hx
   simp_rw [log, map_mul, abs_of_real, arg_real_mul _ hr, abs_of_pos hr, Real.log_mul hr.ne' hx,
     of_real_add, add_assoc]
-#align complex.log_of_real_mul Complex.log_of_real_mul
+#align complex.log_of_real_mul Complex.log_ofReal_mul
 
-theorem log_mul_of_real (r : ℝ) (hr : 0 < r) (x : β„‚) (hx : x β‰  0) :
+theorem log_mul_ofReal (r : ℝ) (hr : 0 < r) (x : β„‚) (hx : x β‰  0) :
     log (x * r) = Real.log r + log x := by rw [mul_comm, log_of_real_mul hr hx, add_comm]
-#align complex.log_mul_of_real Complex.log_mul_of_real
+#align complex.log_mul_of_real Complex.log_mul_ofReal
 
 @[simp]
 theorem log_zero : log 0 = 0 := by simp [log]
Diff
@@ -176,7 +176,7 @@ theorem countable_preimage_exp {s : Set β„‚} : (exp ⁻¹' s).Countable ↔ s.Co
     rcases em (βˆƒ w, exp w = z) with (⟨w, rfl⟩ | hne)
     Β· simp only [preimage, mem_singleton_iff, exp_eq_exp_iff_exists_int, set_of_exists]
       exact countable_Union fun m => countable_singleton _
-    Β· push_neg  at hne ; simp [preimage, hne]
+    Β· push_neg at hne ; simp [preimage, hne]
 #align complex.countable_preimage_exp Complex.countable_preimage_exp
 -/
 
@@ -184,7 +184,7 @@ alias countable_preimage_exp ↔ _ _root_.set.countable.preimage_cexp
 #align set.countable.preimage_cexp Set.Countable.preimage_cexp
 
 theorem tendsto_log_nhdsWithin_im_neg_of_re_neg_of_im_zero {z : β„‚} (hre : z.re < 0)
-    (him : z.im = 0) : Tendsto log (𝓝[{ z : β„‚ | z.im < 0 }] z) (𝓝 <| Real.log (abs z) - Ο€ * I) :=
+    (him : z.im = 0) : Tendsto log (𝓝[{z : β„‚ | z.im < 0}] z) (𝓝 <| Real.log (abs z) - Ο€ * I) :=
   by
   have :=
     (continuous_of_real.continuous_at.comp_continuous_within_at
@@ -198,7 +198,7 @@ theorem tendsto_log_nhdsWithin_im_neg_of_re_neg_of_im_zero {z : β„‚} (hre : z.re
 #align complex.tendsto_log_nhds_within_im_neg_of_re_neg_of_im_zero Complex.tendsto_log_nhdsWithin_im_neg_of_re_neg_of_im_zero
 
 theorem continuousWithinAt_log_of_re_neg_of_im_zero {z : β„‚} (hre : z.re < 0) (him : z.im = 0) :
-    ContinuousWithinAt log { z : β„‚ | 0 ≀ z.im } z :=
+    ContinuousWithinAt log {z : β„‚ | 0 ≀ z.im} z :=
   by
   have :=
     (continuous_of_real.continuous_at.comp_continuous_within_at
@@ -211,7 +211,7 @@ theorem continuousWithinAt_log_of_re_neg_of_im_zero {z : β„‚} (hre : z.re < 0) (
 #align complex.continuous_within_at_log_of_re_neg_of_im_zero Complex.continuousWithinAt_log_of_re_neg_of_im_zero
 
 theorem tendsto_log_nhdsWithin_im_nonneg_of_re_neg_of_im_zero {z : β„‚} (hre : z.re < 0)
-    (him : z.im = 0) : Tendsto log (𝓝[{ z : β„‚ | 0 ≀ z.im }] z) (𝓝 <| Real.log (abs z) + Ο€ * I) := by
+    (him : z.im = 0) : Tendsto log (𝓝[{z : β„‚ | 0 ≀ z.im}] z) (𝓝 <| Real.log (abs z) + Ο€ * I) := by
   simpa only [log, arg_eq_pi_iff.2 ⟨hre, him⟩] using
     (continuous_within_at_log_of_re_neg_of_im_zero hre him).Tendsto
 #align complex.tendsto_log_nhds_within_im_nonneg_of_re_neg_of_im_zero Complex.tendsto_log_nhdsWithin_im_nonneg_of_re_neg_of_im_zero
Diff
@@ -176,7 +176,7 @@ theorem countable_preimage_exp {s : Set β„‚} : (exp ⁻¹' s).Countable ↔ s.Co
     rcases em (βˆƒ w, exp w = z) with (⟨w, rfl⟩ | hne)
     Β· simp only [preimage, mem_singleton_iff, exp_eq_exp_iff_exists_int, set_of_exists]
       exact countable_Union fun m => countable_singleton _
-    Β· push_neg  at hne; simp [preimage, hne]
+    Β· push_neg  at hne ; simp [preimage, hne]
 #align complex.countable_preimage_exp Complex.countable_preimage_exp
 -/
 
Diff
@@ -27,7 +27,7 @@ namespace Complex
 
 open Set Filter
 
-open Real Topology ComplexConjugate
+open scoped Real Topology ComplexConjugate
 
 #print Complex.log /-
 /-- Inverse of the `exp` function. Returns values such that `(log x).im > - Ο€` and `(log x).im ≀ Ο€`.
@@ -234,7 +234,7 @@ section LogDeriv
 
 open Complex Filter
 
-open Topology
+open scoped Topology
 
 variable {Ξ± : Type _}
 
Diff
@@ -38,12 +38,6 @@ noncomputable def log (x : β„‚) : β„‚ :=
 #align complex.log Complex.log
 -/
 
-/- warning: complex.log_re -> Complex.log_re is a dubious translation:
-lean 3 declaration is
-  forall (x : Complex), Eq.{1} Real (Complex.re (Complex.log x)) (Real.log (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 x))
-but is expected to have type
-  forall (x : Complex), Eq.{1} Real (Complex.re (Complex.log x)) (Real.log (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 x))
-Case conversion may be inaccurate. Consider using '#align complex.log_re Complex.log_reβ‚“'. -/
 theorem log_re (x : β„‚) : x.log.re = x.abs.log := by simp [log]
 #align complex.log_re Complex.log_re
 
@@ -52,30 +46,12 @@ theorem log_im (x : β„‚) : x.log.im = x.arg := by simp [log]
 #align complex.log_im Complex.log_im
 -/
 
-/- warning: complex.neg_pi_lt_log_im -> Complex.neg_pi_lt_log_im is a dubious translation:
-lean 3 declaration is
-  forall (x : Complex), LT.lt.{0} Real Real.hasLt (Neg.neg.{0} Real Real.hasNeg Real.pi) (Complex.im (Complex.log x))
-but is expected to have type
-  forall (x : Complex), LT.lt.{0} Real Real.instLTReal (Neg.neg.{0} Real Real.instNegReal Real.pi) (Complex.im (Complex.log x))
-Case conversion may be inaccurate. Consider using '#align complex.neg_pi_lt_log_im Complex.neg_pi_lt_log_imβ‚“'. -/
 theorem neg_pi_lt_log_im (x : β„‚) : -Ο€ < (log x).im := by simp only [log_im, neg_pi_lt_arg]
 #align complex.neg_pi_lt_log_im Complex.neg_pi_lt_log_im
 
-/- warning: complex.log_im_le_pi -> Complex.log_im_le_pi is a dubious translation:
-lean 3 declaration is
-  forall (x : Complex), LE.le.{0} Real Real.hasLe (Complex.im (Complex.log x)) Real.pi
-but is expected to have type
-  forall (x : Complex), LE.le.{0} Real Real.instLEReal (Complex.im (Complex.log x)) Real.pi
-Case conversion may be inaccurate. Consider using '#align complex.log_im_le_pi Complex.log_im_le_piβ‚“'. -/
 theorem log_im_le_pi (x : β„‚) : (log x).im ≀ Ο€ := by simp only [log_im, arg_le_pi]
 #align complex.log_im_le_pi Complex.log_im_le_pi
 
-/- warning: complex.exp_log -> Complex.exp_log is a dubious translation:
-lean 3 declaration is
-  forall {x : Complex}, (Ne.{1} Complex x (OfNat.ofNat.{0} Complex 0 (OfNat.mk.{0} Complex 0 (Zero.zero.{0} Complex Complex.hasZero)))) -> (Eq.{1} Complex (Complex.exp (Complex.log x)) x)
-but is expected to have type
-  forall {x : Complex}, (Ne.{1} Complex x (OfNat.ofNat.{0} Complex 0 (Zero.toOfNat0.{0} Complex Complex.instZeroComplex))) -> (Eq.{1} Complex (Complex.exp (Complex.log x)) x)
-Case conversion may be inaccurate. Consider using '#align complex.exp_log Complex.exp_logβ‚“'. -/
 theorem exp_log {x : β„‚} (hx : x β‰  0) : exp (log x) = x := by
   rw [log, exp_add_mul_I, ← of_real_sin, sin_arg, ← of_real_cos, cos_arg hx, ← of_real_exp,
     Real.exp_log (abs.pos hx), mul_add, of_real_div, of_real_div,
@@ -83,65 +59,29 @@ theorem exp_log {x : β„‚} (hx : x β‰  0) : exp (log x) = x := by
     mul_div_cancel' _ (of_real_ne_zero.2 <| abs.ne_zero hx), re_add_im]
 #align complex.exp_log Complex.exp_log
 
-/- warning: complex.range_exp -> Complex.range_exp is a dubious translation:
-lean 3 declaration is
-  Eq.{1} (Set.{0} Complex) (Set.range.{0, 1} Complex Complex Complex.exp) (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
-  Eq.{1} (Set.{0} Complex) (Set.range.{0, 1} Complex Complex Complex.exp) (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.range_exp Complex.range_expβ‚“'. -/
 @[simp]
 theorem range_exp : range exp = {0}ᢜ :=
   Set.ext fun x => ⟨by rintro ⟨x, rfl⟩; exact exp_ne_zero x, fun hx => ⟨log x, exp_log hx⟩⟩
 #align complex.range_exp Complex.range_exp
 
-/- warning: complex.log_exp -> Complex.log_exp is a dubious translation:
-lean 3 declaration is
-  forall {x : Complex}, (LT.lt.{0} Real Real.hasLt (Neg.neg.{0} Real Real.hasNeg Real.pi) (Complex.im x)) -> (LE.le.{0} Real Real.hasLe (Complex.im x) Real.pi) -> (Eq.{1} Complex (Complex.log (Complex.exp x)) x)
-but is expected to have type
-  forall {x : Complex}, (LT.lt.{0} Real Real.instLTReal (Neg.neg.{0} Real Real.instNegReal Real.pi) (Complex.im x)) -> (LE.le.{0} Real Real.instLEReal (Complex.im x) Real.pi) -> (Eq.{1} Complex (Complex.log (Complex.exp x)) x)
-Case conversion may be inaccurate. Consider using '#align complex.log_exp Complex.log_expβ‚“'. -/
 theorem log_exp {x : β„‚} (hx₁ : -Ο€ < x.im) (hxβ‚‚ : x.im ≀ Ο€) : log (exp x) = x := by
   rw [log, abs_exp, Real.log_exp, exp_eq_exp_re_mul_sin_add_cos, ← of_real_exp,
     arg_mul_cos_add_sin_mul_I (Real.exp_pos _) ⟨hx₁, hxβ‚‚βŸ©, re_add_im]
 #align complex.log_exp Complex.log_exp
 
-/- warning: complex.exp_inj_of_neg_pi_lt_of_le_pi -> Complex.exp_inj_of_neg_pi_lt_of_le_pi is a dubious translation:
-lean 3 declaration is
-  forall {x : Complex} {y : Complex}, (LT.lt.{0} Real Real.hasLt (Neg.neg.{0} Real Real.hasNeg Real.pi) (Complex.im x)) -> (LE.le.{0} Real Real.hasLe (Complex.im x) Real.pi) -> (LT.lt.{0} Real Real.hasLt (Neg.neg.{0} Real Real.hasNeg Real.pi) (Complex.im y)) -> (LE.le.{0} Real Real.hasLe (Complex.im y) Real.pi) -> (Eq.{1} Complex (Complex.exp x) (Complex.exp y)) -> (Eq.{1} Complex x y)
-but is expected to have type
-  forall {x : Complex} {y : Complex}, (LT.lt.{0} Real Real.instLTReal (Neg.neg.{0} Real Real.instNegReal Real.pi) (Complex.im x)) -> (LE.le.{0} Real Real.instLEReal (Complex.im x) Real.pi) -> (LT.lt.{0} Real Real.instLTReal (Neg.neg.{0} Real Real.instNegReal Real.pi) (Complex.im y)) -> (LE.le.{0} Real Real.instLEReal (Complex.im y) Real.pi) -> (Eq.{1} Complex (Complex.exp x) (Complex.exp y)) -> (Eq.{1} Complex x y)
-Case conversion may be inaccurate. Consider using '#align complex.exp_inj_of_neg_pi_lt_of_le_pi Complex.exp_inj_of_neg_pi_lt_of_le_piβ‚“'. -/
 theorem exp_inj_of_neg_pi_lt_of_le_pi {x y : β„‚} (hx₁ : -Ο€ < x.im) (hxβ‚‚ : x.im ≀ Ο€) (hy₁ : -Ο€ < y.im)
     (hyβ‚‚ : y.im ≀ Ο€) (hxy : exp x = exp y) : x = y := by
   rw [← log_exp hx₁ hxβ‚‚, ← log_exp hy₁ hyβ‚‚, hxy]
 #align complex.exp_inj_of_neg_pi_lt_of_le_pi Complex.exp_inj_of_neg_pi_lt_of_le_pi
 
-/- warning: complex.of_real_log -> Complex.of_real_log is a dubious translation:
-lean 3 declaration is
-  forall {x : Real}, (LE.le.{0} Real Real.hasLe (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) x) -> (Eq.{1} Complex ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real Complex (HasLiftT.mk.{1, 1} Real Complex (CoeTCβ‚“.coe.{1, 1} Real Complex (coeBase.{1, 1} Real Complex Complex.hasCoe))) (Real.log x)) (Complex.log ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real Complex (HasLiftT.mk.{1, 1} Real Complex (CoeTCβ‚“.coe.{1, 1} Real Complex (coeBase.{1, 1} Real Complex Complex.hasCoe))) x)))
-but is expected to have type
-  forall {x : Real}, (LE.le.{0} Real Real.instLEReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) x) -> (Eq.{1} Complex (Complex.ofReal' (Real.log x)) (Complex.log (Complex.ofReal' x)))
-Case conversion may be inaccurate. Consider using '#align complex.of_real_log Complex.of_real_logβ‚“'. -/
 theorem of_real_log {x : ℝ} (hx : 0 ≀ x) : (x.log : β„‚) = log x :=
   Complex.ext (by rw [log_re, of_real_re, abs_of_nonneg hx])
     (by rw [of_real_im, log_im, arg_of_real_of_nonneg hx])
 #align complex.of_real_log Complex.of_real_log
 
-/- warning: complex.log_of_real_re -> Complex.log_of_real_re is a dubious translation:
-lean 3 declaration is
-  forall (x : Real), Eq.{1} Real (Complex.re (Complex.log ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real Complex (HasLiftT.mk.{1, 1} Real Complex (CoeTCβ‚“.coe.{1, 1} Real Complex (coeBase.{1, 1} Real Complex Complex.hasCoe))) x))) (Real.log x)
-but is expected to have type
-  forall (x : Real), Eq.{1} Real (Complex.re (Complex.log (Complex.ofReal' x))) (Real.log x)
-Case conversion may be inaccurate. Consider using '#align complex.log_of_real_re Complex.log_of_real_reβ‚“'. -/
 theorem log_of_real_re (x : ℝ) : (log (x : β„‚)).re = Real.log x := by simp [log_re]
 #align complex.log_of_real_re Complex.log_of_real_re
 
-/- warning: complex.log_of_real_mul -> Complex.log_of_real_mul is a dubious translation:
-lean 3 declaration is
-  forall {r : Real}, (LT.lt.{0} Real Real.hasLt (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) r) -> (forall {x : Complex}, (Ne.{1} Complex x (OfNat.ofNat.{0} Complex 0 (OfNat.mk.{0} Complex 0 (Zero.zero.{0} Complex Complex.hasZero)))) -> (Eq.{1} Complex (Complex.log (HMul.hMul.{0, 0, 0} Complex Complex Complex (instHMul.{0} Complex Complex.hasMul) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real Complex (HasLiftT.mk.{1, 1} Real Complex (CoeTCβ‚“.coe.{1, 1} Real Complex (coeBase.{1, 1} Real Complex Complex.hasCoe))) r) x)) (HAdd.hAdd.{0, 0, 0} Complex Complex Complex (instHAdd.{0} Complex Complex.hasAdd) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real Complex (HasLiftT.mk.{1, 1} Real Complex (CoeTCβ‚“.coe.{1, 1} Real Complex (coeBase.{1, 1} Real Complex Complex.hasCoe))) (Real.log r)) (Complex.log x))))
-but is expected to have type
-  forall {r : Real}, (LT.lt.{0} Real Real.instLTReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) r) -> (forall {x : Complex}, (Ne.{1} Complex x (OfNat.ofNat.{0} Complex 0 (Zero.toOfNat0.{0} Complex Complex.instZeroComplex))) -> (Eq.{1} Complex (Complex.log (HMul.hMul.{0, 0, 0} Complex Complex Complex (instHMul.{0} Complex Complex.instMulComplex) (Complex.ofReal' r) x)) (HAdd.hAdd.{0, 0, 0} Complex Complex Complex (instHAdd.{0} Complex Complex.instAddComplex) (Complex.ofReal' (Real.log r)) (Complex.log x))))
-Case conversion may be inaccurate. Consider using '#align complex.log_of_real_mul Complex.log_of_real_mulβ‚“'. -/
 theorem log_of_real_mul {r : ℝ} (hr : 0 < r) {x : β„‚} (hx : x β‰  0) :
     log (r * x) = Real.log r + log x :=
   by
@@ -150,69 +90,27 @@ theorem log_of_real_mul {r : ℝ} (hr : 0 < r) {x : β„‚} (hx : x β‰  0) :
     of_real_add, add_assoc]
 #align complex.log_of_real_mul Complex.log_of_real_mul
 
-/- warning: complex.log_mul_of_real -> Complex.log_mul_of_real is a dubious translation:
-lean 3 declaration is
-  forall (r : Real), (LT.lt.{0} Real Real.hasLt (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) r) -> (forall (x : Complex), (Ne.{1} Complex x (OfNat.ofNat.{0} Complex 0 (OfNat.mk.{0} Complex 0 (Zero.zero.{0} Complex Complex.hasZero)))) -> (Eq.{1} Complex (Complex.log (HMul.hMul.{0, 0, 0} Complex Complex Complex (instHMul.{0} Complex Complex.hasMul) x ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real Complex (HasLiftT.mk.{1, 1} Real Complex (CoeTCβ‚“.coe.{1, 1} Real Complex (coeBase.{1, 1} Real Complex Complex.hasCoe))) r))) (HAdd.hAdd.{0, 0, 0} Complex Complex Complex (instHAdd.{0} Complex Complex.hasAdd) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real Complex (HasLiftT.mk.{1, 1} Real Complex (CoeTCβ‚“.coe.{1, 1} Real Complex (coeBase.{1, 1} Real Complex Complex.hasCoe))) (Real.log r)) (Complex.log x))))
-but is expected to have type
-  forall (r : Real), (LT.lt.{0} Real Real.instLTReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) r) -> (forall (x : Complex), (Ne.{1} Complex x (OfNat.ofNat.{0} Complex 0 (Zero.toOfNat0.{0} Complex Complex.instZeroComplex))) -> (Eq.{1} Complex (Complex.log (HMul.hMul.{0, 0, 0} Complex Complex Complex (instHMul.{0} Complex Complex.instMulComplex) x (Complex.ofReal' r))) (HAdd.hAdd.{0, 0, 0} Complex Complex Complex (instHAdd.{0} Complex Complex.instAddComplex) (Complex.ofReal' (Real.log r)) (Complex.log x))))
-Case conversion may be inaccurate. Consider using '#align complex.log_mul_of_real Complex.log_mul_of_realβ‚“'. -/
 theorem log_mul_of_real (r : ℝ) (hr : 0 < r) (x : β„‚) (hx : x β‰  0) :
     log (x * r) = Real.log r + log x := by rw [mul_comm, log_of_real_mul hr hx, add_comm]
 #align complex.log_mul_of_real Complex.log_mul_of_real
 
-/- warning: complex.log_zero -> Complex.log_zero is a dubious translation:
-lean 3 declaration is
-  Eq.{1} Complex (Complex.log (OfNat.ofNat.{0} Complex 0 (OfNat.mk.{0} Complex 0 (Zero.zero.{0} Complex Complex.hasZero)))) (OfNat.ofNat.{0} Complex 0 (OfNat.mk.{0} Complex 0 (Zero.zero.{0} Complex Complex.hasZero)))
-but is expected to have type
-  Eq.{1} Complex (Complex.log (OfNat.ofNat.{0} Complex 0 (Zero.toOfNat0.{0} Complex Complex.instZeroComplex))) (OfNat.ofNat.{0} Complex 0 (Zero.toOfNat0.{0} Complex Complex.instZeroComplex))
-Case conversion may be inaccurate. Consider using '#align complex.log_zero Complex.log_zeroβ‚“'. -/
 @[simp]
 theorem log_zero : log 0 = 0 := by simp [log]
 #align complex.log_zero Complex.log_zero
 
-/- warning: complex.log_one -> Complex.log_one is a dubious translation:
-lean 3 declaration is
-  Eq.{1} Complex (Complex.log (OfNat.ofNat.{0} Complex 1 (OfNat.mk.{0} Complex 1 (One.one.{0} Complex Complex.hasOne)))) (OfNat.ofNat.{0} Complex 0 (OfNat.mk.{0} Complex 0 (Zero.zero.{0} Complex Complex.hasZero)))
-but is expected to have type
-  Eq.{1} Complex (Complex.log (OfNat.ofNat.{0} Complex 1 (One.toOfNat1.{0} Complex Complex.instOneComplex))) (OfNat.ofNat.{0} Complex 0 (Zero.toOfNat0.{0} Complex Complex.instZeroComplex))
-Case conversion may be inaccurate. Consider using '#align complex.log_one Complex.log_oneβ‚“'. -/
 @[simp]
 theorem log_one : log 1 = 0 := by simp [log]
 #align complex.log_one Complex.log_one
 
-/- warning: complex.log_neg_one -> Complex.log_neg_one is a dubious translation:
-lean 3 declaration is
-  Eq.{1} Complex (Complex.log (Neg.neg.{0} Complex Complex.hasNeg (OfNat.ofNat.{0} Complex 1 (OfNat.mk.{0} Complex 1 (One.one.{0} Complex Complex.hasOne))))) (HMul.hMul.{0, 0, 0} Complex Complex Complex (instHMul.{0} Complex Complex.hasMul) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real Complex (HasLiftT.mk.{1, 1} Real Complex (CoeTCβ‚“.coe.{1, 1} Real Complex (coeBase.{1, 1} Real Complex Complex.hasCoe))) Real.pi) Complex.I)
-but is expected to have type
-  Eq.{1} Complex (Complex.log (Neg.neg.{0} Complex Complex.instNegComplex (OfNat.ofNat.{0} Complex 1 (One.toOfNat1.{0} Complex Complex.instOneComplex)))) (HMul.hMul.{0, 0, 0} Complex Complex Complex (instHMul.{0} Complex Complex.instMulComplex) (Complex.ofReal' Real.pi) Complex.I)
-Case conversion may be inaccurate. Consider using '#align complex.log_neg_one Complex.log_neg_oneβ‚“'. -/
 theorem log_neg_one : log (-1) = Ο€ * I := by simp [log]
 #align complex.log_neg_one Complex.log_neg_one
 
-/- warning: complex.log_I -> Complex.log_I is a dubious translation:
-lean 3 declaration is
-  Eq.{1} Complex (Complex.log Complex.I) (HMul.hMul.{0, 0, 0} Complex Complex Complex (instHMul.{0} Complex Complex.hasMul) (HDiv.hDiv.{0, 0, 0} Complex Complex Complex (instHDiv.{0} Complex (DivInvMonoid.toHasDiv.{0} Complex (DivisionRing.toDivInvMonoid.{0} Complex (NormedDivisionRing.toDivisionRing.{0} Complex (NormedField.toNormedDivisionRing.{0} Complex Complex.normedField))))) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real Complex (HasLiftT.mk.{1, 1} Real Complex (CoeTCβ‚“.coe.{1, 1} Real Complex (coeBase.{1, 1} Real Complex Complex.hasCoe))) Real.pi) (OfNat.ofNat.{0} Complex 2 (OfNat.mk.{0} Complex 2 (bit0.{0} Complex Complex.hasAdd (One.one.{0} Complex Complex.hasOne))))) Complex.I)
-but is expected to have type
-  Eq.{1} Complex (Complex.log Complex.I) (HMul.hMul.{0, 0, 0} Complex Complex Complex (instHMul.{0} Complex Complex.instMulComplex) (HDiv.hDiv.{0, 0, 0} Complex Complex Complex (instHDiv.{0} Complex (Field.toDiv.{0} Complex Complex.instFieldComplex)) (Complex.ofReal' Real.pi) (OfNat.ofNat.{0} Complex 2 (instOfNat.{0} Complex 2 (Semiring.toNatCast.{0} Complex Complex.instSemiringComplex) (instAtLeastTwoHAddNatInstHAddInstAddNatOfNat (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0)))))) Complex.I)
-Case conversion may be inaccurate. Consider using '#align complex.log_I Complex.log_Iβ‚“'. -/
 theorem log_I : log I = Ο€ / 2 * I := by simp [log]
 #align complex.log_I Complex.log_I
 
-/- warning: complex.log_neg_I -> Complex.log_neg_I is a dubious translation:
-lean 3 declaration is
-  Eq.{1} Complex (Complex.log (Neg.neg.{0} Complex Complex.hasNeg Complex.I)) (HMul.hMul.{0, 0, 0} Complex Complex Complex (instHMul.{0} Complex Complex.hasMul) (Neg.neg.{0} Complex Complex.hasNeg (HDiv.hDiv.{0, 0, 0} Complex Complex Complex (instHDiv.{0} Complex (DivInvMonoid.toHasDiv.{0} Complex (DivisionRing.toDivInvMonoid.{0} Complex (NormedDivisionRing.toDivisionRing.{0} Complex (NormedField.toNormedDivisionRing.{0} Complex Complex.normedField))))) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real Complex (HasLiftT.mk.{1, 1} Real Complex (CoeTCβ‚“.coe.{1, 1} Real Complex (coeBase.{1, 1} Real Complex Complex.hasCoe))) Real.pi) (OfNat.ofNat.{0} Complex 2 (OfNat.mk.{0} Complex 2 (bit0.{0} Complex Complex.hasAdd (One.one.{0} Complex Complex.hasOne)))))) Complex.I)
-but is expected to have type
-  Eq.{1} Complex (Complex.log (Neg.neg.{0} Complex Complex.instNegComplex Complex.I)) (HMul.hMul.{0, 0, 0} Complex Complex Complex (instHMul.{0} Complex Complex.instMulComplex) (Neg.neg.{0} Complex Complex.instNegComplex (HDiv.hDiv.{0, 0, 0} Complex Complex Complex (instHDiv.{0} Complex (Field.toDiv.{0} Complex Complex.instFieldComplex)) (Complex.ofReal' Real.pi) (OfNat.ofNat.{0} Complex 2 (instOfNat.{0} Complex 2 (Semiring.toNatCast.{0} Complex Complex.instSemiringComplex) (instAtLeastTwoHAddNatInstHAddInstAddNatOfNat (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0))))))) Complex.I)
-Case conversion may be inaccurate. Consider using '#align complex.log_neg_I Complex.log_neg_Iβ‚“'. -/
 theorem log_neg_I : log (-I) = -(Ο€ / 2) * I := by simp [log]
 #align complex.log_neg_I Complex.log_neg_I
 
-/- warning: complex.log_conj_eq_ite -> Complex.log_conj_eq_ite is a dubious translation:
-lean 3 declaration is
-  forall (x : Complex), Eq.{1} Complex (Complex.log (coeFn.{1, 1} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring))) (fun (_x : RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring))) => Complex -> Complex) (RingHom.hasCoeToFun.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring))) (starRingEnd.{0} Complex Complex.commSemiring Complex.starRing) x)) (ite.{1} Complex (Eq.{1} Real (Complex.arg x) Real.pi) (Real.decidableEq (Complex.arg x) Real.pi) (Complex.log x) (coeFn.{1, 1} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring))) (fun (_x : RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring))) => Complex -> Complex) (RingHom.hasCoeToFun.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring))) (starRingEnd.{0} Complex Complex.commSemiring Complex.starRing) (Complex.log x)))
-but is expected to have type
-  forall (x : Complex), Eq.{1} Complex (Complex.log (FunLike.coe.{1, 1, 1} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) Complex (fun (_x : Complex) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Complex) => Complex) _x) (MulHomClass.toFunLike.{0, 0, 0} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) Complex Complex (NonUnitalNonAssocSemiring.toMul.{0} Complex (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)))) (NonUnitalNonAssocSemiring.toMul.{0} Complex (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)))) (NonUnitalRingHomClass.toMulHomClass.{0, 0, 0} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) Complex Complex (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) (RingHomClass.toNonUnitalRingHomClass.{0, 0, 0} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (RingHom.instRingHomClassRingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)))))) (starRingEnd.{0} Complex Complex.instCommSemiringComplex Complex.instStarRingComplexToNonUnitalSemiringToNonUnitalCommSemiringToNonUnitalCommRingCommRing) x)) (ite.{1} Complex (Eq.{1} Real (Complex.arg x) Real.pi) (Real.decidableEq (Complex.arg x) Real.pi) (Complex.log x) (FunLike.coe.{1, 1, 1} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) Complex (fun (_x : Complex) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Complex) => Complex) _x) (MulHomClass.toFunLike.{0, 0, 0} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) Complex Complex (NonUnitalNonAssocSemiring.toMul.{0} Complex (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)))) (NonUnitalNonAssocSemiring.toMul.{0} Complex (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)))) (NonUnitalRingHomClass.toMulHomClass.{0, 0, 0} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) Complex Complex (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) (RingHomClass.toNonUnitalRingHomClass.{0, 0, 0} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (RingHom.instRingHomClassRingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)))))) (starRingEnd.{0} Complex Complex.instCommSemiringComplex Complex.instStarRingComplexToNonUnitalSemiringToNonUnitalCommSemiringToNonUnitalCommRingCommRing) (Complex.log x)))
-Case conversion may be inaccurate. Consider using '#align complex.log_conj_eq_ite Complex.log_conj_eq_iteβ‚“'. -/
 theorem log_conj_eq_ite (x : β„‚) : log (conj x) = if x.arg = Ο€ then log x else conj (log x) :=
   by
   simp_rw [log, abs_conj, arg_conj, map_add, map_mul, conj_of_real]
@@ -221,22 +119,10 @@ theorem log_conj_eq_ite (x : β„‚) : log (conj x) = if x.arg = Ο€ then log x else
   simp_rw [of_real_neg, conj_I, mul_neg, neg_mul]
 #align complex.log_conj_eq_ite Complex.log_conj_eq_ite
 
-/- warning: complex.log_conj -> Complex.log_conj is a dubious translation:
-lean 3 declaration is
-  forall (x : Complex), (Ne.{1} Real (Complex.arg x) Real.pi) -> (Eq.{1} Complex (Complex.log (coeFn.{1, 1} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring))) (fun (_x : RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring))) => Complex -> Complex) (RingHom.hasCoeToFun.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring))) (starRingEnd.{0} Complex Complex.commSemiring Complex.starRing) x)) (coeFn.{1, 1} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring))) (fun (_x : RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring))) => Complex -> Complex) (RingHom.hasCoeToFun.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring))) (starRingEnd.{0} Complex Complex.commSemiring Complex.starRing) (Complex.log x)))
-but is expected to have type
-  forall (x : Complex), (Ne.{1} Real (Complex.arg x) Real.pi) -> (Eq.{1} Complex (Complex.log (FunLike.coe.{1, 1, 1} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) Complex (fun (_x : Complex) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Complex) => Complex) _x) (MulHomClass.toFunLike.{0, 0, 0} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) Complex Complex (NonUnitalNonAssocSemiring.toMul.{0} Complex (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)))) (NonUnitalNonAssocSemiring.toMul.{0} Complex (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)))) (NonUnitalRingHomClass.toMulHomClass.{0, 0, 0} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) Complex Complex (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) (RingHomClass.toNonUnitalRingHomClass.{0, 0, 0} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (RingHom.instRingHomClassRingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)))))) (starRingEnd.{0} Complex Complex.instCommSemiringComplex Complex.instStarRingComplexToNonUnitalSemiringToNonUnitalCommSemiringToNonUnitalCommRingCommRing) x)) (FunLike.coe.{1, 1, 1} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) Complex (fun (_x : Complex) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Complex) => Complex) _x) (MulHomClass.toFunLike.{0, 0, 0} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) Complex Complex (NonUnitalNonAssocSemiring.toMul.{0} Complex (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)))) (NonUnitalNonAssocSemiring.toMul.{0} Complex (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)))) (NonUnitalRingHomClass.toMulHomClass.{0, 0, 0} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) Complex Complex (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) (RingHomClass.toNonUnitalRingHomClass.{0, 0, 0} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (RingHom.instRingHomClassRingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)))))) (starRingEnd.{0} Complex Complex.instCommSemiringComplex Complex.instStarRingComplexToNonUnitalSemiringToNonUnitalCommSemiringToNonUnitalCommRingCommRing) (Complex.log x)))
-Case conversion may be inaccurate. Consider using '#align complex.log_conj Complex.log_conjβ‚“'. -/
 theorem log_conj (x : β„‚) (h : x.arg β‰  Ο€) : log (conj x) = conj (log x) := by
   rw [log_conj_eq_ite, if_neg h]
 #align complex.log_conj Complex.log_conj
 
-/- warning: complex.log_inv_eq_ite -> Complex.log_inv_eq_ite is a dubious translation:
-lean 3 declaration is
-  forall (x : Complex), Eq.{1} Complex (Complex.log (Inv.inv.{0} Complex Complex.hasInv x)) (ite.{1} Complex (Eq.{1} Real (Complex.arg x) Real.pi) (Real.decidableEq (Complex.arg x) Real.pi) (Neg.neg.{0} Complex Complex.hasNeg (coeFn.{1, 1} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring))) (fun (_x : RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring))) => Complex -> Complex) (RingHom.hasCoeToFun.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring))) (starRingEnd.{0} Complex Complex.commSemiring Complex.starRing) (Complex.log x))) (Neg.neg.{0} Complex Complex.hasNeg (Complex.log x)))
-but is expected to have type
-  forall (x : Complex), Eq.{1} Complex (Complex.log (Inv.inv.{0} Complex Complex.instInvComplex x)) (ite.{1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Complex) => Complex) (Complex.log x)) (Eq.{1} Real (Complex.arg x) Real.pi) (Real.decidableEq (Complex.arg x) Real.pi) (Neg.neg.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Complex) => Complex) (Complex.log x)) Complex.instNegComplex (FunLike.coe.{1, 1, 1} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) Complex (fun (_x : Complex) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Complex) => Complex) _x) (MulHomClass.toFunLike.{0, 0, 0} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) Complex Complex (NonUnitalNonAssocSemiring.toMul.{0} Complex (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)))) (NonUnitalNonAssocSemiring.toMul.{0} Complex (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)))) (NonUnitalRingHomClass.toMulHomClass.{0, 0, 0} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) Complex Complex (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) (RingHomClass.toNonUnitalRingHomClass.{0, 0, 0} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (RingHom.instRingHomClassRingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)))))) (starRingEnd.{0} Complex Complex.instCommSemiringComplex Complex.instStarRingComplexToNonUnitalSemiringToNonUnitalCommSemiringToNonUnitalCommRingCommRing) (Complex.log x))) (Neg.neg.{0} Complex Complex.instNegComplex (Complex.log x)))
-Case conversion may be inaccurate. Consider using '#align complex.log_inv_eq_ite Complex.log_inv_eq_iteβ‚“'. -/
 theorem log_inv_eq_ite (x : β„‚) : log x⁻¹ = if x.arg = Ο€ then -conj (log x) else -log x :=
   by
   by_cases hx : x = 0
@@ -251,30 +137,12 @@ theorem log_inv_eq_ite (x : β„‚) : log x⁻¹ = if x.arg = Ο€ then -conj (log x)
   Β· rwa [map_ne_zero]
 #align complex.log_inv_eq_ite Complex.log_inv_eq_ite
 
-/- warning: complex.log_inv -> Complex.log_inv is a dubious translation:
-lean 3 declaration is
-  forall (x : Complex), (Ne.{1} Real (Complex.arg x) Real.pi) -> (Eq.{1} Complex (Complex.log (Inv.inv.{0} Complex Complex.hasInv x)) (Neg.neg.{0} Complex Complex.hasNeg (Complex.log x)))
-but is expected to have type
-  forall (x : Complex), (Ne.{1} Real (Complex.arg x) Real.pi) -> (Eq.{1} Complex (Complex.log (Inv.inv.{0} Complex Complex.instInvComplex x)) (Neg.neg.{0} Complex Complex.instNegComplex (Complex.log x)))
-Case conversion may be inaccurate. Consider using '#align complex.log_inv Complex.log_invβ‚“'. -/
 theorem log_inv (x : β„‚) (hx : x.arg β‰  Ο€) : log x⁻¹ = -log x := by rw [log_inv_eq_ite, if_neg hx]
 #align complex.log_inv Complex.log_inv
 
-/- warning: complex.two_pi_I_ne_zero -> Complex.two_pi_I_ne_zero is a dubious translation:
-lean 3 declaration is
-  Ne.{1} Complex (HMul.hMul.{0, 0, 0} Complex Complex Complex (instHMul.{0} Complex Complex.hasMul) (HMul.hMul.{0, 0, 0} Complex Complex Complex (instHMul.{0} Complex Complex.hasMul) (OfNat.ofNat.{0} Complex 2 (OfNat.mk.{0} Complex 2 (bit0.{0} Complex Complex.hasAdd (One.one.{0} Complex Complex.hasOne)))) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real Complex (HasLiftT.mk.{1, 1} Real Complex (CoeTCβ‚“.coe.{1, 1} Real Complex (coeBase.{1, 1} Real Complex Complex.hasCoe))) Real.pi)) Complex.I) (OfNat.ofNat.{0} Complex 0 (OfNat.mk.{0} Complex 0 (Zero.zero.{0} Complex Complex.hasZero)))
-but is expected to have type
-  Ne.{1} Complex (HMul.hMul.{0, 0, 0} Complex Complex Complex (instHMul.{0} Complex Complex.instMulComplex) (HMul.hMul.{0, 0, 0} Complex Complex Complex (instHMul.{0} Complex Complex.instMulComplex) (OfNat.ofNat.{0} Complex 2 (instOfNat.{0} Complex 2 (Semiring.toNatCast.{0} Complex Complex.instSemiringComplex) (instAtLeastTwoHAddNatInstHAddInstAddNatOfNat (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0))))) (Complex.ofReal' Real.pi)) Complex.I) (OfNat.ofNat.{0} Complex 0 (Zero.toOfNat0.{0} Complex Complex.instZeroComplex))
-Case conversion may be inaccurate. Consider using '#align complex.two_pi_I_ne_zero Complex.two_pi_I_ne_zeroβ‚“'. -/
 theorem two_pi_I_ne_zero : (2 * Ο€ * I : β„‚) β‰  0 := by norm_num [Real.pi_ne_zero, I_ne_zero]
 #align complex.two_pi_I_ne_zero Complex.two_pi_I_ne_zero
 
-/- warning: complex.exp_eq_one_iff -> Complex.exp_eq_one_iff is a dubious translation:
-lean 3 declaration is
-  forall {x : Complex}, Iff (Eq.{1} Complex (Complex.exp x) (OfNat.ofNat.{0} Complex 1 (OfNat.mk.{0} Complex 1 (One.one.{0} Complex Complex.hasOne)))) (Exists.{1} Int (fun (n : Int) => Eq.{1} Complex x (HMul.hMul.{0, 0, 0} Complex Complex Complex (instHMul.{0} Complex Complex.hasMul) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Int Complex (HasLiftT.mk.{1, 1} Int Complex (CoeTCβ‚“.coe.{1, 1} Int Complex (Int.castCoe.{0} Complex (AddGroupWithOne.toHasIntCast.{0} Complex Complex.addGroupWithOne)))) n) (HMul.hMul.{0, 0, 0} Complex Complex Complex (instHMul.{0} Complex Complex.hasMul) (HMul.hMul.{0, 0, 0} Complex Complex Complex (instHMul.{0} Complex Complex.hasMul) (OfNat.ofNat.{0} Complex 2 (OfNat.mk.{0} Complex 2 (bit0.{0} Complex Complex.hasAdd (One.one.{0} Complex Complex.hasOne)))) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real Complex (HasLiftT.mk.{1, 1} Real Complex (CoeTCβ‚“.coe.{1, 1} Real Complex (coeBase.{1, 1} Real Complex Complex.hasCoe))) Real.pi)) Complex.I))))
-but is expected to have type
-  forall {x : Complex}, Iff (Eq.{1} Complex (Complex.exp x) (OfNat.ofNat.{0} Complex 1 (One.toOfNat1.{0} Complex Complex.instOneComplex))) (Exists.{1} Int (fun (n : Int) => Eq.{1} Complex x (HMul.hMul.{0, 0, 0} Complex Complex Complex (instHMul.{0} Complex Complex.instMulComplex) (Int.cast.{0} Complex (Ring.toIntCast.{0} Complex Complex.instRingComplex) n) (HMul.hMul.{0, 0, 0} Complex Complex Complex (instHMul.{0} Complex Complex.instMulComplex) (HMul.hMul.{0, 0, 0} Complex Complex Complex (instHMul.{0} Complex Complex.instMulComplex) (OfNat.ofNat.{0} Complex 2 (instOfNat.{0} Complex 2 (Semiring.toNatCast.{0} Complex Complex.instSemiringComplex) (instAtLeastTwoHAddNatInstHAddInstAddNatOfNat (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0))))) (Complex.ofReal' Real.pi)) Complex.I))))
-Case conversion may be inaccurate. Consider using '#align complex.exp_eq_one_iff Complex.exp_eq_one_iffβ‚“'. -/
 theorem exp_eq_one_iff {x : β„‚} : exp x = 1 ↔ βˆƒ n : β„€, x = n * (2 * Ο€ * I) :=
   by
   constructor
@@ -287,22 +155,10 @@ theorem exp_eq_one_iff {x : β„‚} : exp x = 1 ↔ βˆƒ n : β„€, x = n * (2 * Ο€ *
   · rintro ⟨n, rfl⟩; exact (exp_periodic.int_mul n).Eq.trans exp_zero
 #align complex.exp_eq_one_iff Complex.exp_eq_one_iff
 
-/- warning: complex.exp_eq_exp_iff_exp_sub_eq_one -> Complex.exp_eq_exp_iff_exp_sub_eq_one is a dubious translation:
-lean 3 declaration is
-  forall {x : Complex} {y : Complex}, Iff (Eq.{1} Complex (Complex.exp x) (Complex.exp y)) (Eq.{1} Complex (Complex.exp (HSub.hSub.{0, 0, 0} Complex Complex Complex (instHSub.{0} Complex Complex.hasSub) x y)) (OfNat.ofNat.{0} Complex 1 (OfNat.mk.{0} Complex 1 (One.one.{0} Complex Complex.hasOne))))
-but is expected to have type
-  forall {x : Complex} {y : Complex}, Iff (Eq.{1} Complex (Complex.exp x) (Complex.exp y)) (Eq.{1} Complex (Complex.exp (HSub.hSub.{0, 0, 0} Complex Complex Complex (instHSub.{0} Complex Complex.instSubComplex) x y)) (OfNat.ofNat.{0} Complex 1 (One.toOfNat1.{0} Complex Complex.instOneComplex)))
-Case conversion may be inaccurate. Consider using '#align complex.exp_eq_exp_iff_exp_sub_eq_one Complex.exp_eq_exp_iff_exp_sub_eq_oneβ‚“'. -/
 theorem exp_eq_exp_iff_exp_sub_eq_one {x y : β„‚} : exp x = exp y ↔ exp (x - y) = 1 := by
   rw [exp_sub, div_eq_one_iff_eq (exp_ne_zero _)]
 #align complex.exp_eq_exp_iff_exp_sub_eq_one Complex.exp_eq_exp_iff_exp_sub_eq_one
 
-/- warning: complex.exp_eq_exp_iff_exists_int -> Complex.exp_eq_exp_iff_exists_int is a dubious translation:
-lean 3 declaration is
-  forall {x : Complex} {y : Complex}, Iff (Eq.{1} Complex (Complex.exp x) (Complex.exp y)) (Exists.{1} Int (fun (n : Int) => Eq.{1} Complex x (HAdd.hAdd.{0, 0, 0} Complex Complex Complex (instHAdd.{0} Complex Complex.hasAdd) y (HMul.hMul.{0, 0, 0} Complex Complex Complex (instHMul.{0} Complex Complex.hasMul) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Int Complex (HasLiftT.mk.{1, 1} Int Complex (CoeTCβ‚“.coe.{1, 1} Int Complex (Int.castCoe.{0} Complex (AddGroupWithOne.toHasIntCast.{0} Complex Complex.addGroupWithOne)))) n) (HMul.hMul.{0, 0, 0} Complex Complex Complex (instHMul.{0} Complex Complex.hasMul) (HMul.hMul.{0, 0, 0} Complex Complex Complex (instHMul.{0} Complex Complex.hasMul) (OfNat.ofNat.{0} Complex 2 (OfNat.mk.{0} Complex 2 (bit0.{0} Complex Complex.hasAdd (One.one.{0} Complex Complex.hasOne)))) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real Complex (HasLiftT.mk.{1, 1} Real Complex (CoeTCβ‚“.coe.{1, 1} Real Complex (coeBase.{1, 1} Real Complex Complex.hasCoe))) Real.pi)) Complex.I)))))
-but is expected to have type
-  forall {x : Complex} {y : Complex}, Iff (Eq.{1} Complex (Complex.exp x) (Complex.exp y)) (Exists.{1} Int (fun (n : Int) => Eq.{1} Complex x (HAdd.hAdd.{0, 0, 0} Complex Complex Complex (instHAdd.{0} Complex Complex.instAddComplex) y (HMul.hMul.{0, 0, 0} Complex Complex Complex (instHMul.{0} Complex Complex.instMulComplex) (Int.cast.{0} Complex (Ring.toIntCast.{0} Complex Complex.instRingComplex) n) (HMul.hMul.{0, 0, 0} Complex Complex Complex (instHMul.{0} Complex Complex.instMulComplex) (HMul.hMul.{0, 0, 0} Complex Complex Complex (instHMul.{0} Complex Complex.instMulComplex) (OfNat.ofNat.{0} Complex 2 (instOfNat.{0} Complex 2 (Semiring.toNatCast.{0} Complex Complex.instSemiringComplex) (instAtLeastTwoHAddNatInstHAddInstAddNatOfNat (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0))))) (Complex.ofReal' Real.pi)) Complex.I)))))
-Case conversion may be inaccurate. Consider using '#align complex.exp_eq_exp_iff_exists_int Complex.exp_eq_exp_iff_exists_intβ‚“'. -/
 theorem exp_eq_exp_iff_exists_int {x y : β„‚} : exp x = exp y ↔ βˆƒ n : β„€, x = y + n * (2 * Ο€ * I) := by
   simp only [exp_eq_exp_iff_exp_sub_eq_one, exp_eq_one_iff, sub_eq_iff_eq_add']
 #align complex.exp_eq_exp_iff_exists_int Complex.exp_eq_exp_iff_exists_int
@@ -327,12 +183,6 @@ theorem countable_preimage_exp {s : Set β„‚} : (exp ⁻¹' s).Countable ↔ s.Co
 alias countable_preimage_exp ↔ _ _root_.set.countable.preimage_cexp
 #align set.countable.preimage_cexp Set.Countable.preimage_cexp
 
-/- warning: complex.tendsto_log_nhds_within_im_neg_of_re_neg_of_im_zero -> Complex.tendsto_log_nhdsWithin_im_neg_of_re_neg_of_im_zero is a dubious translation:
-lean 3 declaration is
-  forall {z : Complex}, (LT.lt.{0} Real Real.hasLt (Complex.re z) (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))) -> (Eq.{1} Real (Complex.im z) (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))) -> (Filter.Tendsto.{0, 0} Complex Complex Complex.log (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)))))) z (setOf.{0} Complex (fun (z : Complex) => LT.lt.{0} Real Real.hasLt (Complex.im z) (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))))) (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)))))) (HSub.hSub.{0, 0, 0} Complex Complex Complex (instHSub.{0} Complex Complex.hasSub) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real Complex (HasLiftT.mk.{1, 1} Real Complex (CoeTCβ‚“.coe.{1, 1} Real Complex (coeBase.{1, 1} Real Complex Complex.hasCoe))) (Real.log (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 z))) (HMul.hMul.{0, 0, 0} Complex Complex Complex (instHMul.{0} Complex Complex.hasMul) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real Complex (HasLiftT.mk.{1, 1} Real Complex (CoeTCβ‚“.coe.{1, 1} Real Complex (coeBase.{1, 1} Real Complex Complex.hasCoe))) Real.pi) Complex.I))))
-but is expected to have type
-  forall {z : Complex}, (LT.lt.{0} Real Real.instLTReal (Complex.re z) (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))) -> (Eq.{1} Real (Complex.im z) (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))) -> (Filter.Tendsto.{0, 0} Complex Complex Complex.log (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)))))) z (setOf.{0} Complex (fun (z : Complex) => LT.lt.{0} Real Real.instLTReal (Complex.im z) (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))))) (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)))))) (HSub.hSub.{0, 0, 0} Complex Complex Complex (instHSub.{0} Complex Complex.instSubComplex) (Complex.ofReal' (Real.log (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 z))) (HMul.hMul.{0, 0, 0} Complex Complex Complex (instHMul.{0} Complex Complex.instMulComplex) (Complex.ofReal' Real.pi) Complex.I))))
-Case conversion may be inaccurate. Consider using '#align complex.tendsto_log_nhds_within_im_neg_of_re_neg_of_im_zero Complex.tendsto_log_nhdsWithin_im_neg_of_re_neg_of_im_zeroβ‚“'. -/
 theorem tendsto_log_nhdsWithin_im_neg_of_re_neg_of_im_zero {z : β„‚} (hre : z.re < 0)
     (him : z.im = 0) : Tendsto log (𝓝[{ z : β„‚ | z.im < 0 }] z) (𝓝 <| Real.log (abs z) - Ο€ * I) :=
   by
@@ -347,12 +197,6 @@ theorem tendsto_log_nhdsWithin_im_neg_of_re_neg_of_im_zero {z : β„‚} (hre : z.re
   Β· lift z to ℝ using him; simpa using hre.ne
 #align complex.tendsto_log_nhds_within_im_neg_of_re_neg_of_im_zero Complex.tendsto_log_nhdsWithin_im_neg_of_re_neg_of_im_zero
 
-/- warning: complex.continuous_within_at_log_of_re_neg_of_im_zero -> Complex.continuousWithinAt_log_of_re_neg_of_im_zero is a dubious translation:
-lean 3 declaration is
-  forall {z : Complex}, (LT.lt.{0} Real Real.hasLt (Complex.re z) (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))) -> (Eq.{1} Real (Complex.im z) (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))) -> (ContinuousWithinAt.{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.log (setOf.{0} Complex (fun (z : Complex) => LE.le.{0} Real Real.hasLe (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) (Complex.im z))) z)
-but is expected to have type
-  forall {z : Complex}, (LT.lt.{0} Real Real.instLTReal (Complex.re z) (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))) -> (Eq.{1} Real (Complex.im z) (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))) -> (ContinuousWithinAt.{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.log (setOf.{0} Complex (fun (z : Complex) => LE.le.{0} Real Real.instLEReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) (Complex.im z))) z)
-Case conversion may be inaccurate. Consider using '#align complex.continuous_within_at_log_of_re_neg_of_im_zero Complex.continuousWithinAt_log_of_re_neg_of_im_zeroβ‚“'. -/
 theorem continuousWithinAt_log_of_re_neg_of_im_zero {z : β„‚} (hre : z.re < 0) (him : z.im = 0) :
     ContinuousWithinAt log { z : β„‚ | 0 ≀ z.im } z :=
   by
@@ -366,35 +210,17 @@ theorem continuousWithinAt_log_of_re_neg_of_im_zero {z : β„‚} (hre : z.re < 0) (
   Β· lift z to ℝ using him; simpa using hre.ne
 #align complex.continuous_within_at_log_of_re_neg_of_im_zero Complex.continuousWithinAt_log_of_re_neg_of_im_zero
 
-/- warning: complex.tendsto_log_nhds_within_im_nonneg_of_re_neg_of_im_zero -> Complex.tendsto_log_nhdsWithin_im_nonneg_of_re_neg_of_im_zero is a dubious translation:
-lean 3 declaration is
-  forall {z : Complex}, (LT.lt.{0} Real Real.hasLt (Complex.re z) (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))) -> (Eq.{1} Real (Complex.im z) (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))) -> (Filter.Tendsto.{0, 0} Complex Complex Complex.log (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)))))) z (setOf.{0} Complex (fun (z : Complex) => LE.le.{0} Real Real.hasLe (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) (Complex.im z)))) (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)))))) (HAdd.hAdd.{0, 0, 0} Complex Complex Complex (instHAdd.{0} Complex Complex.hasAdd) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real Complex (HasLiftT.mk.{1, 1} Real Complex (CoeTCβ‚“.coe.{1, 1} Real Complex (coeBase.{1, 1} Real Complex Complex.hasCoe))) (Real.log (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 z))) (HMul.hMul.{0, 0, 0} Complex Complex Complex (instHMul.{0} Complex Complex.hasMul) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real Complex (HasLiftT.mk.{1, 1} Real Complex (CoeTCβ‚“.coe.{1, 1} Real Complex (coeBase.{1, 1} Real Complex Complex.hasCoe))) Real.pi) Complex.I))))
-but is expected to have type
-  forall {z : Complex}, (LT.lt.{0} Real Real.instLTReal (Complex.re z) (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))) -> (Eq.{1} Real (Complex.im z) (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))) -> (Filter.Tendsto.{0, 0} Complex Complex Complex.log (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)))))) z (setOf.{0} Complex (fun (z : Complex) => LE.le.{0} Real Real.instLEReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) (Complex.im z)))) (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)))))) (HAdd.hAdd.{0, 0, 0} Complex Complex Complex (instHAdd.{0} Complex Complex.instAddComplex) (Complex.ofReal' (Real.log (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 z))) (HMul.hMul.{0, 0, 0} Complex Complex Complex (instHMul.{0} Complex Complex.instMulComplex) (Complex.ofReal' Real.pi) Complex.I))))
-Case conversion may be inaccurate. Consider using '#align complex.tendsto_log_nhds_within_im_nonneg_of_re_neg_of_im_zero Complex.tendsto_log_nhdsWithin_im_nonneg_of_re_neg_of_im_zeroβ‚“'. -/
 theorem tendsto_log_nhdsWithin_im_nonneg_of_re_neg_of_im_zero {z : β„‚} (hre : z.re < 0)
     (him : z.im = 0) : Tendsto log (𝓝[{ z : β„‚ | 0 ≀ z.im }] z) (𝓝 <| Real.log (abs z) + Ο€ * I) := by
   simpa only [log, arg_eq_pi_iff.2 ⟨hre, him⟩] using
     (continuous_within_at_log_of_re_neg_of_im_zero hre him).Tendsto
 #align complex.tendsto_log_nhds_within_im_nonneg_of_re_neg_of_im_zero Complex.tendsto_log_nhdsWithin_im_nonneg_of_re_neg_of_im_zero
 
-/- warning: complex.map_exp_comap_re_at_bot -> Complex.map_exp_comap_re_atBot is a dubious translation:
-lean 3 declaration is
-  Eq.{1} (Filter.{0} Complex) (Filter.map.{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
-  Eq.{1} (Filter.{0} Complex) (Filter.map.{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.map_exp_comap_re_at_bot Complex.map_exp_comap_re_atBotβ‚“'. -/
 @[simp]
 theorem map_exp_comap_re_atBot : map exp (comap re atBot) = 𝓝[β‰ ] 0 := by
   rw [← comap_exp_nhds_zero, map_comap, range_exp, nhdsWithin]
 #align complex.map_exp_comap_re_at_bot Complex.map_exp_comap_re_atBot
 
-/- warning: complex.map_exp_comap_re_at_top -> Complex.map_exp_comap_re_atTop is a dubious translation:
-lean 3 declaration is
-  Eq.{1} (Filter.{0} Complex) (Filter.map.{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
-  Eq.{1} (Filter.{0} Complex) (Filter.map.{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.map_exp_comap_re_at_top Complex.map_exp_comap_re_atTopβ‚“'. -/
 @[simp]
 theorem map_exp_comap_re_atTop : map exp (comap re atTop) = comap abs atTop :=
   by
@@ -412,12 +238,6 @@ open Topology
 
 variable {Ξ± : Type _}
 
-/- warning: continuous_at_clog -> continuousAt_clog is a dubious translation:
-lean 3 declaration is
-  forall {x : Complex}, (Or (LT.lt.{0} Real Real.hasLt (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) (Complex.re x)) (Ne.{1} Real (Complex.im x) (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) -> (ContinuousAt.{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.log x)
-but is expected to have type
-  forall {x : Complex}, (Or (LT.lt.{0} Real Real.instLTReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) (Complex.re x)) (Ne.{1} Real (Complex.im x) (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) -> (ContinuousAt.{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.log x)
-Case conversion may be inaccurate. Consider using '#align continuous_at_clog continuousAt_clogβ‚“'. -/
 theorem continuousAt_clog {x : β„‚} (h : 0 < x.re ∨ x.im β‰  0) : ContinuousAt log x :=
   by
   refine' ContinuousAt.add _ _
@@ -431,12 +251,6 @@ theorem continuousAt_clog {x : β„‚} (h : 0 < x.re ∨ x.im β‰  0) : ContinuousAt
     exact continuous_at_arg h
 #align continuous_at_clog continuousAt_clog
 
-/- warning: filter.tendsto.clog -> Filter.Tendsto.clog is a dubious translation:
-lean 3 declaration is
-  forall {Ξ± : Type.{u1}} {l : Filter.{u1} Ξ±} {f : Ξ± -> Complex} {x : 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)))))) x)) -> (Or (LT.lt.{0} Real Real.hasLt (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) (Complex.re x)) (Ne.{1} Real (Complex.im x) (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) -> (Filter.Tendsto.{u1, 0} Ξ± Complex (fun (t : Ξ±) => Complex.log (f t)) 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.log x)))
-but is expected to have type
-  forall {Ξ± : Type.{u1}} {l : Filter.{u1} Ξ±} {f : Ξ± -> Complex} {x : 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)))))) x)) -> (Or (LT.lt.{0} Real Real.instLTReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) (Complex.re x)) (Ne.{1} Real (Complex.im x) (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) -> (Filter.Tendsto.{u1, 0} Ξ± Complex (fun (t : Ξ±) => Complex.log (f t)) 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.log x)))
-Case conversion may be inaccurate. Consider using '#align filter.tendsto.clog Filter.Tendsto.clogβ‚“'. -/
 theorem Filter.Tendsto.clog {l : Filter Ξ±} {f : Ξ± β†’ β„‚} {x : β„‚} (h : Tendsto f l (𝓝 x))
     (hx : 0 < x.re ∨ x.im β‰  0) : Tendsto (fun t => log (f t)) l (𝓝 <| log x) :=
   (continuousAt_clog hx).Tendsto.comp h
@@ -444,45 +258,21 @@ theorem Filter.Tendsto.clog {l : Filter Ξ±} {f : Ξ± β†’ β„‚} {x : β„‚} (h : Tend
 
 variable [TopologicalSpace Ξ±]
 
-/- warning: continuous_at.clog -> ContinuousAt.clog 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) -> (Or (LT.lt.{0} Real Real.hasLt (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) (Complex.re (f x))) (Ne.{1} Real (Complex.im (f x)) (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) -> (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 (t : Ξ±) => Complex.log (f t)) 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) -> (Or (LT.lt.{0} Real Real.instLTReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) (Complex.re (f x))) (Ne.{1} Real (Complex.im (f x)) (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) -> (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 (t : Ξ±) => Complex.log (f t)) x)
-Case conversion may be inaccurate. Consider using '#align continuous_at.clog ContinuousAt.clogβ‚“'. -/
 theorem ContinuousAt.clog {f : Ξ± β†’ β„‚} {x : Ξ±} (h₁ : ContinuousAt f x)
     (hβ‚‚ : 0 < (f x).re ∨ (f x).im β‰  0) : ContinuousAt (fun t => log (f t)) x :=
   h₁.clog hβ‚‚
 #align continuous_at.clog ContinuousAt.clog
 
-/- warning: continuous_within_at.clog -> ContinuousWithinAt.clog 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) -> (Or (LT.lt.{0} Real Real.hasLt (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) (Complex.re (f x))) (Ne.{1} Real (Complex.im (f x)) (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) -> (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 (t : Ξ±) => Complex.log (f t)) 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) -> (Or (LT.lt.{0} Real Real.instLTReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) (Complex.re (f x))) (Ne.{1} Real (Complex.im (f x)) (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) -> (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 (t : Ξ±) => Complex.log (f t)) s x)
-Case conversion may be inaccurate. Consider using '#align continuous_within_at.clog ContinuousWithinAt.clogβ‚“'. -/
 theorem ContinuousWithinAt.clog {f : Ξ± β†’ β„‚} {s : Set Ξ±} {x : Ξ±} (h₁ : ContinuousWithinAt f s x)
     (hβ‚‚ : 0 < (f x).re ∨ (f x).im β‰  0) : ContinuousWithinAt (fun t => log (f t)) s x :=
   h₁.clog hβ‚‚
 #align continuous_within_at.clog ContinuousWithinAt.clog
 
-/- warning: continuous_on.clog -> ContinuousOn.clog 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) -> (forall (x : Ξ±), (Membership.Mem.{u1, u1} Ξ± (Set.{u1} Ξ±) (Set.hasMem.{u1} Ξ±) x s) -> (Or (LT.lt.{0} Real Real.hasLt (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) (Complex.re (f x))) (Ne.{1} Real (Complex.im (f x)) (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))))) -> (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 (t : Ξ±) => Complex.log (f t)) 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) -> (forall (x : Ξ±), (Membership.mem.{u1, u1} Ξ± (Set.{u1} Ξ±) (Set.instMembershipSet.{u1} Ξ±) x s) -> (Or (LT.lt.{0} Real Real.instLTReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) (Complex.re (f x))) (Ne.{1} Real (Complex.im (f x)) (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))))) -> (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 (t : Ξ±) => Complex.log (f t)) s)
-Case conversion may be inaccurate. Consider using '#align continuous_on.clog ContinuousOn.clogβ‚“'. -/
 theorem ContinuousOn.clog {f : Ξ± β†’ β„‚} {s : Set Ξ±} (h₁ : ContinuousOn f s)
     (hβ‚‚ : βˆ€ x ∈ s, 0 < (f x).re ∨ (f x).im β‰  0) : ContinuousOn (fun t => log (f t)) s := fun x hx =>
   (h₁ x hx).clog (hβ‚‚ x hx)
 #align continuous_on.clog ContinuousOn.clog
 
-/- warning: continuous.clog -> Continuous.clog 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) -> (forall (x : Ξ±), Or (LT.lt.{0} Real Real.hasLt (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) (Complex.re (f x))) (Ne.{1} Real (Complex.im (f x)) (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) -> (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 (t : Ξ±) => Complex.log (f t)))
-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) -> (forall (x : Ξ±), Or (LT.lt.{0} Real Real.instLTReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) (Complex.re (f x))) (Ne.{1} Real (Complex.im (f x)) (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) -> (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 (t : Ξ±) => Complex.log (f t)))
-Case conversion may be inaccurate. Consider using '#align continuous.clog Continuous.clogβ‚“'. -/
 theorem Continuous.clog {f : Ξ± β†’ β„‚} (h₁ : Continuous f) (hβ‚‚ : βˆ€ x, 0 < (f x).re ∨ (f x).im β‰  0) :
     Continuous fun t => log (f t) :=
   continuous_iff_continuousAt.2 fun x => h₁.ContinuousAt.clog (hβ‚‚ x)
Diff
@@ -91,10 +91,7 @@ but is expected to have type
 Case conversion may be inaccurate. Consider using '#align complex.range_exp Complex.range_expβ‚“'. -/
 @[simp]
 theorem range_exp : range exp = {0}ᢜ :=
-  Set.ext fun x =>
-    ⟨by
-      rintro ⟨x, rfl⟩
-      exact exp_ne_zero x, fun hx => ⟨log x, exp_log hx⟩⟩
+  Set.ext fun x => ⟨by rintro ⟨x, rfl⟩; exact exp_ne_zero x, fun hx => ⟨log x, exp_log hx⟩⟩
 #align complex.range_exp Complex.range_exp
 
 /- warning: complex.log_exp -> Complex.log_exp is a dubious translation:
@@ -287,8 +284,7 @@ theorem exp_eq_one_iff {x : β„‚} : exp x = 1 ↔ βˆƒ n : β„€, x = n * (2 * Ο€ *
     rw [Int.cast_neg, neg_mul, eq_neg_iff_add_eq_zero]
     have : (x + n * (2 * Ο€ * I)).im ∈ Ioc (-Ο€) Ο€ := by simpa [two_mul, mul_add] using hn
     rw [← log_exp this.1 this.2, exp_periodic.int_mul n, h, log_one]
-  · rintro ⟨n, rfl⟩
-    exact (exp_periodic.int_mul n).Eq.trans exp_zero
+  · rintro ⟨n, rfl⟩; exact (exp_periodic.int_mul n).Eq.trans exp_zero
 #align complex.exp_eq_one_iff Complex.exp_eq_one_iff
 
 /- warning: complex.exp_eq_exp_iff_exp_sub_eq_one -> Complex.exp_eq_exp_iff_exp_sub_eq_one is a dubious translation:
@@ -324,8 +320,7 @@ theorem countable_preimage_exp {s : Set β„‚} : (exp ⁻¹' s).Countable ↔ s.Co
     rcases em (βˆƒ w, exp w = z) with (⟨w, rfl⟩ | hne)
     Β· simp only [preimage, mem_singleton_iff, exp_eq_exp_iff_exists_int, set_of_exists]
       exact countable_Union fun m => countable_singleton _
-    Β· push_neg  at hne
-      simp [preimage, hne]
+    Β· push_neg  at hne; simp [preimage, hne]
 #align complex.countable_preimage_exp Complex.countable_preimage_exp
 -/
 
@@ -349,8 +344,7 @@ theorem tendsto_log_nhdsWithin_im_neg_of_re_neg_of_im_zero {z : β„‚} (hre : z.re
         tendsto_const_nhds)
   convert this
   Β· simp [sub_eq_add_neg]
-  Β· lift z to ℝ using him
-    simpa using hre.ne
+  Β· lift z to ℝ using him; simpa using hre.ne
 #align complex.tendsto_log_nhds_within_im_neg_of_re_neg_of_im_zero Complex.tendsto_log_nhdsWithin_im_neg_of_re_neg_of_im_zero
 
 /- warning: complex.continuous_within_at_log_of_re_neg_of_im_zero -> Complex.continuousWithinAt_log_of_re_neg_of_im_zero is a dubious translation:
@@ -369,8 +363,7 @@ theorem continuousWithinAt_log_of_re_neg_of_im_zero {z : β„‚} (hre : z.re < 0) (
             continuous_within_at_arg_of_re_neg_of_im_zero hre him).mul
         tendsto_const_nhds)
   convert this
-  Β· lift z to ℝ using him
-    simpa using hre.ne
+  Β· lift z to ℝ using him; simpa using hre.ne
 #align complex.continuous_within_at_log_of_re_neg_of_im_zero Complex.continuousWithinAt_log_of_re_neg_of_im_zero
 
 /- warning: complex.tendsto_log_nhds_within_im_nonneg_of_re_neg_of_im_zero -> Complex.tendsto_log_nhdsWithin_im_nonneg_of_re_neg_of_im_zero is a dubious translation:
Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Chris Hughes, Abhimanyu Pallavi Sudhir, Jean Lo, Calle SΓΆnne, Benjamin Davidson
 
 ! This file was ported from Lean 3 source module analysis.special_functions.complex.log
-! leanprover-community/mathlib commit f2ce6086713c78a7f880485f7917ea547a215982
+! leanprover-community/mathlib commit 33c67ae661dd8988516ff7f247b0be3018cdd952
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -14,6 +14,9 @@ import Mathbin.Analysis.SpecialFunctions.Log.Basic
 /-!
 # The complex `log` function
 
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
 Basic properties, relationship with `exp`.
 -/
 
Diff
@@ -211,7 +211,7 @@ theorem log_neg_I : log (-I) = -(Ο€ / 2) * I := by simp [log]
 lean 3 declaration is
   forall (x : Complex), Eq.{1} Complex (Complex.log (coeFn.{1, 1} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring))) (fun (_x : RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring))) => Complex -> Complex) (RingHom.hasCoeToFun.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring))) (starRingEnd.{0} Complex Complex.commSemiring Complex.starRing) x)) (ite.{1} Complex (Eq.{1} Real (Complex.arg x) Real.pi) (Real.decidableEq (Complex.arg x) Real.pi) (Complex.log x) (coeFn.{1, 1} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring))) (fun (_x : RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring))) => Complex -> Complex) (RingHom.hasCoeToFun.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring))) (starRingEnd.{0} Complex Complex.commSemiring Complex.starRing) (Complex.log x)))
 but is expected to have type
-  forall (x : Complex), Eq.{1} Complex (Complex.log (FunLike.coe.{1, 1, 1} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) Complex (fun (_x : Complex) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Complex) => Complex) _x) (MulHomClass.toFunLike.{0, 0, 0} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) Complex Complex (NonUnitalNonAssocSemiring.toMul.{0} Complex (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)))) (NonUnitalNonAssocSemiring.toMul.{0} Complex (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)))) (NonUnitalRingHomClass.toMulHomClass.{0, 0, 0} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) Complex Complex (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) (RingHomClass.toNonUnitalRingHomClass.{0, 0, 0} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (RingHom.instRingHomClassRingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)))))) (starRingEnd.{0} Complex Complex.instCommSemiringComplex Complex.instStarRingComplexToNonUnitalSemiringToNonUnitalCommSemiringToNonUnitalCommRingCommRing) x)) (ite.{1} Complex (Eq.{1} Real (Complex.arg x) Real.pi) (Real.decidableEq (Complex.arg x) Real.pi) (Complex.log x) (FunLike.coe.{1, 1, 1} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) Complex (fun (_x : Complex) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Complex) => Complex) _x) (MulHomClass.toFunLike.{0, 0, 0} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) Complex Complex (NonUnitalNonAssocSemiring.toMul.{0} Complex (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)))) (NonUnitalNonAssocSemiring.toMul.{0} Complex (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)))) (NonUnitalRingHomClass.toMulHomClass.{0, 0, 0} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) Complex Complex (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) (RingHomClass.toNonUnitalRingHomClass.{0, 0, 0} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (RingHom.instRingHomClassRingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)))))) (starRingEnd.{0} Complex Complex.instCommSemiringComplex Complex.instStarRingComplexToNonUnitalSemiringToNonUnitalCommSemiringToNonUnitalCommRingCommRing) (Complex.log x)))
+  forall (x : Complex), Eq.{1} Complex (Complex.log (FunLike.coe.{1, 1, 1} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) Complex (fun (_x : Complex) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Complex) => Complex) _x) (MulHomClass.toFunLike.{0, 0, 0} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) Complex Complex (NonUnitalNonAssocSemiring.toMul.{0} Complex (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)))) (NonUnitalNonAssocSemiring.toMul.{0} Complex (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)))) (NonUnitalRingHomClass.toMulHomClass.{0, 0, 0} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) Complex Complex (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) (RingHomClass.toNonUnitalRingHomClass.{0, 0, 0} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (RingHom.instRingHomClassRingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)))))) (starRingEnd.{0} Complex Complex.instCommSemiringComplex Complex.instStarRingComplexToNonUnitalSemiringToNonUnitalCommSemiringToNonUnitalCommRingCommRing) x)) (ite.{1} Complex (Eq.{1} Real (Complex.arg x) Real.pi) (Real.decidableEq (Complex.arg x) Real.pi) (Complex.log x) (FunLike.coe.{1, 1, 1} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) Complex (fun (_x : Complex) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Complex) => Complex) _x) (MulHomClass.toFunLike.{0, 0, 0} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) Complex Complex (NonUnitalNonAssocSemiring.toMul.{0} Complex (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)))) (NonUnitalNonAssocSemiring.toMul.{0} Complex (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)))) (NonUnitalRingHomClass.toMulHomClass.{0, 0, 0} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) Complex Complex (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) (RingHomClass.toNonUnitalRingHomClass.{0, 0, 0} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (RingHom.instRingHomClassRingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)))))) (starRingEnd.{0} Complex Complex.instCommSemiringComplex Complex.instStarRingComplexToNonUnitalSemiringToNonUnitalCommSemiringToNonUnitalCommRingCommRing) (Complex.log x)))
 Case conversion may be inaccurate. Consider using '#align complex.log_conj_eq_ite Complex.log_conj_eq_iteβ‚“'. -/
 theorem log_conj_eq_ite (x : β„‚) : log (conj x) = if x.arg = Ο€ then log x else conj (log x) :=
   by
@@ -225,7 +225,7 @@ theorem log_conj_eq_ite (x : β„‚) : log (conj x) = if x.arg = Ο€ then log x else
 lean 3 declaration is
   forall (x : Complex), (Ne.{1} Real (Complex.arg x) Real.pi) -> (Eq.{1} Complex (Complex.log (coeFn.{1, 1} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring))) (fun (_x : RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring))) => Complex -> Complex) (RingHom.hasCoeToFun.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring))) (starRingEnd.{0} Complex Complex.commSemiring Complex.starRing) x)) (coeFn.{1, 1} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring))) (fun (_x : RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring))) => Complex -> Complex) (RingHom.hasCoeToFun.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring))) (starRingEnd.{0} Complex Complex.commSemiring Complex.starRing) (Complex.log x)))
 but is expected to have type
-  forall (x : Complex), (Ne.{1} Real (Complex.arg x) Real.pi) -> (Eq.{1} Complex (Complex.log (FunLike.coe.{1, 1, 1} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) Complex (fun (_x : Complex) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Complex) => Complex) _x) (MulHomClass.toFunLike.{0, 0, 0} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) Complex Complex (NonUnitalNonAssocSemiring.toMul.{0} Complex (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)))) (NonUnitalNonAssocSemiring.toMul.{0} Complex (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)))) (NonUnitalRingHomClass.toMulHomClass.{0, 0, 0} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) Complex Complex (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) (RingHomClass.toNonUnitalRingHomClass.{0, 0, 0} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (RingHom.instRingHomClassRingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)))))) (starRingEnd.{0} Complex Complex.instCommSemiringComplex Complex.instStarRingComplexToNonUnitalSemiringToNonUnitalCommSemiringToNonUnitalCommRingCommRing) x)) (FunLike.coe.{1, 1, 1} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) Complex (fun (_x : Complex) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Complex) => Complex) _x) (MulHomClass.toFunLike.{0, 0, 0} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) Complex Complex (NonUnitalNonAssocSemiring.toMul.{0} Complex (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)))) (NonUnitalNonAssocSemiring.toMul.{0} Complex (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)))) (NonUnitalRingHomClass.toMulHomClass.{0, 0, 0} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) Complex Complex (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) (RingHomClass.toNonUnitalRingHomClass.{0, 0, 0} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (RingHom.instRingHomClassRingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)))))) (starRingEnd.{0} Complex Complex.instCommSemiringComplex Complex.instStarRingComplexToNonUnitalSemiringToNonUnitalCommSemiringToNonUnitalCommRingCommRing) (Complex.log x)))
+  forall (x : Complex), (Ne.{1} Real (Complex.arg x) Real.pi) -> (Eq.{1} Complex (Complex.log (FunLike.coe.{1, 1, 1} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) Complex (fun (_x : Complex) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Complex) => Complex) _x) (MulHomClass.toFunLike.{0, 0, 0} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) Complex Complex (NonUnitalNonAssocSemiring.toMul.{0} Complex (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)))) (NonUnitalNonAssocSemiring.toMul.{0} Complex (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)))) (NonUnitalRingHomClass.toMulHomClass.{0, 0, 0} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) Complex Complex (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) (RingHomClass.toNonUnitalRingHomClass.{0, 0, 0} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (RingHom.instRingHomClassRingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)))))) (starRingEnd.{0} Complex Complex.instCommSemiringComplex Complex.instStarRingComplexToNonUnitalSemiringToNonUnitalCommSemiringToNonUnitalCommRingCommRing) x)) (FunLike.coe.{1, 1, 1} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) Complex (fun (_x : Complex) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Complex) => Complex) _x) (MulHomClass.toFunLike.{0, 0, 0} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) Complex Complex (NonUnitalNonAssocSemiring.toMul.{0} Complex (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)))) (NonUnitalNonAssocSemiring.toMul.{0} Complex (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)))) (NonUnitalRingHomClass.toMulHomClass.{0, 0, 0} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) Complex Complex (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) (RingHomClass.toNonUnitalRingHomClass.{0, 0, 0} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (RingHom.instRingHomClassRingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)))))) (starRingEnd.{0} Complex Complex.instCommSemiringComplex Complex.instStarRingComplexToNonUnitalSemiringToNonUnitalCommSemiringToNonUnitalCommRingCommRing) (Complex.log x)))
 Case conversion may be inaccurate. Consider using '#align complex.log_conj Complex.log_conjβ‚“'. -/
 theorem log_conj (x : β„‚) (h : x.arg β‰  Ο€) : log (conj x) = conj (log x) := by
   rw [log_conj_eq_ite, if_neg h]
@@ -235,7 +235,7 @@ theorem log_conj (x : β„‚) (h : x.arg β‰  Ο€) : log (conj x) = conj (log x) := b
 lean 3 declaration is
   forall (x : Complex), Eq.{1} Complex (Complex.log (Inv.inv.{0} Complex Complex.hasInv x)) (ite.{1} Complex (Eq.{1} Real (Complex.arg x) Real.pi) (Real.decidableEq (Complex.arg x) Real.pi) (Neg.neg.{0} Complex Complex.hasNeg (coeFn.{1, 1} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring))) (fun (_x : RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring))) => Complex -> Complex) (RingHom.hasCoeToFun.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring))) (starRingEnd.{0} Complex Complex.commSemiring Complex.starRing) (Complex.log x))) (Neg.neg.{0} Complex Complex.hasNeg (Complex.log x)))
 but is expected to have type
-  forall (x : Complex), Eq.{1} Complex (Complex.log (Inv.inv.{0} Complex Complex.instInvComplex x)) (ite.{1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Complex) => Complex) (Complex.log x)) (Eq.{1} Real (Complex.arg x) Real.pi) (Real.decidableEq (Complex.arg x) Real.pi) (Neg.neg.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Complex) => Complex) (Complex.log x)) Complex.instNegComplex (FunLike.coe.{1, 1, 1} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) Complex (fun (_x : Complex) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Complex) => Complex) _x) (MulHomClass.toFunLike.{0, 0, 0} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) Complex Complex (NonUnitalNonAssocSemiring.toMul.{0} Complex (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)))) (NonUnitalNonAssocSemiring.toMul.{0} Complex (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)))) (NonUnitalRingHomClass.toMulHomClass.{0, 0, 0} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) Complex Complex (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) (RingHomClass.toNonUnitalRingHomClass.{0, 0, 0} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (RingHom.instRingHomClassRingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)))))) (starRingEnd.{0} Complex Complex.instCommSemiringComplex Complex.instStarRingComplexToNonUnitalSemiringToNonUnitalCommSemiringToNonUnitalCommRingCommRing) (Complex.log x))) (Neg.neg.{0} Complex Complex.instNegComplex (Complex.log x)))
+  forall (x : Complex), Eq.{1} Complex (Complex.log (Inv.inv.{0} Complex Complex.instInvComplex x)) (ite.{1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Complex) => Complex) (Complex.log x)) (Eq.{1} Real (Complex.arg x) Real.pi) (Real.decidableEq (Complex.arg x) Real.pi) (Neg.neg.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Complex) => Complex) (Complex.log x)) Complex.instNegComplex (FunLike.coe.{1, 1, 1} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) Complex (fun (_x : Complex) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Complex) => Complex) _x) (MulHomClass.toFunLike.{0, 0, 0} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) Complex Complex (NonUnitalNonAssocSemiring.toMul.{0} Complex (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)))) (NonUnitalNonAssocSemiring.toMul.{0} Complex (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)))) (NonUnitalRingHomClass.toMulHomClass.{0, 0, 0} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) Complex Complex (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) (RingHomClass.toNonUnitalRingHomClass.{0, 0, 0} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (RingHom.instRingHomClassRingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)))))) (starRingEnd.{0} Complex Complex.instCommSemiringComplex Complex.instStarRingComplexToNonUnitalSemiringToNonUnitalCommSemiringToNonUnitalCommRingCommRing) (Complex.log x))) (Neg.neg.{0} Complex Complex.instNegComplex (Complex.log x)))
 Case conversion may be inaccurate. Consider using '#align complex.log_inv_eq_ite Complex.log_inv_eq_iteβ‚“'. -/
 theorem log_inv_eq_ite (x : β„‚) : log x⁻¹ = if x.arg = Ο€ then -conj (log x) else -log x :=
   by
Diff
@@ -26,25 +26,53 @@ open Set Filter
 
 open Real Topology ComplexConjugate
 
+#print Complex.log /-
 /-- Inverse of the `exp` function. Returns values such that `(log x).im > - Ο€` and `(log x).im ≀ Ο€`.
   `log 0 = 0`-/
 @[pp_nodot]
 noncomputable def log (x : β„‚) : β„‚ :=
   x.abs.log + arg x * I
 #align complex.log Complex.log
+-/
 
+/- warning: complex.log_re -> Complex.log_re is a dubious translation:
+lean 3 declaration is
+  forall (x : Complex), Eq.{1} Real (Complex.re (Complex.log x)) (Real.log (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 x))
+but is expected to have type
+  forall (x : Complex), Eq.{1} Real (Complex.re (Complex.log x)) (Real.log (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 x))
+Case conversion may be inaccurate. Consider using '#align complex.log_re Complex.log_reβ‚“'. -/
 theorem log_re (x : β„‚) : x.log.re = x.abs.log := by simp [log]
 #align complex.log_re Complex.log_re
 
+#print Complex.log_im /-
 theorem log_im (x : β„‚) : x.log.im = x.arg := by simp [log]
 #align complex.log_im Complex.log_im
+-/
 
+/- warning: complex.neg_pi_lt_log_im -> Complex.neg_pi_lt_log_im is a dubious translation:
+lean 3 declaration is
+  forall (x : Complex), LT.lt.{0} Real Real.hasLt (Neg.neg.{0} Real Real.hasNeg Real.pi) (Complex.im (Complex.log x))
+but is expected to have type
+  forall (x : Complex), LT.lt.{0} Real Real.instLTReal (Neg.neg.{0} Real Real.instNegReal Real.pi) (Complex.im (Complex.log x))
+Case conversion may be inaccurate. Consider using '#align complex.neg_pi_lt_log_im Complex.neg_pi_lt_log_imβ‚“'. -/
 theorem neg_pi_lt_log_im (x : β„‚) : -Ο€ < (log x).im := by simp only [log_im, neg_pi_lt_arg]
 #align complex.neg_pi_lt_log_im Complex.neg_pi_lt_log_im
 
+/- warning: complex.log_im_le_pi -> Complex.log_im_le_pi is a dubious translation:
+lean 3 declaration is
+  forall (x : Complex), LE.le.{0} Real Real.hasLe (Complex.im (Complex.log x)) Real.pi
+but is expected to have type
+  forall (x : Complex), LE.le.{0} Real Real.instLEReal (Complex.im (Complex.log x)) Real.pi
+Case conversion may be inaccurate. Consider using '#align complex.log_im_le_pi Complex.log_im_le_piβ‚“'. -/
 theorem log_im_le_pi (x : β„‚) : (log x).im ≀ Ο€ := by simp only [log_im, arg_le_pi]
 #align complex.log_im_le_pi Complex.log_im_le_pi
 
+/- warning: complex.exp_log -> Complex.exp_log is a dubious translation:
+lean 3 declaration is
+  forall {x : Complex}, (Ne.{1} Complex x (OfNat.ofNat.{0} Complex 0 (OfNat.mk.{0} Complex 0 (Zero.zero.{0} Complex Complex.hasZero)))) -> (Eq.{1} Complex (Complex.exp (Complex.log x)) x)
+but is expected to have type
+  forall {x : Complex}, (Ne.{1} Complex x (OfNat.ofNat.{0} Complex 0 (Zero.toOfNat0.{0} Complex Complex.instZeroComplex))) -> (Eq.{1} Complex (Complex.exp (Complex.log x)) x)
+Case conversion may be inaccurate. Consider using '#align complex.exp_log Complex.exp_logβ‚“'. -/
 theorem exp_log {x : β„‚} (hx : x β‰  0) : exp (log x) = x := by
   rw [log, exp_add_mul_I, ← of_real_sin, sin_arg, ← of_real_cos, cos_arg hx, ← of_real_exp,
     Real.exp_log (abs.pos hx), mul_add, of_real_div, of_real_div,
@@ -52,6 +80,12 @@ theorem exp_log {x : β„‚} (hx : x β‰  0) : exp (log x) = x := by
     mul_div_cancel' _ (of_real_ne_zero.2 <| abs.ne_zero hx), re_add_im]
 #align complex.exp_log Complex.exp_log
 
+/- warning: complex.range_exp -> Complex.range_exp is a dubious translation:
+lean 3 declaration is
+  Eq.{1} (Set.{0} Complex) (Set.range.{0, 1} Complex Complex Complex.exp) (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
+  Eq.{1} (Set.{0} Complex) (Set.range.{0, 1} Complex Complex Complex.exp) (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.range_exp Complex.range_expβ‚“'. -/
 @[simp]
 theorem range_exp : range exp = {0}ᢜ :=
   Set.ext fun x =>
@@ -60,24 +94,54 @@ theorem range_exp : range exp = {0}ᢜ :=
       exact exp_ne_zero x, fun hx => ⟨log x, exp_log hx⟩⟩
 #align complex.range_exp Complex.range_exp
 
+/- warning: complex.log_exp -> Complex.log_exp is a dubious translation:
+lean 3 declaration is
+  forall {x : Complex}, (LT.lt.{0} Real Real.hasLt (Neg.neg.{0} Real Real.hasNeg Real.pi) (Complex.im x)) -> (LE.le.{0} Real Real.hasLe (Complex.im x) Real.pi) -> (Eq.{1} Complex (Complex.log (Complex.exp x)) x)
+but is expected to have type
+  forall {x : Complex}, (LT.lt.{0} Real Real.instLTReal (Neg.neg.{0} Real Real.instNegReal Real.pi) (Complex.im x)) -> (LE.le.{0} Real Real.instLEReal (Complex.im x) Real.pi) -> (Eq.{1} Complex (Complex.log (Complex.exp x)) x)
+Case conversion may be inaccurate. Consider using '#align complex.log_exp Complex.log_expβ‚“'. -/
 theorem log_exp {x : β„‚} (hx₁ : -Ο€ < x.im) (hxβ‚‚ : x.im ≀ Ο€) : log (exp x) = x := by
   rw [log, abs_exp, Real.log_exp, exp_eq_exp_re_mul_sin_add_cos, ← of_real_exp,
     arg_mul_cos_add_sin_mul_I (Real.exp_pos _) ⟨hx₁, hxβ‚‚βŸ©, re_add_im]
 #align complex.log_exp Complex.log_exp
 
+/- warning: complex.exp_inj_of_neg_pi_lt_of_le_pi -> Complex.exp_inj_of_neg_pi_lt_of_le_pi is a dubious translation:
+lean 3 declaration is
+  forall {x : Complex} {y : Complex}, (LT.lt.{0} Real Real.hasLt (Neg.neg.{0} Real Real.hasNeg Real.pi) (Complex.im x)) -> (LE.le.{0} Real Real.hasLe (Complex.im x) Real.pi) -> (LT.lt.{0} Real Real.hasLt (Neg.neg.{0} Real Real.hasNeg Real.pi) (Complex.im y)) -> (LE.le.{0} Real Real.hasLe (Complex.im y) Real.pi) -> (Eq.{1} Complex (Complex.exp x) (Complex.exp y)) -> (Eq.{1} Complex x y)
+but is expected to have type
+  forall {x : Complex} {y : Complex}, (LT.lt.{0} Real Real.instLTReal (Neg.neg.{0} Real Real.instNegReal Real.pi) (Complex.im x)) -> (LE.le.{0} Real Real.instLEReal (Complex.im x) Real.pi) -> (LT.lt.{0} Real Real.instLTReal (Neg.neg.{0} Real Real.instNegReal Real.pi) (Complex.im y)) -> (LE.le.{0} Real Real.instLEReal (Complex.im y) Real.pi) -> (Eq.{1} Complex (Complex.exp x) (Complex.exp y)) -> (Eq.{1} Complex x y)
+Case conversion may be inaccurate. Consider using '#align complex.exp_inj_of_neg_pi_lt_of_le_pi Complex.exp_inj_of_neg_pi_lt_of_le_piβ‚“'. -/
 theorem exp_inj_of_neg_pi_lt_of_le_pi {x y : β„‚} (hx₁ : -Ο€ < x.im) (hxβ‚‚ : x.im ≀ Ο€) (hy₁ : -Ο€ < y.im)
     (hyβ‚‚ : y.im ≀ Ο€) (hxy : exp x = exp y) : x = y := by
   rw [← log_exp hx₁ hxβ‚‚, ← log_exp hy₁ hyβ‚‚, hxy]
 #align complex.exp_inj_of_neg_pi_lt_of_le_pi Complex.exp_inj_of_neg_pi_lt_of_le_pi
 
+/- warning: complex.of_real_log -> Complex.of_real_log is a dubious translation:
+lean 3 declaration is
+  forall {x : Real}, (LE.le.{0} Real Real.hasLe (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) x) -> (Eq.{1} Complex ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real Complex (HasLiftT.mk.{1, 1} Real Complex (CoeTCβ‚“.coe.{1, 1} Real Complex (coeBase.{1, 1} Real Complex Complex.hasCoe))) (Real.log x)) (Complex.log ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real Complex (HasLiftT.mk.{1, 1} Real Complex (CoeTCβ‚“.coe.{1, 1} Real Complex (coeBase.{1, 1} Real Complex Complex.hasCoe))) x)))
+but is expected to have type
+  forall {x : Real}, (LE.le.{0} Real Real.instLEReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) x) -> (Eq.{1} Complex (Complex.ofReal' (Real.log x)) (Complex.log (Complex.ofReal' x)))
+Case conversion may be inaccurate. Consider using '#align complex.of_real_log Complex.of_real_logβ‚“'. -/
 theorem of_real_log {x : ℝ} (hx : 0 ≀ x) : (x.log : β„‚) = log x :=
   Complex.ext (by rw [log_re, of_real_re, abs_of_nonneg hx])
     (by rw [of_real_im, log_im, arg_of_real_of_nonneg hx])
 #align complex.of_real_log Complex.of_real_log
 
+/- warning: complex.log_of_real_re -> Complex.log_of_real_re is a dubious translation:
+lean 3 declaration is
+  forall (x : Real), Eq.{1} Real (Complex.re (Complex.log ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real Complex (HasLiftT.mk.{1, 1} Real Complex (CoeTCβ‚“.coe.{1, 1} Real Complex (coeBase.{1, 1} Real Complex Complex.hasCoe))) x))) (Real.log x)
+but is expected to have type
+  forall (x : Real), Eq.{1} Real (Complex.re (Complex.log (Complex.ofReal' x))) (Real.log x)
+Case conversion may be inaccurate. Consider using '#align complex.log_of_real_re Complex.log_of_real_reβ‚“'. -/
 theorem log_of_real_re (x : ℝ) : (log (x : β„‚)).re = Real.log x := by simp [log_re]
 #align complex.log_of_real_re Complex.log_of_real_re
 
+/- warning: complex.log_of_real_mul -> Complex.log_of_real_mul is a dubious translation:
+lean 3 declaration is
+  forall {r : Real}, (LT.lt.{0} Real Real.hasLt (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) r) -> (forall {x : Complex}, (Ne.{1} Complex x (OfNat.ofNat.{0} Complex 0 (OfNat.mk.{0} Complex 0 (Zero.zero.{0} Complex Complex.hasZero)))) -> (Eq.{1} Complex (Complex.log (HMul.hMul.{0, 0, 0} Complex Complex Complex (instHMul.{0} Complex Complex.hasMul) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real Complex (HasLiftT.mk.{1, 1} Real Complex (CoeTCβ‚“.coe.{1, 1} Real Complex (coeBase.{1, 1} Real Complex Complex.hasCoe))) r) x)) (HAdd.hAdd.{0, 0, 0} Complex Complex Complex (instHAdd.{0} Complex Complex.hasAdd) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real Complex (HasLiftT.mk.{1, 1} Real Complex (CoeTCβ‚“.coe.{1, 1} Real Complex (coeBase.{1, 1} Real Complex Complex.hasCoe))) (Real.log r)) (Complex.log x))))
+but is expected to have type
+  forall {r : Real}, (LT.lt.{0} Real Real.instLTReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) r) -> (forall {x : Complex}, (Ne.{1} Complex x (OfNat.ofNat.{0} Complex 0 (Zero.toOfNat0.{0} Complex Complex.instZeroComplex))) -> (Eq.{1} Complex (Complex.log (HMul.hMul.{0, 0, 0} Complex Complex Complex (instHMul.{0} Complex Complex.instMulComplex) (Complex.ofReal' r) x)) (HAdd.hAdd.{0, 0, 0} Complex Complex Complex (instHAdd.{0} Complex Complex.instAddComplex) (Complex.ofReal' (Real.log r)) (Complex.log x))))
+Case conversion may be inaccurate. Consider using '#align complex.log_of_real_mul Complex.log_of_real_mulβ‚“'. -/
 theorem log_of_real_mul {r : ℝ} (hr : 0 < r) {x : β„‚} (hx : x β‰  0) :
     log (r * x) = Real.log r + log x :=
   by
@@ -86,27 +150,69 @@ theorem log_of_real_mul {r : ℝ} (hr : 0 < r) {x : β„‚} (hx : x β‰  0) :
     of_real_add, add_assoc]
 #align complex.log_of_real_mul Complex.log_of_real_mul
 
+/- warning: complex.log_mul_of_real -> Complex.log_mul_of_real is a dubious translation:
+lean 3 declaration is
+  forall (r : Real), (LT.lt.{0} Real Real.hasLt (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) r) -> (forall (x : Complex), (Ne.{1} Complex x (OfNat.ofNat.{0} Complex 0 (OfNat.mk.{0} Complex 0 (Zero.zero.{0} Complex Complex.hasZero)))) -> (Eq.{1} Complex (Complex.log (HMul.hMul.{0, 0, 0} Complex Complex Complex (instHMul.{0} Complex Complex.hasMul) x ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real Complex (HasLiftT.mk.{1, 1} Real Complex (CoeTCβ‚“.coe.{1, 1} Real Complex (coeBase.{1, 1} Real Complex Complex.hasCoe))) r))) (HAdd.hAdd.{0, 0, 0} Complex Complex Complex (instHAdd.{0} Complex Complex.hasAdd) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real Complex (HasLiftT.mk.{1, 1} Real Complex (CoeTCβ‚“.coe.{1, 1} Real Complex (coeBase.{1, 1} Real Complex Complex.hasCoe))) (Real.log r)) (Complex.log x))))
+but is expected to have type
+  forall (r : Real), (LT.lt.{0} Real Real.instLTReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) r) -> (forall (x : Complex), (Ne.{1} Complex x (OfNat.ofNat.{0} Complex 0 (Zero.toOfNat0.{0} Complex Complex.instZeroComplex))) -> (Eq.{1} Complex (Complex.log (HMul.hMul.{0, 0, 0} Complex Complex Complex (instHMul.{0} Complex Complex.instMulComplex) x (Complex.ofReal' r))) (HAdd.hAdd.{0, 0, 0} Complex Complex Complex (instHAdd.{0} Complex Complex.instAddComplex) (Complex.ofReal' (Real.log r)) (Complex.log x))))
+Case conversion may be inaccurate. Consider using '#align complex.log_mul_of_real Complex.log_mul_of_realβ‚“'. -/
 theorem log_mul_of_real (r : ℝ) (hr : 0 < r) (x : β„‚) (hx : x β‰  0) :
     log (x * r) = Real.log r + log x := by rw [mul_comm, log_of_real_mul hr hx, add_comm]
 #align complex.log_mul_of_real Complex.log_mul_of_real
 
+/- warning: complex.log_zero -> Complex.log_zero is a dubious translation:
+lean 3 declaration is
+  Eq.{1} Complex (Complex.log (OfNat.ofNat.{0} Complex 0 (OfNat.mk.{0} Complex 0 (Zero.zero.{0} Complex Complex.hasZero)))) (OfNat.ofNat.{0} Complex 0 (OfNat.mk.{0} Complex 0 (Zero.zero.{0} Complex Complex.hasZero)))
+but is expected to have type
+  Eq.{1} Complex (Complex.log (OfNat.ofNat.{0} Complex 0 (Zero.toOfNat0.{0} Complex Complex.instZeroComplex))) (OfNat.ofNat.{0} Complex 0 (Zero.toOfNat0.{0} Complex Complex.instZeroComplex))
+Case conversion may be inaccurate. Consider using '#align complex.log_zero Complex.log_zeroβ‚“'. -/
 @[simp]
 theorem log_zero : log 0 = 0 := by simp [log]
 #align complex.log_zero Complex.log_zero
 
+/- warning: complex.log_one -> Complex.log_one is a dubious translation:
+lean 3 declaration is
+  Eq.{1} Complex (Complex.log (OfNat.ofNat.{0} Complex 1 (OfNat.mk.{0} Complex 1 (One.one.{0} Complex Complex.hasOne)))) (OfNat.ofNat.{0} Complex 0 (OfNat.mk.{0} Complex 0 (Zero.zero.{0} Complex Complex.hasZero)))
+but is expected to have type
+  Eq.{1} Complex (Complex.log (OfNat.ofNat.{0} Complex 1 (One.toOfNat1.{0} Complex Complex.instOneComplex))) (OfNat.ofNat.{0} Complex 0 (Zero.toOfNat0.{0} Complex Complex.instZeroComplex))
+Case conversion may be inaccurate. Consider using '#align complex.log_one Complex.log_oneβ‚“'. -/
 @[simp]
 theorem log_one : log 1 = 0 := by simp [log]
 #align complex.log_one Complex.log_one
 
+/- warning: complex.log_neg_one -> Complex.log_neg_one is a dubious translation:
+lean 3 declaration is
+  Eq.{1} Complex (Complex.log (Neg.neg.{0} Complex Complex.hasNeg (OfNat.ofNat.{0} Complex 1 (OfNat.mk.{0} Complex 1 (One.one.{0} Complex Complex.hasOne))))) (HMul.hMul.{0, 0, 0} Complex Complex Complex (instHMul.{0} Complex Complex.hasMul) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real Complex (HasLiftT.mk.{1, 1} Real Complex (CoeTCβ‚“.coe.{1, 1} Real Complex (coeBase.{1, 1} Real Complex Complex.hasCoe))) Real.pi) Complex.I)
+but is expected to have type
+  Eq.{1} Complex (Complex.log (Neg.neg.{0} Complex Complex.instNegComplex (OfNat.ofNat.{0} Complex 1 (One.toOfNat1.{0} Complex Complex.instOneComplex)))) (HMul.hMul.{0, 0, 0} Complex Complex Complex (instHMul.{0} Complex Complex.instMulComplex) (Complex.ofReal' Real.pi) Complex.I)
+Case conversion may be inaccurate. Consider using '#align complex.log_neg_one Complex.log_neg_oneβ‚“'. -/
 theorem log_neg_one : log (-1) = Ο€ * I := by simp [log]
 #align complex.log_neg_one Complex.log_neg_one
 
-theorem log_i : log I = Ο€ / 2 * I := by simp [log]
-#align complex.log_I Complex.log_i
-
-theorem log_neg_i : log (-I) = -(Ο€ / 2) * I := by simp [log]
-#align complex.log_neg_I Complex.log_neg_i
-
+/- warning: complex.log_I -> Complex.log_I is a dubious translation:
+lean 3 declaration is
+  Eq.{1} Complex (Complex.log Complex.I) (HMul.hMul.{0, 0, 0} Complex Complex Complex (instHMul.{0} Complex Complex.hasMul) (HDiv.hDiv.{0, 0, 0} Complex Complex Complex (instHDiv.{0} Complex (DivInvMonoid.toHasDiv.{0} Complex (DivisionRing.toDivInvMonoid.{0} Complex (NormedDivisionRing.toDivisionRing.{0} Complex (NormedField.toNormedDivisionRing.{0} Complex Complex.normedField))))) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real Complex (HasLiftT.mk.{1, 1} Real Complex (CoeTCβ‚“.coe.{1, 1} Real Complex (coeBase.{1, 1} Real Complex Complex.hasCoe))) Real.pi) (OfNat.ofNat.{0} Complex 2 (OfNat.mk.{0} Complex 2 (bit0.{0} Complex Complex.hasAdd (One.one.{0} Complex Complex.hasOne))))) Complex.I)
+but is expected to have type
+  Eq.{1} Complex (Complex.log Complex.I) (HMul.hMul.{0, 0, 0} Complex Complex Complex (instHMul.{0} Complex Complex.instMulComplex) (HDiv.hDiv.{0, 0, 0} Complex Complex Complex (instHDiv.{0} Complex (Field.toDiv.{0} Complex Complex.instFieldComplex)) (Complex.ofReal' Real.pi) (OfNat.ofNat.{0} Complex 2 (instOfNat.{0} Complex 2 (Semiring.toNatCast.{0} Complex Complex.instSemiringComplex) (instAtLeastTwoHAddNatInstHAddInstAddNatOfNat (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0)))))) Complex.I)
+Case conversion may be inaccurate. Consider using '#align complex.log_I Complex.log_Iβ‚“'. -/
+theorem log_I : log I = Ο€ / 2 * I := by simp [log]
+#align complex.log_I Complex.log_I
+
+/- warning: complex.log_neg_I -> Complex.log_neg_I is a dubious translation:
+lean 3 declaration is
+  Eq.{1} Complex (Complex.log (Neg.neg.{0} Complex Complex.hasNeg Complex.I)) (HMul.hMul.{0, 0, 0} Complex Complex Complex (instHMul.{0} Complex Complex.hasMul) (Neg.neg.{0} Complex Complex.hasNeg (HDiv.hDiv.{0, 0, 0} Complex Complex Complex (instHDiv.{0} Complex (DivInvMonoid.toHasDiv.{0} Complex (DivisionRing.toDivInvMonoid.{0} Complex (NormedDivisionRing.toDivisionRing.{0} Complex (NormedField.toNormedDivisionRing.{0} Complex Complex.normedField))))) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real Complex (HasLiftT.mk.{1, 1} Real Complex (CoeTCβ‚“.coe.{1, 1} Real Complex (coeBase.{1, 1} Real Complex Complex.hasCoe))) Real.pi) (OfNat.ofNat.{0} Complex 2 (OfNat.mk.{0} Complex 2 (bit0.{0} Complex Complex.hasAdd (One.one.{0} Complex Complex.hasOne)))))) Complex.I)
+but is expected to have type
+  Eq.{1} Complex (Complex.log (Neg.neg.{0} Complex Complex.instNegComplex Complex.I)) (HMul.hMul.{0, 0, 0} Complex Complex Complex (instHMul.{0} Complex Complex.instMulComplex) (Neg.neg.{0} Complex Complex.instNegComplex (HDiv.hDiv.{0, 0, 0} Complex Complex Complex (instHDiv.{0} Complex (Field.toDiv.{0} Complex Complex.instFieldComplex)) (Complex.ofReal' Real.pi) (OfNat.ofNat.{0} Complex 2 (instOfNat.{0} Complex 2 (Semiring.toNatCast.{0} Complex Complex.instSemiringComplex) (instAtLeastTwoHAddNatInstHAddInstAddNatOfNat (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0))))))) Complex.I)
+Case conversion may be inaccurate. Consider using '#align complex.log_neg_I Complex.log_neg_Iβ‚“'. -/
+theorem log_neg_I : log (-I) = -(Ο€ / 2) * I := by simp [log]
+#align complex.log_neg_I Complex.log_neg_I
+
+/- warning: complex.log_conj_eq_ite -> Complex.log_conj_eq_ite is a dubious translation:
+lean 3 declaration is
+  forall (x : Complex), Eq.{1} Complex (Complex.log (coeFn.{1, 1} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring))) (fun (_x : RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring))) => Complex -> Complex) (RingHom.hasCoeToFun.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring))) (starRingEnd.{0} Complex Complex.commSemiring Complex.starRing) x)) (ite.{1} Complex (Eq.{1} Real (Complex.arg x) Real.pi) (Real.decidableEq (Complex.arg x) Real.pi) (Complex.log x) (coeFn.{1, 1} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring))) (fun (_x : RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring))) => Complex -> Complex) (RingHom.hasCoeToFun.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring))) (starRingEnd.{0} Complex Complex.commSemiring Complex.starRing) (Complex.log x)))
+but is expected to have type
+  forall (x : Complex), Eq.{1} Complex (Complex.log (FunLike.coe.{1, 1, 1} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) Complex (fun (_x : Complex) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Complex) => Complex) _x) (MulHomClass.toFunLike.{0, 0, 0} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) Complex Complex (NonUnitalNonAssocSemiring.toMul.{0} Complex (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)))) (NonUnitalNonAssocSemiring.toMul.{0} Complex (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)))) (NonUnitalRingHomClass.toMulHomClass.{0, 0, 0} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) Complex Complex (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) (RingHomClass.toNonUnitalRingHomClass.{0, 0, 0} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (RingHom.instRingHomClassRingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)))))) (starRingEnd.{0} Complex Complex.instCommSemiringComplex Complex.instStarRingComplexToNonUnitalSemiringToNonUnitalCommSemiringToNonUnitalCommRingCommRing) x)) (ite.{1} Complex (Eq.{1} Real (Complex.arg x) Real.pi) (Real.decidableEq (Complex.arg x) Real.pi) (Complex.log x) (FunLike.coe.{1, 1, 1} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) Complex (fun (_x : Complex) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Complex) => Complex) _x) (MulHomClass.toFunLike.{0, 0, 0} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) Complex Complex (NonUnitalNonAssocSemiring.toMul.{0} Complex (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)))) (NonUnitalNonAssocSemiring.toMul.{0} Complex (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)))) (NonUnitalRingHomClass.toMulHomClass.{0, 0, 0} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) Complex Complex (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) (RingHomClass.toNonUnitalRingHomClass.{0, 0, 0} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (RingHom.instRingHomClassRingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)))))) (starRingEnd.{0} Complex Complex.instCommSemiringComplex Complex.instStarRingComplexToNonUnitalSemiringToNonUnitalCommSemiringToNonUnitalCommRingCommRing) (Complex.log x)))
+Case conversion may be inaccurate. Consider using '#align complex.log_conj_eq_ite Complex.log_conj_eq_iteβ‚“'. -/
 theorem log_conj_eq_ite (x : β„‚) : log (conj x) = if x.arg = Ο€ then log x else conj (log x) :=
   by
   simp_rw [log, abs_conj, arg_conj, map_add, map_mul, conj_of_real]
@@ -115,10 +221,22 @@ theorem log_conj_eq_ite (x : β„‚) : log (conj x) = if x.arg = Ο€ then log x else
   simp_rw [of_real_neg, conj_I, mul_neg, neg_mul]
 #align complex.log_conj_eq_ite Complex.log_conj_eq_ite
 
+/- warning: complex.log_conj -> Complex.log_conj is a dubious translation:
+lean 3 declaration is
+  forall (x : Complex), (Ne.{1} Real (Complex.arg x) Real.pi) -> (Eq.{1} Complex (Complex.log (coeFn.{1, 1} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring))) (fun (_x : RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring))) => Complex -> Complex) (RingHom.hasCoeToFun.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring))) (starRingEnd.{0} Complex Complex.commSemiring Complex.starRing) x)) (coeFn.{1, 1} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring))) (fun (_x : RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring))) => Complex -> Complex) (RingHom.hasCoeToFun.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring))) (starRingEnd.{0} Complex Complex.commSemiring Complex.starRing) (Complex.log x)))
+but is expected to have type
+  forall (x : Complex), (Ne.{1} Real (Complex.arg x) Real.pi) -> (Eq.{1} Complex (Complex.log (FunLike.coe.{1, 1, 1} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) Complex (fun (_x : Complex) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Complex) => Complex) _x) (MulHomClass.toFunLike.{0, 0, 0} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) Complex Complex (NonUnitalNonAssocSemiring.toMul.{0} Complex (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)))) (NonUnitalNonAssocSemiring.toMul.{0} Complex (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)))) (NonUnitalRingHomClass.toMulHomClass.{0, 0, 0} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) Complex Complex (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) (RingHomClass.toNonUnitalRingHomClass.{0, 0, 0} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (RingHom.instRingHomClassRingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)))))) (starRingEnd.{0} Complex Complex.instCommSemiringComplex Complex.instStarRingComplexToNonUnitalSemiringToNonUnitalCommSemiringToNonUnitalCommRingCommRing) x)) (FunLike.coe.{1, 1, 1} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) Complex (fun (_x : Complex) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Complex) => Complex) _x) (MulHomClass.toFunLike.{0, 0, 0} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) Complex Complex (NonUnitalNonAssocSemiring.toMul.{0} Complex (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)))) (NonUnitalNonAssocSemiring.toMul.{0} Complex (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)))) (NonUnitalRingHomClass.toMulHomClass.{0, 0, 0} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) Complex Complex (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) (RingHomClass.toNonUnitalRingHomClass.{0, 0, 0} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (RingHom.instRingHomClassRingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)))))) (starRingEnd.{0} Complex Complex.instCommSemiringComplex Complex.instStarRingComplexToNonUnitalSemiringToNonUnitalCommSemiringToNonUnitalCommRingCommRing) (Complex.log x)))
+Case conversion may be inaccurate. Consider using '#align complex.log_conj Complex.log_conjβ‚“'. -/
 theorem log_conj (x : β„‚) (h : x.arg β‰  Ο€) : log (conj x) = conj (log x) := by
   rw [log_conj_eq_ite, if_neg h]
 #align complex.log_conj Complex.log_conj
 
+/- warning: complex.log_inv_eq_ite -> Complex.log_inv_eq_ite is a dubious translation:
+lean 3 declaration is
+  forall (x : Complex), Eq.{1} Complex (Complex.log (Inv.inv.{0} Complex Complex.hasInv x)) (ite.{1} Complex (Eq.{1} Real (Complex.arg x) Real.pi) (Real.decidableEq (Complex.arg x) Real.pi) (Neg.neg.{0} Complex Complex.hasNeg (coeFn.{1, 1} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring))) (fun (_x : RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring))) => Complex -> Complex) (RingHom.hasCoeToFun.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.commSemiring))) (starRingEnd.{0} Complex Complex.commSemiring Complex.starRing) (Complex.log x))) (Neg.neg.{0} Complex Complex.hasNeg (Complex.log x)))
+but is expected to have type
+  forall (x : Complex), Eq.{1} Complex (Complex.log (Inv.inv.{0} Complex Complex.instInvComplex x)) (ite.{1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Complex) => Complex) (Complex.log x)) (Eq.{1} Real (Complex.arg x) Real.pi) (Real.decidableEq (Complex.arg x) Real.pi) (Neg.neg.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Complex) => Complex) (Complex.log x)) Complex.instNegComplex (FunLike.coe.{1, 1, 1} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) Complex (fun (_x : Complex) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Complex) => Complex) _x) (MulHomClass.toFunLike.{0, 0, 0} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) Complex Complex (NonUnitalNonAssocSemiring.toMul.{0} Complex (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)))) (NonUnitalNonAssocSemiring.toMul.{0} Complex (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)))) (NonUnitalRingHomClass.toMulHomClass.{0, 0, 0} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) Complex Complex (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) (RingHomClass.toNonUnitalRingHomClass.{0, 0, 0} (RingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex))) Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (RingHom.instRingHomClassRingHom.{0, 0} Complex Complex (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)) (Semiring.toNonAssocSemiring.{0} Complex (CommSemiring.toSemiring.{0} Complex Complex.instCommSemiringComplex)))))) (starRingEnd.{0} Complex Complex.instCommSemiringComplex Complex.instStarRingComplexToNonUnitalSemiringToNonUnitalCommSemiringToNonUnitalCommRingCommRing) (Complex.log x))) (Neg.neg.{0} Complex Complex.instNegComplex (Complex.log x)))
+Case conversion may be inaccurate. Consider using '#align complex.log_inv_eq_ite Complex.log_inv_eq_iteβ‚“'. -/
 theorem log_inv_eq_ite (x : β„‚) : log x⁻¹ = if x.arg = Ο€ then -conj (log x) else -log x :=
   by
   by_cases hx : x = 0
@@ -133,12 +251,30 @@ theorem log_inv_eq_ite (x : β„‚) : log x⁻¹ = if x.arg = Ο€ then -conj (log x)
   Β· rwa [map_ne_zero]
 #align complex.log_inv_eq_ite Complex.log_inv_eq_ite
 
+/- warning: complex.log_inv -> Complex.log_inv is a dubious translation:
+lean 3 declaration is
+  forall (x : Complex), (Ne.{1} Real (Complex.arg x) Real.pi) -> (Eq.{1} Complex (Complex.log (Inv.inv.{0} Complex Complex.hasInv x)) (Neg.neg.{0} Complex Complex.hasNeg (Complex.log x)))
+but is expected to have type
+  forall (x : Complex), (Ne.{1} Real (Complex.arg x) Real.pi) -> (Eq.{1} Complex (Complex.log (Inv.inv.{0} Complex Complex.instInvComplex x)) (Neg.neg.{0} Complex Complex.instNegComplex (Complex.log x)))
+Case conversion may be inaccurate. Consider using '#align complex.log_inv Complex.log_invβ‚“'. -/
 theorem log_inv (x : β„‚) (hx : x.arg β‰  Ο€) : log x⁻¹ = -log x := by rw [log_inv_eq_ite, if_neg hx]
 #align complex.log_inv Complex.log_inv
 
-theorem two_pi_i_ne_zero : (2 * Ο€ * I : β„‚) β‰  0 := by norm_num [Real.pi_ne_zero, I_ne_zero]
-#align complex.two_pi_I_ne_zero Complex.two_pi_i_ne_zero
-
+/- warning: complex.two_pi_I_ne_zero -> Complex.two_pi_I_ne_zero is a dubious translation:
+lean 3 declaration is
+  Ne.{1} Complex (HMul.hMul.{0, 0, 0} Complex Complex Complex (instHMul.{0} Complex Complex.hasMul) (HMul.hMul.{0, 0, 0} Complex Complex Complex (instHMul.{0} Complex Complex.hasMul) (OfNat.ofNat.{0} Complex 2 (OfNat.mk.{0} Complex 2 (bit0.{0} Complex Complex.hasAdd (One.one.{0} Complex Complex.hasOne)))) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real Complex (HasLiftT.mk.{1, 1} Real Complex (CoeTCβ‚“.coe.{1, 1} Real Complex (coeBase.{1, 1} Real Complex Complex.hasCoe))) Real.pi)) Complex.I) (OfNat.ofNat.{0} Complex 0 (OfNat.mk.{0} Complex 0 (Zero.zero.{0} Complex Complex.hasZero)))
+but is expected to have type
+  Ne.{1} Complex (HMul.hMul.{0, 0, 0} Complex Complex Complex (instHMul.{0} Complex Complex.instMulComplex) (HMul.hMul.{0, 0, 0} Complex Complex Complex (instHMul.{0} Complex Complex.instMulComplex) (OfNat.ofNat.{0} Complex 2 (instOfNat.{0} Complex 2 (Semiring.toNatCast.{0} Complex Complex.instSemiringComplex) (instAtLeastTwoHAddNatInstHAddInstAddNatOfNat (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0))))) (Complex.ofReal' Real.pi)) Complex.I) (OfNat.ofNat.{0} Complex 0 (Zero.toOfNat0.{0} Complex Complex.instZeroComplex))
+Case conversion may be inaccurate. Consider using '#align complex.two_pi_I_ne_zero Complex.two_pi_I_ne_zeroβ‚“'. -/
+theorem two_pi_I_ne_zero : (2 * Ο€ * I : β„‚) β‰  0 := by norm_num [Real.pi_ne_zero, I_ne_zero]
+#align complex.two_pi_I_ne_zero Complex.two_pi_I_ne_zero
+
+/- warning: complex.exp_eq_one_iff -> Complex.exp_eq_one_iff is a dubious translation:
+lean 3 declaration is
+  forall {x : Complex}, Iff (Eq.{1} Complex (Complex.exp x) (OfNat.ofNat.{0} Complex 1 (OfNat.mk.{0} Complex 1 (One.one.{0} Complex Complex.hasOne)))) (Exists.{1} Int (fun (n : Int) => Eq.{1} Complex x (HMul.hMul.{0, 0, 0} Complex Complex Complex (instHMul.{0} Complex Complex.hasMul) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Int Complex (HasLiftT.mk.{1, 1} Int Complex (CoeTCβ‚“.coe.{1, 1} Int Complex (Int.castCoe.{0} Complex (AddGroupWithOne.toHasIntCast.{0} Complex Complex.addGroupWithOne)))) n) (HMul.hMul.{0, 0, 0} Complex Complex Complex (instHMul.{0} Complex Complex.hasMul) (HMul.hMul.{0, 0, 0} Complex Complex Complex (instHMul.{0} Complex Complex.hasMul) (OfNat.ofNat.{0} Complex 2 (OfNat.mk.{0} Complex 2 (bit0.{0} Complex Complex.hasAdd (One.one.{0} Complex Complex.hasOne)))) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real Complex (HasLiftT.mk.{1, 1} Real Complex (CoeTCβ‚“.coe.{1, 1} Real Complex (coeBase.{1, 1} Real Complex Complex.hasCoe))) Real.pi)) Complex.I))))
+but is expected to have type
+  forall {x : Complex}, Iff (Eq.{1} Complex (Complex.exp x) (OfNat.ofNat.{0} Complex 1 (One.toOfNat1.{0} Complex Complex.instOneComplex))) (Exists.{1} Int (fun (n : Int) => Eq.{1} Complex x (HMul.hMul.{0, 0, 0} Complex Complex Complex (instHMul.{0} Complex Complex.instMulComplex) (Int.cast.{0} Complex (Ring.toIntCast.{0} Complex Complex.instRingComplex) n) (HMul.hMul.{0, 0, 0} Complex Complex Complex (instHMul.{0} Complex Complex.instMulComplex) (HMul.hMul.{0, 0, 0} Complex Complex Complex (instHMul.{0} Complex Complex.instMulComplex) (OfNat.ofNat.{0} Complex 2 (instOfNat.{0} Complex 2 (Semiring.toNatCast.{0} Complex Complex.instSemiringComplex) (instAtLeastTwoHAddNatInstHAddInstAddNatOfNat (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0))))) (Complex.ofReal' Real.pi)) Complex.I))))
+Case conversion may be inaccurate. Consider using '#align complex.exp_eq_one_iff Complex.exp_eq_one_iffβ‚“'. -/
 theorem exp_eq_one_iff {x : β„‚} : exp x = 1 ↔ βˆƒ n : β„€, x = n * (2 * Ο€ * I) :=
   by
   constructor
@@ -152,14 +288,27 @@ theorem exp_eq_one_iff {x : β„‚} : exp x = 1 ↔ βˆƒ n : β„€, x = n * (2 * Ο€ *
     exact (exp_periodic.int_mul n).Eq.trans exp_zero
 #align complex.exp_eq_one_iff Complex.exp_eq_one_iff
 
+/- warning: complex.exp_eq_exp_iff_exp_sub_eq_one -> Complex.exp_eq_exp_iff_exp_sub_eq_one is a dubious translation:
+lean 3 declaration is
+  forall {x : Complex} {y : Complex}, Iff (Eq.{1} Complex (Complex.exp x) (Complex.exp y)) (Eq.{1} Complex (Complex.exp (HSub.hSub.{0, 0, 0} Complex Complex Complex (instHSub.{0} Complex Complex.hasSub) x y)) (OfNat.ofNat.{0} Complex 1 (OfNat.mk.{0} Complex 1 (One.one.{0} Complex Complex.hasOne))))
+but is expected to have type
+  forall {x : Complex} {y : Complex}, Iff (Eq.{1} Complex (Complex.exp x) (Complex.exp y)) (Eq.{1} Complex (Complex.exp (HSub.hSub.{0, 0, 0} Complex Complex Complex (instHSub.{0} Complex Complex.instSubComplex) x y)) (OfNat.ofNat.{0} Complex 1 (One.toOfNat1.{0} Complex Complex.instOneComplex)))
+Case conversion may be inaccurate. Consider using '#align complex.exp_eq_exp_iff_exp_sub_eq_one Complex.exp_eq_exp_iff_exp_sub_eq_oneβ‚“'. -/
 theorem exp_eq_exp_iff_exp_sub_eq_one {x y : β„‚} : exp x = exp y ↔ exp (x - y) = 1 := by
   rw [exp_sub, div_eq_one_iff_eq (exp_ne_zero _)]
 #align complex.exp_eq_exp_iff_exp_sub_eq_one Complex.exp_eq_exp_iff_exp_sub_eq_one
 
+/- warning: complex.exp_eq_exp_iff_exists_int -> Complex.exp_eq_exp_iff_exists_int is a dubious translation:
+lean 3 declaration is
+  forall {x : Complex} {y : Complex}, Iff (Eq.{1} Complex (Complex.exp x) (Complex.exp y)) (Exists.{1} Int (fun (n : Int) => Eq.{1} Complex x (HAdd.hAdd.{0, 0, 0} Complex Complex Complex (instHAdd.{0} Complex Complex.hasAdd) y (HMul.hMul.{0, 0, 0} Complex Complex Complex (instHMul.{0} Complex Complex.hasMul) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Int Complex (HasLiftT.mk.{1, 1} Int Complex (CoeTCβ‚“.coe.{1, 1} Int Complex (Int.castCoe.{0} Complex (AddGroupWithOne.toHasIntCast.{0} Complex Complex.addGroupWithOne)))) n) (HMul.hMul.{0, 0, 0} Complex Complex Complex (instHMul.{0} Complex Complex.hasMul) (HMul.hMul.{0, 0, 0} Complex Complex Complex (instHMul.{0} Complex Complex.hasMul) (OfNat.ofNat.{0} Complex 2 (OfNat.mk.{0} Complex 2 (bit0.{0} Complex Complex.hasAdd (One.one.{0} Complex Complex.hasOne)))) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real Complex (HasLiftT.mk.{1, 1} Real Complex (CoeTCβ‚“.coe.{1, 1} Real Complex (coeBase.{1, 1} Real Complex Complex.hasCoe))) Real.pi)) Complex.I)))))
+but is expected to have type
+  forall {x : Complex} {y : Complex}, Iff (Eq.{1} Complex (Complex.exp x) (Complex.exp y)) (Exists.{1} Int (fun (n : Int) => Eq.{1} Complex x (HAdd.hAdd.{0, 0, 0} Complex Complex Complex (instHAdd.{0} Complex Complex.instAddComplex) y (HMul.hMul.{0, 0, 0} Complex Complex Complex (instHMul.{0} Complex Complex.instMulComplex) (Int.cast.{0} Complex (Ring.toIntCast.{0} Complex Complex.instRingComplex) n) (HMul.hMul.{0, 0, 0} Complex Complex Complex (instHMul.{0} Complex Complex.instMulComplex) (HMul.hMul.{0, 0, 0} Complex Complex Complex (instHMul.{0} Complex Complex.instMulComplex) (OfNat.ofNat.{0} Complex 2 (instOfNat.{0} Complex 2 (Semiring.toNatCast.{0} Complex Complex.instSemiringComplex) (instAtLeastTwoHAddNatInstHAddInstAddNatOfNat (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0))))) (Complex.ofReal' Real.pi)) Complex.I)))))
+Case conversion may be inaccurate. Consider using '#align complex.exp_eq_exp_iff_exists_int Complex.exp_eq_exp_iff_exists_intβ‚“'. -/
 theorem exp_eq_exp_iff_exists_int {x y : β„‚} : exp x = exp y ↔ βˆƒ n : β„€, x = y + n * (2 * Ο€ * I) := by
   simp only [exp_eq_exp_iff_exp_sub_eq_one, exp_eq_one_iff, sub_eq_iff_eq_add']
 #align complex.exp_eq_exp_iff_exists_int Complex.exp_eq_exp_iff_exists_int
 
+#print Complex.countable_preimage_exp /-
 @[simp]
 theorem countable_preimage_exp {s : Set β„‚} : (exp ⁻¹' s).Countable ↔ s.Countable :=
   by
@@ -175,10 +324,17 @@ theorem countable_preimage_exp {s : Set β„‚} : (exp ⁻¹' s).Countable ↔ s.Co
     Β· push_neg  at hne
       simp [preimage, hne]
 #align complex.countable_preimage_exp Complex.countable_preimage_exp
+-/
 
 alias countable_preimage_exp ↔ _ _root_.set.countable.preimage_cexp
 #align set.countable.preimage_cexp Set.Countable.preimage_cexp
 
+/- warning: complex.tendsto_log_nhds_within_im_neg_of_re_neg_of_im_zero -> Complex.tendsto_log_nhdsWithin_im_neg_of_re_neg_of_im_zero is a dubious translation:
+lean 3 declaration is
+  forall {z : Complex}, (LT.lt.{0} Real Real.hasLt (Complex.re z) (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))) -> (Eq.{1} Real (Complex.im z) (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))) -> (Filter.Tendsto.{0, 0} Complex Complex Complex.log (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)))))) z (setOf.{0} Complex (fun (z : Complex) => LT.lt.{0} Real Real.hasLt (Complex.im z) (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))))) (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)))))) (HSub.hSub.{0, 0, 0} Complex Complex Complex (instHSub.{0} Complex Complex.hasSub) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real Complex (HasLiftT.mk.{1, 1} Real Complex (CoeTCβ‚“.coe.{1, 1} Real Complex (coeBase.{1, 1} Real Complex Complex.hasCoe))) (Real.log (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 z))) (HMul.hMul.{0, 0, 0} Complex Complex Complex (instHMul.{0} Complex Complex.hasMul) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real Complex (HasLiftT.mk.{1, 1} Real Complex (CoeTCβ‚“.coe.{1, 1} Real Complex (coeBase.{1, 1} Real Complex Complex.hasCoe))) Real.pi) Complex.I))))
+but is expected to have type
+  forall {z : Complex}, (LT.lt.{0} Real Real.instLTReal (Complex.re z) (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))) -> (Eq.{1} Real (Complex.im z) (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))) -> (Filter.Tendsto.{0, 0} Complex Complex Complex.log (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)))))) z (setOf.{0} Complex (fun (z : Complex) => LT.lt.{0} Real Real.instLTReal (Complex.im z) (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))))) (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)))))) (HSub.hSub.{0, 0, 0} Complex Complex Complex (instHSub.{0} Complex Complex.instSubComplex) (Complex.ofReal' (Real.log (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 z))) (HMul.hMul.{0, 0, 0} Complex Complex Complex (instHMul.{0} Complex Complex.instMulComplex) (Complex.ofReal' Real.pi) Complex.I))))
+Case conversion may be inaccurate. Consider using '#align complex.tendsto_log_nhds_within_im_neg_of_re_neg_of_im_zero Complex.tendsto_log_nhdsWithin_im_neg_of_re_neg_of_im_zeroβ‚“'. -/
 theorem tendsto_log_nhdsWithin_im_neg_of_re_neg_of_im_zero {z : β„‚} (hre : z.re < 0)
     (him : z.im = 0) : Tendsto log (𝓝[{ z : β„‚ | z.im < 0 }] z) (𝓝 <| Real.log (abs z) - Ο€ * I) :=
   by
@@ -194,6 +350,12 @@ theorem tendsto_log_nhdsWithin_im_neg_of_re_neg_of_im_zero {z : β„‚} (hre : z.re
     simpa using hre.ne
 #align complex.tendsto_log_nhds_within_im_neg_of_re_neg_of_im_zero Complex.tendsto_log_nhdsWithin_im_neg_of_re_neg_of_im_zero
 
+/- warning: complex.continuous_within_at_log_of_re_neg_of_im_zero -> Complex.continuousWithinAt_log_of_re_neg_of_im_zero is a dubious translation:
+lean 3 declaration is
+  forall {z : Complex}, (LT.lt.{0} Real Real.hasLt (Complex.re z) (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))) -> (Eq.{1} Real (Complex.im z) (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))) -> (ContinuousWithinAt.{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.log (setOf.{0} Complex (fun (z : Complex) => LE.le.{0} Real Real.hasLe (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) (Complex.im z))) z)
+but is expected to have type
+  forall {z : Complex}, (LT.lt.{0} Real Real.instLTReal (Complex.re z) (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))) -> (Eq.{1} Real (Complex.im z) (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))) -> (ContinuousWithinAt.{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.log (setOf.{0} Complex (fun (z : Complex) => LE.le.{0} Real Real.instLEReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) (Complex.im z))) z)
+Case conversion may be inaccurate. Consider using '#align complex.continuous_within_at_log_of_re_neg_of_im_zero Complex.continuousWithinAt_log_of_re_neg_of_im_zeroβ‚“'. -/
 theorem continuousWithinAt_log_of_re_neg_of_im_zero {z : β„‚} (hre : z.re < 0) (him : z.im = 0) :
     ContinuousWithinAt log { z : β„‚ | 0 ≀ z.im } z :=
   by
@@ -208,17 +370,35 @@ theorem continuousWithinAt_log_of_re_neg_of_im_zero {z : β„‚} (hre : z.re < 0) (
     simpa using hre.ne
 #align complex.continuous_within_at_log_of_re_neg_of_im_zero Complex.continuousWithinAt_log_of_re_neg_of_im_zero
 
+/- warning: complex.tendsto_log_nhds_within_im_nonneg_of_re_neg_of_im_zero -> Complex.tendsto_log_nhdsWithin_im_nonneg_of_re_neg_of_im_zero is a dubious translation:
+lean 3 declaration is
+  forall {z : Complex}, (LT.lt.{0} Real Real.hasLt (Complex.re z) (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))) -> (Eq.{1} Real (Complex.im z) (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))) -> (Filter.Tendsto.{0, 0} Complex Complex Complex.log (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)))))) z (setOf.{0} Complex (fun (z : Complex) => LE.le.{0} Real Real.hasLe (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) (Complex.im z)))) (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)))))) (HAdd.hAdd.{0, 0, 0} Complex Complex Complex (instHAdd.{0} Complex Complex.hasAdd) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real Complex (HasLiftT.mk.{1, 1} Real Complex (CoeTCβ‚“.coe.{1, 1} Real Complex (coeBase.{1, 1} Real Complex Complex.hasCoe))) (Real.log (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 z))) (HMul.hMul.{0, 0, 0} Complex Complex Complex (instHMul.{0} Complex Complex.hasMul) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real Complex (HasLiftT.mk.{1, 1} Real Complex (CoeTCβ‚“.coe.{1, 1} Real Complex (coeBase.{1, 1} Real Complex Complex.hasCoe))) Real.pi) Complex.I))))
+but is expected to have type
+  forall {z : Complex}, (LT.lt.{0} Real Real.instLTReal (Complex.re z) (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))) -> (Eq.{1} Real (Complex.im z) (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))) -> (Filter.Tendsto.{0, 0} Complex Complex Complex.log (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)))))) z (setOf.{0} Complex (fun (z : Complex) => LE.le.{0} Real Real.instLEReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) (Complex.im z)))) (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)))))) (HAdd.hAdd.{0, 0, 0} Complex Complex Complex (instHAdd.{0} Complex Complex.instAddComplex) (Complex.ofReal' (Real.log (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 z))) (HMul.hMul.{0, 0, 0} Complex Complex Complex (instHMul.{0} Complex Complex.instMulComplex) (Complex.ofReal' Real.pi) Complex.I))))
+Case conversion may be inaccurate. Consider using '#align complex.tendsto_log_nhds_within_im_nonneg_of_re_neg_of_im_zero Complex.tendsto_log_nhdsWithin_im_nonneg_of_re_neg_of_im_zeroβ‚“'. -/
 theorem tendsto_log_nhdsWithin_im_nonneg_of_re_neg_of_im_zero {z : β„‚} (hre : z.re < 0)
     (him : z.im = 0) : Tendsto log (𝓝[{ z : β„‚ | 0 ≀ z.im }] z) (𝓝 <| Real.log (abs z) + Ο€ * I) := by
   simpa only [log, arg_eq_pi_iff.2 ⟨hre, him⟩] using
     (continuous_within_at_log_of_re_neg_of_im_zero hre him).Tendsto
 #align complex.tendsto_log_nhds_within_im_nonneg_of_re_neg_of_im_zero Complex.tendsto_log_nhdsWithin_im_nonneg_of_re_neg_of_im_zero
 
+/- warning: complex.map_exp_comap_re_at_bot -> Complex.map_exp_comap_re_atBot is a dubious translation:
+lean 3 declaration is
+  Eq.{1} (Filter.{0} Complex) (Filter.map.{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
+  Eq.{1} (Filter.{0} Complex) (Filter.map.{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.map_exp_comap_re_at_bot Complex.map_exp_comap_re_atBotβ‚“'. -/
 @[simp]
 theorem map_exp_comap_re_atBot : map exp (comap re atBot) = 𝓝[β‰ ] 0 := by
   rw [← comap_exp_nhds_zero, map_comap, range_exp, nhdsWithin]
 #align complex.map_exp_comap_re_at_bot Complex.map_exp_comap_re_atBot
 
+/- warning: complex.map_exp_comap_re_at_top -> Complex.map_exp_comap_re_atTop is a dubious translation:
+lean 3 declaration is
+  Eq.{1} (Filter.{0} Complex) (Filter.map.{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
+  Eq.{1} (Filter.{0} Complex) (Filter.map.{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.map_exp_comap_re_at_top Complex.map_exp_comap_re_atTopβ‚“'. -/
 @[simp]
 theorem map_exp_comap_re_atTop : map exp (comap re atTop) = comap abs atTop :=
   by
@@ -236,6 +416,12 @@ open Topology
 
 variable {Ξ± : Type _}
 
+/- warning: continuous_at_clog -> continuousAt_clog is a dubious translation:
+lean 3 declaration is
+  forall {x : Complex}, (Or (LT.lt.{0} Real Real.hasLt (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) (Complex.re x)) (Ne.{1} Real (Complex.im x) (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) -> (ContinuousAt.{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.log x)
+but is expected to have type
+  forall {x : Complex}, (Or (LT.lt.{0} Real Real.instLTReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) (Complex.re x)) (Ne.{1} Real (Complex.im x) (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) -> (ContinuousAt.{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.log x)
+Case conversion may be inaccurate. Consider using '#align continuous_at_clog continuousAt_clogβ‚“'. -/
 theorem continuousAt_clog {x : β„‚} (h : 0 < x.re ∨ x.im β‰  0) : ContinuousAt log x :=
   by
   refine' ContinuousAt.add _ _
@@ -249,6 +435,12 @@ theorem continuousAt_clog {x : β„‚} (h : 0 < x.re ∨ x.im β‰  0) : ContinuousAt
     exact continuous_at_arg h
 #align continuous_at_clog continuousAt_clog
 
+/- warning: filter.tendsto.clog -> Filter.Tendsto.clog is a dubious translation:
+lean 3 declaration is
+  forall {Ξ± : Type.{u1}} {l : Filter.{u1} Ξ±} {f : Ξ± -> Complex} {x : 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)))))) x)) -> (Or (LT.lt.{0} Real Real.hasLt (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) (Complex.re x)) (Ne.{1} Real (Complex.im x) (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) -> (Filter.Tendsto.{u1, 0} Ξ± Complex (fun (t : Ξ±) => Complex.log (f t)) 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.log x)))
+but is expected to have type
+  forall {Ξ± : Type.{u1}} {l : Filter.{u1} Ξ±} {f : Ξ± -> Complex} {x : 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)))))) x)) -> (Or (LT.lt.{0} Real Real.instLTReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) (Complex.re x)) (Ne.{1} Real (Complex.im x) (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) -> (Filter.Tendsto.{u1, 0} Ξ± Complex (fun (t : Ξ±) => Complex.log (f t)) 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.log x)))
+Case conversion may be inaccurate. Consider using '#align filter.tendsto.clog Filter.Tendsto.clogβ‚“'. -/
 theorem Filter.Tendsto.clog {l : Filter Ξ±} {f : Ξ± β†’ β„‚} {x : β„‚} (h : Tendsto f l (𝓝 x))
     (hx : 0 < x.re ∨ x.im β‰  0) : Tendsto (fun t => log (f t)) l (𝓝 <| log x) :=
   (continuousAt_clog hx).Tendsto.comp h
@@ -256,21 +448,45 @@ theorem Filter.Tendsto.clog {l : Filter Ξ±} {f : Ξ± β†’ β„‚} {x : β„‚} (h : Tend
 
 variable [TopologicalSpace Ξ±]
 
+/- warning: continuous_at.clog -> ContinuousAt.clog 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) -> (Or (LT.lt.{0} Real Real.hasLt (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) (Complex.re (f x))) (Ne.{1} Real (Complex.im (f x)) (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) -> (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 (t : Ξ±) => Complex.log (f t)) 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) -> (Or (LT.lt.{0} Real Real.instLTReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) (Complex.re (f x))) (Ne.{1} Real (Complex.im (f x)) (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) -> (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 (t : Ξ±) => Complex.log (f t)) x)
+Case conversion may be inaccurate. Consider using '#align continuous_at.clog ContinuousAt.clogβ‚“'. -/
 theorem ContinuousAt.clog {f : Ξ± β†’ β„‚} {x : Ξ±} (h₁ : ContinuousAt f x)
     (hβ‚‚ : 0 < (f x).re ∨ (f x).im β‰  0) : ContinuousAt (fun t => log (f t)) x :=
   h₁.clog hβ‚‚
 #align continuous_at.clog ContinuousAt.clog
 
+/- warning: continuous_within_at.clog -> ContinuousWithinAt.clog 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) -> (Or (LT.lt.{0} Real Real.hasLt (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) (Complex.re (f x))) (Ne.{1} Real (Complex.im (f x)) (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) -> (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 (t : Ξ±) => Complex.log (f t)) 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) -> (Or (LT.lt.{0} Real Real.instLTReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) (Complex.re (f x))) (Ne.{1} Real (Complex.im (f x)) (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) -> (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 (t : Ξ±) => Complex.log (f t)) s x)
+Case conversion may be inaccurate. Consider using '#align continuous_within_at.clog ContinuousWithinAt.clogβ‚“'. -/
 theorem ContinuousWithinAt.clog {f : Ξ± β†’ β„‚} {s : Set Ξ±} {x : Ξ±} (h₁ : ContinuousWithinAt f s x)
     (hβ‚‚ : 0 < (f x).re ∨ (f x).im β‰  0) : ContinuousWithinAt (fun t => log (f t)) s x :=
   h₁.clog hβ‚‚
 #align continuous_within_at.clog ContinuousWithinAt.clog
 
+/- warning: continuous_on.clog -> ContinuousOn.clog 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) -> (forall (x : Ξ±), (Membership.Mem.{u1, u1} Ξ± (Set.{u1} Ξ±) (Set.hasMem.{u1} Ξ±) x s) -> (Or (LT.lt.{0} Real Real.hasLt (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) (Complex.re (f x))) (Ne.{1} Real (Complex.im (f x)) (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))))) -> (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 (t : Ξ±) => Complex.log (f t)) 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) -> (forall (x : Ξ±), (Membership.mem.{u1, u1} Ξ± (Set.{u1} Ξ±) (Set.instMembershipSet.{u1} Ξ±) x s) -> (Or (LT.lt.{0} Real Real.instLTReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) (Complex.re (f x))) (Ne.{1} Real (Complex.im (f x)) (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))))) -> (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 (t : Ξ±) => Complex.log (f t)) s)
+Case conversion may be inaccurate. Consider using '#align continuous_on.clog ContinuousOn.clogβ‚“'. -/
 theorem ContinuousOn.clog {f : Ξ± β†’ β„‚} {s : Set Ξ±} (h₁ : ContinuousOn f s)
     (hβ‚‚ : βˆ€ x ∈ s, 0 < (f x).re ∨ (f x).im β‰  0) : ContinuousOn (fun t => log (f t)) s := fun x hx =>
   (h₁ x hx).clog (hβ‚‚ x hx)
 #align continuous_on.clog ContinuousOn.clog
 
+/- warning: continuous.clog -> Continuous.clog 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) -> (forall (x : Ξ±), Or (LT.lt.{0} Real Real.hasLt (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) (Complex.re (f x))) (Ne.{1} Real (Complex.im (f x)) (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) -> (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 (t : Ξ±) => Complex.log (f t)))
+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) -> (forall (x : Ξ±), Or (LT.lt.{0} Real Real.instLTReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) (Complex.re (f x))) (Ne.{1} Real (Complex.im (f x)) (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) -> (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 (t : Ξ±) => Complex.log (f t)))
+Case conversion may be inaccurate. Consider using '#align continuous.clog Continuous.clogβ‚“'. -/
 theorem Continuous.clog {f : Ξ± β†’ β„‚} (h₁ : Continuous f) (hβ‚‚ : βˆ€ x, 0 < (f x).re ∨ (f x).im β‰  0) :
     Continuous fun t => log (f t) :=
   continuous_iff_continuousAt.2 fun x => h₁.ContinuousAt.clog (hβ‚‚ x)
Diff
@@ -180,9 +180,7 @@ alias countable_preimage_exp ↔ _ _root_.set.countable.preimage_cexp
 #align set.countable.preimage_cexp Set.Countable.preimage_cexp
 
 theorem tendsto_log_nhdsWithin_im_neg_of_re_neg_of_im_zero {z : β„‚} (hre : z.re < 0)
-    (him : z.im = 0) :
-    Tendsto log (𝓝[{ z : β„‚ | z.im < 0 }] z)
-      (𝓝 <| Real.log (Complex.AbsTheory.Complex.abs z) - Ο€ * I) :=
+    (him : z.im = 0) : Tendsto log (𝓝[{ z : β„‚ | z.im < 0 }] z) (𝓝 <| Real.log (abs z) - Ο€ * I) :=
   by
   have :=
     (continuous_of_real.continuous_at.comp_continuous_within_at
@@ -211,10 +209,7 @@ theorem continuousWithinAt_log_of_re_neg_of_im_zero {z : β„‚} (hre : z.re < 0) (
 #align complex.continuous_within_at_log_of_re_neg_of_im_zero Complex.continuousWithinAt_log_of_re_neg_of_im_zero
 
 theorem tendsto_log_nhdsWithin_im_nonneg_of_re_neg_of_im_zero {z : β„‚} (hre : z.re < 0)
-    (him : z.im = 0) :
-    Tendsto log (𝓝[{ z : β„‚ | 0 ≀ z.im }] z)
-      (𝓝 <| Real.log (Complex.AbsTheory.Complex.abs z) + Ο€ * I) :=
-  by
+    (him : z.im = 0) : Tendsto log (𝓝[{ z : β„‚ | 0 ≀ z.im }] z) (𝓝 <| Real.log (abs z) + Ο€ * I) := by
   simpa only [log, arg_eq_pi_iff.2 ⟨hre, him⟩] using
     (continuous_within_at_log_of_re_neg_of_im_zero hre him).Tendsto
 #align complex.tendsto_log_nhds_within_im_nonneg_of_re_neg_of_im_zero Complex.tendsto_log_nhdsWithin_im_nonneg_of_re_neg_of_im_zero
@@ -225,8 +220,7 @@ theorem map_exp_comap_re_atBot : map exp (comap re atBot) = 𝓝[β‰ ] 0 := by
 #align complex.map_exp_comap_re_at_bot Complex.map_exp_comap_re_atBot
 
 @[simp]
-theorem map_exp_comap_re_atTop :
-    map exp (comap re atTop) = comap Complex.AbsTheory.Complex.abs atTop :=
+theorem map_exp_comap_re_atTop : map exp (comap re atTop) = comap abs atTop :=
   by
   rw [← comap_exp_comap_abs_at_top, map_comap, range_exp, inf_eq_left, le_principal_iff]
   exact eventually_ne_of_tendsto_norm_atTop tendsto_comap 0
Diff
@@ -30,7 +30,7 @@ open Real Topology ComplexConjugate
   `log 0 = 0`-/
 @[pp_nodot]
 noncomputable def log (x : β„‚) : β„‚ :=
-  x.abs.log + arg x * i
+  x.abs.log + arg x * I
 #align complex.log Complex.log
 
 theorem log_re (x : β„‚) : x.log.re = x.abs.log := by simp [log]
@@ -98,13 +98,13 @@ theorem log_zero : log 0 = 0 := by simp [log]
 theorem log_one : log 1 = 0 := by simp [log]
 #align complex.log_one Complex.log_one
 
-theorem log_neg_one : log (-1) = Ο€ * i := by simp [log]
+theorem log_neg_one : log (-1) = Ο€ * I := by simp [log]
 #align complex.log_neg_one Complex.log_neg_one
 
-theorem log_i : log i = Ο€ / 2 * i := by simp [log]
+theorem log_i : log I = Ο€ / 2 * I := by simp [log]
 #align complex.log_I Complex.log_i
 
-theorem log_neg_i : log (-i) = -(Ο€ / 2) * i := by simp [log]
+theorem log_neg_i : log (-I) = -(Ο€ / 2) * I := by simp [log]
 #align complex.log_neg_I Complex.log_neg_i
 
 theorem log_conj_eq_ite (x : β„‚) : log (conj x) = if x.arg = Ο€ then log x else conj (log x) :=
@@ -136,10 +136,10 @@ theorem log_inv_eq_ite (x : β„‚) : log x⁻¹ = if x.arg = Ο€ then -conj (log x)
 theorem log_inv (x : β„‚) (hx : x.arg β‰  Ο€) : log x⁻¹ = -log x := by rw [log_inv_eq_ite, if_neg hx]
 #align complex.log_inv Complex.log_inv
 
-theorem two_pi_i_ne_zero : (2 * Ο€ * i : β„‚) β‰  0 := by norm_num [Real.pi_ne_zero, I_ne_zero]
+theorem two_pi_i_ne_zero : (2 * Ο€ * I : β„‚) β‰  0 := by norm_num [Real.pi_ne_zero, I_ne_zero]
 #align complex.two_pi_I_ne_zero Complex.two_pi_i_ne_zero
 
-theorem exp_eq_one_iff {x : β„‚} : exp x = 1 ↔ βˆƒ n : β„€, x = n * (2 * Ο€ * i) :=
+theorem exp_eq_one_iff {x : β„‚} : exp x = 1 ↔ βˆƒ n : β„€, x = n * (2 * Ο€ * I) :=
   by
   constructor
   Β· intro h
@@ -156,7 +156,7 @@ theorem exp_eq_exp_iff_exp_sub_eq_one {x y : β„‚} : exp x = exp y ↔ exp (x - y
   rw [exp_sub, div_eq_one_iff_eq (exp_ne_zero _)]
 #align complex.exp_eq_exp_iff_exp_sub_eq_one Complex.exp_eq_exp_iff_exp_sub_eq_one
 
-theorem exp_eq_exp_iff_exists_int {x y : β„‚} : exp x = exp y ↔ βˆƒ n : β„€, x = y + n * (2 * Ο€ * i) := by
+theorem exp_eq_exp_iff_exists_int {x y : β„‚} : exp x = exp y ↔ βˆƒ n : β„€, x = y + n * (2 * Ο€ * I) := by
   simp only [exp_eq_exp_iff_exp_sub_eq_one, exp_eq_one_iff, sub_eq_iff_eq_add']
 #align complex.exp_eq_exp_iff_exists_int Complex.exp_eq_exp_iff_exists_int
 
@@ -180,7 +180,9 @@ alias countable_preimage_exp ↔ _ _root_.set.countable.preimage_cexp
 #align set.countable.preimage_cexp Set.Countable.preimage_cexp
 
 theorem tendsto_log_nhdsWithin_im_neg_of_re_neg_of_im_zero {z : β„‚} (hre : z.re < 0)
-    (him : z.im = 0) : Tendsto log (𝓝[{ z : β„‚ | z.im < 0 }] z) (𝓝 <| Real.log (abs z) - Ο€ * i) :=
+    (him : z.im = 0) :
+    Tendsto log (𝓝[{ z : β„‚ | z.im < 0 }] z)
+      (𝓝 <| Real.log (Complex.AbsTheory.Complex.abs z) - Ο€ * I) :=
   by
   have :=
     (continuous_of_real.continuous_at.comp_continuous_within_at
@@ -209,7 +211,10 @@ theorem continuousWithinAt_log_of_re_neg_of_im_zero {z : β„‚} (hre : z.re < 0) (
 #align complex.continuous_within_at_log_of_re_neg_of_im_zero Complex.continuousWithinAt_log_of_re_neg_of_im_zero
 
 theorem tendsto_log_nhdsWithin_im_nonneg_of_re_neg_of_im_zero {z : β„‚} (hre : z.re < 0)
-    (him : z.im = 0) : Tendsto log (𝓝[{ z : β„‚ | 0 ≀ z.im }] z) (𝓝 <| Real.log (abs z) + Ο€ * i) := by
+    (him : z.im = 0) :
+    Tendsto log (𝓝[{ z : β„‚ | 0 ≀ z.im }] z)
+      (𝓝 <| Real.log (Complex.AbsTheory.Complex.abs z) + Ο€ * I) :=
+  by
   simpa only [log, arg_eq_pi_iff.2 ⟨hre, him⟩] using
     (continuous_within_at_log_of_re_neg_of_im_zero hre him).Tendsto
 #align complex.tendsto_log_nhds_within_im_nonneg_of_re_neg_of_im_zero Complex.tendsto_log_nhdsWithin_im_nonneg_of_re_neg_of_im_zero
@@ -220,7 +225,8 @@ theorem map_exp_comap_re_atBot : map exp (comap re atBot) = 𝓝[β‰ ] 0 := by
 #align complex.map_exp_comap_re_at_bot Complex.map_exp_comap_re_atBot
 
 @[simp]
-theorem map_exp_comap_re_atTop : map exp (comap re atTop) = comap abs atTop :=
+theorem map_exp_comap_re_atTop :
+    map exp (comap re atTop) = comap Complex.AbsTheory.Complex.abs atTop :=
   by
   rw [← comap_exp_comap_abs_at_top, map_comap, range_exp, inf_eq_left, le_principal_iff]
   exact eventually_ne_of_tendsto_norm_atTop tendsto_comap 0

Changes in mathlib4

mathlib3
mathlib4
chore: Rename nat_cast/int_cast/rat_cast to natCast/intCast/ratCast (#11486)

Now that I am defining NNRat.cast, I want a definitive answer to this naming issue. Plenty of lemmas in mathlib already use natCast/intCast/ratCast over nat_cast/int_cast/rat_cast, and this matches with the general expectation that underscore-separated name parts correspond to a single declaration.

Diff
@@ -73,7 +73,7 @@ theorem ofReal_log {x : ℝ} (hx : 0 ≀ x) : (x.log : β„‚) = log x :=
 #align complex.of_real_log Complex.ofReal_log
 
 @[simp, norm_cast]
-lemma natCast_log {n : β„•} : Real.log n = log n := ofReal_nat_cast n β–Έ ofReal_log n.cast_nonneg
+lemma natCast_log {n : β„•} : Real.log n = log n := ofReal_natCast n β–Έ ofReal_log n.cast_nonneg
 
 @[simp]
 lemma ofNat_log {n : β„•} [n.AtLeastTwo] :
chore: Rename mul-div cancellation lemmas (#11530)

Lemma names around cancellation of multiplication and division are a mess.

This PR renames a handful of them according to the following table (each big row contains the multiplicative statement, then the three rows contain the GroupWithZero lemma name, the Group lemma, the AddGroup lemma name).

| Statement | New name | Old name | |

Diff
@@ -45,8 +45,8 @@ theorem log_im_le_pi (x : β„‚) : (log x).im ≀ Ο€ := by simp only [log_im, arg_
 theorem exp_log {x : β„‚} (hx : x β‰  0) : exp (log x) = x := by
   rw [log, exp_add_mul_I, ← ofReal_sin, sin_arg, ← ofReal_cos, cos_arg hx, ← ofReal_exp,
     Real.exp_log (abs.pos hx), mul_add, ofReal_div, ofReal_div,
-    mul_div_cancel' _ (ofReal_ne_zero.2 <| abs.ne_zero hx), ← mul_assoc,
-    mul_div_cancel' _ (ofReal_ne_zero.2 <| abs.ne_zero hx), re_add_im]
+    mul_div_cancelβ‚€ _ (ofReal_ne_zero.2 <| abs.ne_zero hx), ← mul_assoc,
+    mul_div_cancelβ‚€ _ (ofReal_ne_zero.2 <| abs.ne_zero hx), re_add_im]
 #align complex.exp_log Complex.exp_log
 
 @[simp]
@@ -140,8 +140,8 @@ theorem log_inv_eq_ite (x : β„‚) : log x⁻¹ = if x.arg = Ο€ then -conj (log x)
       Nat.cast_two, ofReal_mul, neg_add, mul_neg, neg_neg]
     norm_num; rw [two_mul] -- Porting note: added to simplify `↑2`
     split_ifs
-    Β· rw [add_sub_right_comm, sub_add_cancel']
-    Β· rw [add_sub_right_comm, sub_add_cancel']
+    Β· rw [add_sub_right_comm, sub_add_cancel_left]
+    Β· rw [add_sub_right_comm, sub_add_cancel_left]
   Β· rwa [inv_pos, Complex.normSq_pos]
   Β· rwa [map_ne_zero]
 #align complex.log_inv_eq_ite Complex.log_inv_eq_ite
chore: Remove unnecessary "rw"s (#10704)

Remove unnecessary "rw"s.

Diff
@@ -91,7 +91,7 @@ theorem log_ofReal_mul {r : ℝ} (hr : 0 < r) {x : β„‚} (hx : x β‰  0) :
 #align complex.log_of_real_mul Complex.log_ofReal_mul
 
 theorem log_mul_ofReal (r : ℝ) (hr : 0 < r) (x : β„‚) (hx : x β‰  0) :
-    log (x * r) = Real.log r + log x := by rw [mul_comm, log_ofReal_mul hr hx, add_comm]
+    log (x * r) = Real.log r + log x := by rw [mul_comm, log_ofReal_mul hr hx]
 #align complex.log_mul_of_real Complex.log_mul_ofReal
 
 lemma log_mul_eq_add_log_iff {x y : β„‚} (hxβ‚€ : x β‰  0) (hyβ‚€ : y β‰  0) :
feat(Analysis/SpecialFunctions): some lemmas on complex functions of natural numbers (#10034)

This is the fourth PR in a sequence that adds auxiliary lemmas from the EulerProducts project to Mathlib.

It adds some lemmas on functions of complex numbers applied to natural numbers:

lemma Complex.natCast_log {n : β„•} : Real.log n = log n

lemma Complex.natCast_arg {n : β„•} : arg n = 0

lemma Complex.natCast_mul_natCast_cpow (m n : β„•) (s : β„‚) : (m * n : β„‚) ^ s = m ^ s * n ^ s

lemma Complex.natCast_cpow_natCast_mul (n m : β„•) (z : β„‚) : (n : β„‚) ^ (m * z) = ((n : β„‚) ^ m) ^ z

lemma Complex.norm_log_natCast_le_rpow_div (n : β„•) {Ξ΅ : ℝ} (hΞ΅ : 0 < Ξ΅) : β€–log nβ€– ≀ n ^ Ξ΅ / Ξ΅

(and ofNat versions of the first two).

Diff
@@ -72,6 +72,14 @@ theorem ofReal_log {x : ℝ} (hx : 0 ≀ x) : (x.log : β„‚) = log x :=
     (by rw [ofReal_im, log_im, arg_ofReal_of_nonneg hx])
 #align complex.of_real_log Complex.ofReal_log
 
+@[simp, norm_cast]
+lemma natCast_log {n : β„•} : Real.log n = log n := ofReal_nat_cast n β–Έ ofReal_log n.cast_nonneg
+
+@[simp]
+lemma ofNat_log {n : β„•} [n.AtLeastTwo] :
+    Real.log (no_index (OfNat.ofNat n)) = log (OfNat.ofNat n) :=
+  natCast_log
+
 theorem log_ofReal_re (x : ℝ) : (log (x : β„‚)).re = Real.log x := by simp [log_re]
 #align complex.log_of_real_re Complex.log_ofReal_re
 
feat(Analysis/SpecialFunctions/Complex/Arg): add definition for slit plane and API, and use it (#9116)

In preparation of future PRs dealing with estimates of the complex logarithm and its Taylor series, this introduces Complex.slitPlane for the set of complex numbers not on the closed negative real axis (in Analysis.SpecialFunctions.Complex.Arg), adds a bunch of API lemmas, and replaces hypotheses of the form 0 < x.re ∨ x.im β‰  0 by x ∈ slitPlane in several other files.

(We do not introduce a new file for that to avoid circular imports with Analysis.SpecialFunctions.Complex.Arg.)

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

Diff
@@ -236,20 +236,18 @@ open Topology
 
 variable {Ξ± : Type*}
 
-theorem continuousAt_clog {x : β„‚} (h : 0 < x.re ∨ x.im β‰  0) : ContinuousAt log x := by
+theorem continuousAt_clog {x : β„‚} (h : x ∈ slitPlane) : ContinuousAt log x := by
   refine' ContinuousAt.add _ _
   Β· refine' continuous_ofReal.continuousAt.comp _
     refine' (Real.continuousAt_log _).comp Complex.continuous_abs.continuousAt
-    rw [Complex.abs.ne_zero_iff]
-    rintro rfl
-    simp at h
+    exact Complex.abs.ne_zero_iff.mpr <| slitPlane_ne_zero h
   Β· have h_cont_mul : Continuous fun x : β„‚ => x * I := continuous_id'.mul continuous_const
     refine' h_cont_mul.continuousAt.comp (continuous_ofReal.continuousAt.comp _)
     exact continuousAt_arg h
 #align continuous_at_clog continuousAt_clog
 
 theorem _root_.Filter.Tendsto.clog {l : Filter Ξ±} {f : Ξ± β†’ β„‚} {x : β„‚} (h : Tendsto f l (𝓝 x))
-    (hx : 0 < x.re ∨ x.im β‰  0) : Tendsto (fun t => log (f t)) l (𝓝 <| log x) :=
+    (hx : x ∈ slitPlane) : Tendsto (fun t => log (f t)) l (𝓝 <| log x) :=
   (continuousAt_clog hx).tendsto.comp h
 #align filter.tendsto.clog Filter.Tendsto.clog
 
@@ -257,26 +255,26 @@ variable [TopologicalSpace Ξ±]
 
 nonrec
 theorem _root_.ContinuousAt.clog {f : Ξ± β†’ β„‚} {x : Ξ±} (h₁ : ContinuousAt f x)
-    (hβ‚‚ : 0 < (f x).re ∨ (f x).im β‰  0) : ContinuousAt (fun t => log (f t)) x :=
+    (hβ‚‚ : f x ∈ slitPlane) : ContinuousAt (fun t => log (f t)) x :=
   h₁.clog hβ‚‚
 #align continuous_at.clog ContinuousAt.clog
 
 nonrec
 theorem _root_.ContinuousWithinAt.clog {f : Ξ± β†’ β„‚} {s : Set Ξ±} {x : Ξ±}
-    (h₁ : ContinuousWithinAt f s x) (hβ‚‚ : 0 < (f x).re ∨ (f x).im β‰  0) :
+    (h₁ : ContinuousWithinAt f s x) (hβ‚‚ : f x ∈ slitPlane) :
     ContinuousWithinAt (fun t => log (f t)) s x :=
   h₁.clog hβ‚‚
 #align continuous_within_at.clog ContinuousWithinAt.clog
 
 nonrec
 theorem _root_.ContinuousOn.clog {f : Ξ± β†’ β„‚} {s : Set Ξ±} (h₁ : ContinuousOn f s)
-    (hβ‚‚ : βˆ€ x ∈ s, 0 < (f x).re ∨ (f x).im β‰  0) : ContinuousOn (fun t => log (f t)) s := fun x hx =>
+    (hβ‚‚ : βˆ€ x ∈ s, f x ∈ slitPlane) : ContinuousOn (fun t => log (f t)) s := fun x hx =>
   (h₁ x hx).clog (hβ‚‚ x hx)
 #align continuous_on.clog ContinuousOn.clog
 
 nonrec
 theorem _root_.Continuous.clog {f : Ξ± β†’ β„‚} (h₁ : Continuous f)
-    (hβ‚‚ : βˆ€ x, 0 < (f x).re ∨ (f x).im β‰  0) : Continuous fun t => log (f t) :=
+    (hβ‚‚ : βˆ€ x, f x ∈ slitPlane) : Continuous fun t => log (f t) :=
   continuous_iff_continuousAt.2 fun x => h₁.continuousAt.clog (hβ‚‚ x)
 #align continuous.clog Continuous.clog
 
chore: space after ← (#8178)

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

Diff
@@ -169,7 +169,7 @@ theorem exp_eq_exp_iff_exists_int {x y : β„‚} : exp x = exp y ↔ βˆƒ n : β„€, x
 theorem countable_preimage_exp {s : Set β„‚} : (exp ⁻¹' s).Countable ↔ s.Countable := by
   refine' ⟨fun hs => _, fun hs => _⟩
   Β· refine' ((hs.image exp).insert 0).mono _
-    rw [Set.image_preimage_eq_inter_range, range_exp, ←Set.diff_eq, ←Set.union_singleton,
+    rw [Set.image_preimage_eq_inter_range, range_exp, ← Set.diff_eq, ← Set.union_singleton,
         Set.diff_union_self]
     exact Set.subset_union_left _ _
   Β· rw [← Set.biUnion_preimage_singleton]
refactor: get rid of comap norm atTop (#8262)

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

Diff
@@ -19,9 +19,9 @@ noncomputable section
 
 namespace Complex
 
-open Set Filter
+open Set Filter Bornology
 
-open Real Topology ComplexConjugate
+open scoped Real Topology ComplexConjugate
 
 /-- Inverse of the `exp` function. Returns values such that `(log x).im > - Ο€` and `(log x).im ≀ Ο€`.
   `log 0 = 0`-/
@@ -221,9 +221,9 @@ theorem map_exp_comap_re_atBot : map exp (comap re atBot) = 𝓝[β‰ ] 0 := by
 #align complex.map_exp_comap_re_at_bot Complex.map_exp_comap_re_atBot
 
 @[simp]
-theorem map_exp_comap_re_atTop : map exp (comap re atTop) = comap abs atTop := by
-  rw [← comap_exp_comap_abs_atTop, map_comap, range_exp, inf_eq_left, le_principal_iff]
-  exact eventually_ne_of_tendsto_norm_atTop tendsto_comap 0
+theorem map_exp_comap_re_atTop : map exp (comap re atTop) = cobounded β„‚ := by
+  rw [← comap_exp_cobounded, map_comap, range_exp, inf_eq_left, le_principal_iff]
+  exact eventually_ne_cobounded _
 #align complex.map_exp_comap_re_at_top Complex.map_exp_comap_re_atTop
 
 end Complex
feat: add lemmas on Complex.arg (x * y) and Complex.log (x * y) (#8346)

This adds lemmas as in the title (plus one for arg (x * r) with real r):

lemma arg_mul_eq_add_arg_iff {x y : β„‚} (hxβ‚€ : x β‰  0) (hyβ‚€ : y β‰  0) :
    (x * y).arg = x.arg + y.arg ↔ arg x + arg y ∈ Set.Ioc (-Ο€) Ο€

lemma arg_mul {x y : β„‚} (hxβ‚€ : x β‰  0) (hx₁ : -Ο€ / 2 < x.arg) (hxβ‚‚ : x.arg ≀ Ο€ / 2)
    (hyβ‚€ : y β‰  0) (hy₁ : -Ο€ / 2 < y.arg) (hyβ‚‚ : y.arg ≀ Ο€ / 2) :
    (x * y).arg = x.arg + y.arg

lemma log_mul_eq_add_log_iff {x y : β„‚} (hxβ‚€ : x β‰  0) (hyβ‚€ : y β‰  0) :
    log (x * y) = log x + log y ↔ arg x + arg y ∈ Set.Ioc (-Ο€) Ο€

lemma log_mul {x y : β„‚} (hxβ‚€ : x β‰  0) (hx₁ : -Ο€ / 2 < x.arg) (hxβ‚‚ : x.arg ≀ Ο€ / 2)
    (hyβ‚€ : y β‰  0) (hy₁ : -Ο€ / 2 < y.arg) (hyβ‚‚ : y.arg ≀ Ο€ / 2) :
    (x * y).log = x.log + y.log

See here on Zulip.

Diff
@@ -86,6 +86,14 @@ theorem log_mul_ofReal (r : ℝ) (hr : 0 < r) (x : β„‚) (hx : x β‰  0) :
     log (x * r) = Real.log r + log x := by rw [mul_comm, log_ofReal_mul hr hx, add_comm]
 #align complex.log_mul_of_real Complex.log_mul_ofReal
 
+lemma log_mul_eq_add_log_iff {x y : β„‚} (hxβ‚€ : x β‰  0) (hyβ‚€ : y β‰  0) :
+    log (x * y) = log x + log y ↔ arg x + arg y ∈ Set.Ioc (-Ο€) Ο€ := by
+  refine ext_iff.trans <| Iff.trans ?_ <| arg_mul_eq_add_arg_iff hxβ‚€ hyβ‚€
+  simp_rw [add_re, add_im, log_re, log_im, AbsoluteValue.map_mul,
+    Real.log_mul (abs.ne_zero hxβ‚€) (abs.ne_zero hyβ‚€), true_and]
+
+alias ⟨_, log_mul⟩ := log_mul_eq_add_log_iff
+
 @[simp]
 theorem log_zero : log 0 = 0 := by simp [log]
 #align complex.log_zero Complex.log_zero
chore: make sure all #align's are on a single line (#8215)

We'll need to do this step anyway when it is time to remove them all.

(See #8214 where I'm benchmarking the removal.)

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

Diff
@@ -199,8 +199,7 @@ theorem continuousWithinAt_log_of_re_neg_of_im_zero {z : β„‚} (hre : z.re < 0) (
         tendsto_const_nhds) using 1
   Β· lift z to ℝ using him
     simpa using hre.ne
-#align complex.continuous_within_at_log_of_re_neg_of_im_zero
-Complex.continuousWithinAt_log_of_re_neg_of_im_zero
+#align complex.continuous_within_at_log_of_re_neg_of_im_zero Complex.continuousWithinAt_log_of_re_neg_of_im_zero
 
 theorem tendsto_log_nhdsWithin_im_nonneg_of_re_neg_of_im_zero {z : β„‚} (hre : z.re < 0)
     (him : z.im = 0) : Tendsto log (𝓝[{ z : β„‚ | 0 ≀ z.im }] z) (𝓝 <| Real.log (abs z) + Ο€ * I) := by
feat: fix norm num with arguments (#6600)

norm_num was passing the wrong syntax node to elabSimpArgs when elaborating, which essentially had the effect of ignoring all arguments it was passed, i.e. norm_num [add_comm] would not try to commute addition in the simp step. The fix itself is very simple (though not obvious to debug!), probably using TSyntax more would help avoid such issues in future.

Due to this bug many norm_num [blah] became rw [blah]; norm_num or similar, sometimes with porting notes, sometimes not, we fix these porting notes and other regressions during the port also.

Interestingly cancel_denoms uses norm_num [<- mul_assoc] internally, so cancel_denoms also got stronger with this change.

Diff
@@ -133,7 +133,7 @@ theorem log_inv_eq_ite (x : β„‚) : log x⁻¹ = if x.arg = Ο€ then -conj (log x)
 theorem log_inv (x : β„‚) (hx : x.arg β‰  Ο€) : log x⁻¹ = -log x := by rw [log_inv_eq_ite, if_neg hx]
 #align complex.log_inv Complex.log_inv
 
-theorem two_pi_I_ne_zero : (2 * Ο€ * I : β„‚) β‰  0 := by norm_num; simp [Real.pi_ne_zero, I_ne_zero]
+theorem two_pi_I_ne_zero : (2 * Ο€ * I : β„‚) β‰  0 := by norm_num [Real.pi_ne_zero, I_ne_zero]
 set_option linter.uppercaseLean3 false in
 #align complex.two_pi_I_ne_zero Complex.two_pi_I_ne_zero
 
feat: patch for new alias command (#6172)
Diff
@@ -173,7 +173,7 @@ theorem countable_preimage_exp {s : Set β„‚} : (exp ⁻¹' s).Countable ↔ s.Co
       simp [Set.preimage, hne]
 #align complex.countable_preimage_exp Complex.countable_preimage_exp
 
-alias countable_preimage_exp ↔ _ _root_.Set.Countable.preimage_cexp
+alias ⟨_, _root_.Set.Countable.preimage_cexp⟩ := countable_preimage_exp
 #align set.countable.preimage_cexp Set.Countable.preimage_cexp
 
 theorem tendsto_log_nhdsWithin_im_neg_of_re_neg_of_im_zero {z : β„‚} (hre : z.re < 0)
chore: remove unused simps (#6632)

Co-authored-by: Eric Wieser <wieser.eric@gmail.com>

Diff
@@ -121,7 +121,7 @@ theorem log_inv_eq_ite (x : β„‚) : log x⁻¹ = if x.arg = Ο€ then -conj (log x)
   Β· simp [hx]
   rw [inv_def, log_mul_ofReal, Real.log_inv, ofReal_neg, ← sub_eq_neg_add, log_conj_eq_ite]
   Β· simp_rw [log, map_add, map_mul, conj_ofReal, conj_I, normSq_eq_abs, Real.log_pow,
-      Nat.cast_two, ofReal_mul, ofReal_bit0, ofReal_one, neg_add, mul_neg, two_mul, neg_neg]
+      Nat.cast_two, ofReal_mul, neg_add, mul_neg, neg_neg]
     norm_num; rw [two_mul] -- Porting note: added to simplify `↑2`
     split_ifs
     Β· rw [add_sub_right_comm, sub_add_cancel']
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
@@ -227,7 +227,7 @@ open Complex Filter
 
 open Topology
 
-variable {Ξ± : Type _}
+variable {Ξ± : Type*}
 
 theorem continuousAt_clog {x : β„‚} (h : 0 < x.re ∨ x.im β‰  0) : ContinuousAt log x := by
   refine' ContinuousAt.add _ _
chore: script to replace headers with #align_import statements (#5979)

Open in Gitpod

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

Diff
@@ -2,15 +2,12 @@
 Copyright (c) 2018 Chris Hughes. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Chris Hughes, Abhimanyu Pallavi Sudhir, Jean Lo, Calle SΓΆnne, Benjamin Davidson
-
-! This file was ported from Lean 3 source module analysis.special_functions.complex.log
-! leanprover-community/mathlib commit f2ce6086713c78a7f880485f7917ea547a215982
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathlib.Analysis.SpecialFunctions.Complex.Arg
 import Mathlib.Analysis.SpecialFunctions.Log.Basic
 
+#align_import analysis.special_functions.complex.log from "leanprover-community/mathlib"@"f2ce6086713c78a7f880485f7917ea547a215982"
+
 /-!
 # The complex `log` function
 
chore: fix align linebreaks (#5683)

The result of running

find . -type f -name "*.lean" -exec sed -i -E 'N;s/^#align ([^[:space:]]+)\n *([^[:space:]]+)$/#align \1 \2/' {} \;

Hopefully for the last time...

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

Diff
@@ -190,8 +190,7 @@ theorem tendsto_log_nhdsWithin_im_neg_of_re_neg_of_im_zero {z : β„‚} (hre : z.re
   Β· simp [sub_eq_add_neg]
   Β· lift z to ℝ using him
     simpa using hre.ne
-#align complex.tendsto_log_nhds_within_im_neg_of_re_neg_of_im_zero
-Complex.tendsto_log_nhdsWithin_im_neg_of_re_neg_of_im_zero
+#align complex.tendsto_log_nhds_within_im_neg_of_re_neg_of_im_zero Complex.tendsto_log_nhdsWithin_im_neg_of_re_neg_of_im_zero
 
 theorem continuousWithinAt_log_of_re_neg_of_im_zero {z : β„‚} (hre : z.re < 0) (him : z.im = 0) :
     ContinuousWithinAt log { z : β„‚ | 0 ≀ z.im } z := by
@@ -210,8 +209,7 @@ theorem tendsto_log_nhdsWithin_im_nonneg_of_re_neg_of_im_zero {z : β„‚} (hre : z
     (him : z.im = 0) : Tendsto log (𝓝[{ z : β„‚ | 0 ≀ z.im }] z) (𝓝 <| Real.log (abs z) + Ο€ * I) := by
   simpa only [log, arg_eq_pi_iff.2 ⟨hre, him⟩] using
     (continuousWithinAt_log_of_re_neg_of_im_zero hre him).tendsto
-#align complex.tendsto_log_nhds_within_im_nonneg_of_re_neg_of_im_zero
-Complex.tendsto_log_nhdsWithin_im_nonneg_of_re_neg_of_im_zero
+#align complex.tendsto_log_nhds_within_im_nonneg_of_re_neg_of_im_zero Complex.tendsto_log_nhdsWithin_im_nonneg_of_re_neg_of_im_zero
 
 @[simp]
 theorem map_exp_comap_re_atBot : map exp (comap re atBot) = 𝓝[β‰ ] 0 := by
chore: clean up spacing around at and goals (#5387)

Changes are of the form

  • some_tactic at h⊒ -> some_tactic at h ⊒
  • some_tactic at h -> some_tactic at h
Diff
@@ -172,7 +172,7 @@ theorem countable_preimage_exp {s : Set β„‚} : (exp ⁻¹' s).Countable ↔ s.Co
     rcases em (βˆƒ w, exp w = z) with (⟨w, rfl⟩ | hne)
     Β· simp only [Set.preimage, Set.mem_singleton_iff, exp_eq_exp_iff_exists_int, Set.setOf_exists]
       exact Set.countable_iUnion fun m => Set.countable_singleton _
-    Β· push_neg  at hne
+    Β· push_neg at hne
       simp [Set.preimage, hne]
 #align complex.countable_preimage_exp Complex.countable_preimage_exp
 
chore: use ofReal instead of of_real in lemma names (#4934)
Diff
@@ -70,24 +70,24 @@ theorem exp_inj_of_neg_pi_lt_of_le_pi {x y : β„‚} (hx₁ : -Ο€ < x.im) (hxβ‚‚ :
   rw [← log_exp hx₁ hxβ‚‚, ← log_exp hy₁ hyβ‚‚, hxy]
 #align complex.exp_inj_of_neg_pi_lt_of_le_pi Complex.exp_inj_of_neg_pi_lt_of_le_pi
 
-theorem of_real_log {x : ℝ} (hx : 0 ≀ x) : (x.log : β„‚) = log x :=
+theorem ofReal_log {x : ℝ} (hx : 0 ≀ x) : (x.log : β„‚) = log x :=
   Complex.ext (by rw [log_re, ofReal_re, abs_of_nonneg hx])
-    (by rw [ofReal_im, log_im, arg_of_real_of_nonneg hx])
-#align complex.of_real_log Complex.of_real_log
+    (by rw [ofReal_im, log_im, arg_ofReal_of_nonneg hx])
+#align complex.of_real_log Complex.ofReal_log
 
-theorem log_of_real_re (x : ℝ) : (log (x : β„‚)).re = Real.log x := by simp [log_re]
-#align complex.log_of_real_re Complex.log_of_real_re
+theorem log_ofReal_re (x : ℝ) : (log (x : β„‚)).re = Real.log x := by simp [log_re]
+#align complex.log_of_real_re Complex.log_ofReal_re
 
-theorem log_of_real_mul {r : ℝ} (hr : 0 < r) {x : β„‚} (hx : x β‰  0) :
+theorem log_ofReal_mul {r : ℝ} (hr : 0 < r) {x : β„‚} (hx : x β‰  0) :
     log (r * x) = Real.log r + log x := by
   replace hx := Complex.abs.ne_zero_iff.mpr hx
   simp_rw [log, map_mul, abs_ofReal, arg_real_mul _ hr, abs_of_pos hr, Real.log_mul hr.ne' hx,
     ofReal_add, add_assoc]
-#align complex.log_of_real_mul Complex.log_of_real_mul
+#align complex.log_of_real_mul Complex.log_ofReal_mul
 
-theorem log_mul_of_real (r : ℝ) (hr : 0 < r) (x : β„‚) (hx : x β‰  0) :
-    log (x * r) = Real.log r + log x := by rw [mul_comm, log_of_real_mul hr hx, add_comm]
-#align complex.log_mul_of_real Complex.log_mul_of_real
+theorem log_mul_ofReal (r : ℝ) (hr : 0 < r) (x : β„‚) (hx : x β‰  0) :
+    log (x * r) = Real.log r + log x := by rw [mul_comm, log_ofReal_mul hr hx, add_comm]
+#align complex.log_mul_of_real Complex.log_mul_ofReal
 
 @[simp]
 theorem log_zero : log 0 = 0 := by simp [log]
@@ -122,7 +122,7 @@ theorem log_conj (x : β„‚) (h : x.arg β‰  Ο€) : log (conj x) = conj (log x) := b
 theorem log_inv_eq_ite (x : β„‚) : log x⁻¹ = if x.arg = Ο€ then -conj (log x) else -log x := by
   by_cases hx : x = 0
   Β· simp [hx]
-  rw [inv_def, log_mul_of_real, Real.log_inv, ofReal_neg, ← sub_eq_neg_add, log_conj_eq_ite]
+  rw [inv_def, log_mul_ofReal, Real.log_inv, ofReal_neg, ← sub_eq_neg_add, log_conj_eq_ite]
   Β· simp_rw [log, map_add, map_mul, conj_ofReal, conj_I, normSq_eq_abs, Real.log_pow,
       Nat.cast_two, ofReal_mul, ofReal_bit0, ofReal_one, neg_add, mul_neg, two_mul, neg_neg]
     norm_num; rw [two_mul] -- Porting note: added to simplify `↑2`
port: Analysis.SpecialFunctions.Complex.Log (#4060)

Dependencies 12 + 744

745 files ported (98.4%)
326585 lines ported (98.3%)
Show graph

The unported dependencies are

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