Skip to content

Commit c1755e4

Browse files
feat(Analysis/SpecialFunctions/Complex/Log): natural number versions of exp_eq_one_iff (#38015)
Add two lemmas: - `Complex.exp_eq_one_iff_of_im_nonneg`, a variant of `Complex.exp_eq_one_iff` that gives a natural number instead of an integer, under the hypothesis that the imaginary part is nonneg. - `Complex.exp_two_pi_mul_I_mul_div_eq_one_iff`, showing that `exp (2πik/N) = 1` if and only if `N ∣ k`. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
1 parent cdb1ff9 commit c1755e4

File tree

1 file changed

+16
-0
lines changed
  • Mathlib/Analysis/SpecialFunctions/Complex

1 file changed

+16
-0
lines changed

Mathlib/Analysis/SpecialFunctions/Complex/Log.lean

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,22 @@ theorem exp_eq_one_iff {x : ℂ} : exp x = 1 ↔ ∃ n : ℤ, x = n * (2 * π *
149149
· rintro ⟨n, rfl⟩
150150
exact (exp_periodic.int_mul n).eq.trans exp_zero
151151

152+
theorem exp_eq_one_iff_of_im_nonneg {x : ℂ} (hx : 0 ≤ x.im) :
153+
exp x = 1 ↔ ∃ n : ℕ, x = n * (2 * π * I) := by
154+
rw [exp_eq_one_iff]
155+
refine ⟨fun ⟨n, hn⟩ ↦ ?_, fun ⟨n, hn⟩ ↦ ⟨n, by rw [hn]; norm_cast⟩⟩
156+
have : 0 ≤ n * (2 * π) := by simpa [hn] using hx
157+
lift n to ℕ using by exact_mod_cast nonneg_of_mul_nonneg_left this (by positivity)
158+
exact ⟨n, hn⟩
159+
160+
theorem exp_two_pi_mul_I_mul_div_eq_one_iff {k N : ℕ} (hN : N ≠ 0) :
161+
exp (2 * π * I * k / N) = 1 ↔ N ∣ k := by
162+
rw [exp_eq_one_iff]
163+
conv in _ = _ => rw [← mul_comm (2 * π * I), mul_div_assoc, mul_right_inj' (by simp)]
164+
field_simp [Nat.cast_ne_zero.mpr hN]
165+
norm_cast
166+
simp [← dvd_def, Int.ofNat_dvd]
167+
152168
theorem exp_eq_exp_iff_exp_sub_eq_one {x y : ℂ} : exp x = exp y ↔ exp (x - y) = 1 := by
153169
rw [exp_sub, div_eq_one_iff_eq (exp_ne_zero _)]
154170

0 commit comments

Comments
 (0)