Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.

Commit 9292ecc

Browse files
committed
feat(analysis/special_functions/pow): interaction between cpow and inv/conj (#18137)
1 parent e94cd75 commit 9292ecc

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed

src/analysis/special_functions/pow.lean

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ We also prove basic properties of these functions.
2121
noncomputable theory
2222

2323
open_locale classical real topological_space nnreal ennreal filter big_operators asymptotics
24+
open_locale complex_conjugate
2425
open filter finset set
2526

2627
namespace complex
@@ -493,6 +494,42 @@ begin
493494
{ exact abs_cpow_eq_rpow_re_of_pos hlt y }
494495
end
495496

497+
lemma inv_cpow_eq_ite (x : ℂ) (n : ℂ) :
498+
x⁻¹ ^ n = if x.arg = π then conj (x ^ conj n)⁻¹ else (x ^ n)⁻¹ :=
499+
begin
500+
simp_rw [complex.cpow_def, log_inv_eq_ite, inv_eq_zero, map_eq_zero, ite_mul, neg_mul,
501+
is_R_or_C.conj_inv, apply_ite conj, apply_ite exp, apply_ite has_inv.inv, map_zero, map_one,
502+
exp_neg, inv_one, inv_zero, ←exp_conj, map_mul, conj_conj],
503+
split_ifs with hx hn ha ha; refl,
504+
end
505+
506+
lemma inv_cpow (x : ℂ) (n : ℂ) (hx : x.arg ≠ π) : x⁻¹ ^ n = (x ^ n)⁻¹ :=
507+
by rw [inv_cpow_eq_ite, if_neg hx]
508+
509+
/-- `complex.inv_cpow_eq_ite` with the `ite` on the other side. -/
510+
lemma inv_cpow_eq_ite' (x : ℂ) (n : ℂ) :
511+
(x ^ n)⁻¹ = if x.arg = π then conj (x⁻¹ ^ conj n) else x⁻¹ ^ n :=
512+
begin
513+
rw [inv_cpow_eq_ite, apply_ite conj, conj_conj, conj_conj],
514+
split_ifs,
515+
{ refl },
516+
{ rw inv_cpow _ _ h }
517+
end
518+
519+
lemma conj_cpow_eq_ite (x : ℂ) (n : ℂ) :
520+
conj x ^ n = if x.arg = π then x ^ n else conj (x ^ conj n) :=
521+
begin
522+
simp_rw [cpow_def, map_eq_zero, apply_ite conj, map_one, map_zero, ←exp_conj, map_mul,
523+
conj_conj, log_conj_eq_ite],
524+
split_ifs with hcx hn hx; refl
525+
end
526+
527+
lemma conj_cpow (x : ℂ) (n : ℂ) (hx : x.arg ≠ π) : conj x ^ n = conj (x ^ conj n) :=
528+
by rw [conj_cpow_eq_ite, if_neg hx]
529+
530+
lemma cpow_conj (x : ℂ) (n : ℂ) (hx : x.arg ≠ π) : x ^ conj n = conj (conj x ^ n) :=
531+
by rw [conj_cpow _ _ hx, conj_conj]
532+
496533
end complex
497534

498535
namespace real

0 commit comments

Comments
 (0)