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

Commit db9cb46

Browse files
committed
feat(analysis/complex): equiv_real_prod_symm_apply (#15122)
Plus some minor lemmas for #15106.
1 parent 68ae182 commit db9cb46

File tree

4 files changed

+22
-1
lines changed

4 files changed

+22
-1
lines changed

src/analysis/special_functions/complex/arg.lean

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,9 @@ begin
206206
rw [← arg_neg_one, ← arg_real_mul (-1) (neg_pos.2 h)], simp [← of_real_def] }
207207
end
208208

209+
lemma arg_lt_pi_iff {z : ℂ} : arg z < π ↔ 0 ≤ z.re ∨ z.im ≠ 0 :=
210+
by rw [(arg_le_pi z).lt_iff_ne, not_iff_comm, not_or_distrib, not_le, not_not, arg_eq_pi_iff]
211+
209212
lemma arg_of_real_of_neg {x : ℝ} (hx : x < 0) : arg x = π :=
210213
arg_eq_pi_iff.2 ⟨hx, rfl⟩
211214

src/analysis/special_functions/pow.lean

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -824,6 +824,15 @@ lemma continuous_at_rpow (p : ℝ × ℝ) (h : p.1 ≠ 0 ∨ 0 < p.2) :
824824
continuous_at (λ p : ℝ × ℝ, p.1 ^ p.2) p :=
825825
h.elim (λ h, continuous_at_rpow_of_ne p h) (λ h, continuous_at_rpow_of_pos p h)
826826

827+
lemma continuous_at_rpow_const (x : ℝ) (q : ℝ) (h : x ≠ 00 < q) :
828+
continuous_at (λ (x : ℝ), x ^ q) x :=
829+
begin
830+
change continuous_at ((λ p : ℝ × ℝ, p.1 ^ p.2) ∘ (λ y : ℝ, (y, q))) x,
831+
apply continuous_at.comp,
832+
{ exact continuous_at_rpow (x, q) h },
833+
{ exact (continuous_id'.prod_mk continuous_const).continuous_at }
834+
end
835+
827836
end real
828837

829838
section

src/data/complex/basic.lean

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,8 @@ open_locale complex_conjugate
3131
noncomputable instance : decidable_eq ℂ := classical.dec_eq _
3232

3333
/-- The equivalence between the complex numbers and `ℝ × ℝ`. -/
34-
@[simps] def equiv_real_prod : ℂ ≃ (ℝ × ℝ) :=
34+
@[simps apply]
35+
def equiv_real_prod : ℂ ≃ (ℝ × ℝ) :=
3536
{ to_fun := λ z, ⟨z.re, z.im⟩,
3637
inv_fun := λ p, ⟨p.1, p.2⟩,
3738
left_inv := λ ⟨x, y⟩, rfl,
@@ -160,6 +161,10 @@ lemma mul_I_im (z : ℂ) : (z * I).im = z.re := by simp
160161
lemma I_mul_re (z : ℂ) : (I * z).re = -z.im := by simp
161162
lemma I_mul_im (z : ℂ) : (I * z).im = z.re := by simp
162163

164+
@[simp] lemma equiv_real_prod_symm_apply (p : ℝ × ℝ) :
165+
equiv_real_prod.symm p = p.1 + p.2 * I :=
166+
by { ext; simp [equiv_real_prod] }
167+
163168
/-! ### Commutative ring instance and lemmas -/
164169

165170
/- We use a nonstandard formula for the `ℕ` and `ℤ` actions to make sure there is no

src/topology/separation.lean

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1049,6 +1049,10 @@ lemma is_closed_eq [t2_space α] {f g : β → α}
10491049
(hf : continuous f) (hg : continuous g) : is_closed {x:β | f x = g x} :=
10501050
continuous_iff_is_closed.mp (hf.prod_mk hg) _ is_closed_diagonal
10511051

1052+
lemma is_open_ne_fun [t2_space α] {f g : β → α}
1053+
(hf : continuous f) (hg : continuous g) : is_open {x:β | f x ≠ g x} :=
1054+
is_open_compl_iff.mpr $ is_closed_eq hf hg
1055+
10521056
/-- If two continuous maps are equal on `s`, then they are equal on the closure of `s`. See also
10531057
`set.eq_on.of_subset_closure` for a more general version. -/
10541058
lemma set.eq_on.closure [t2_space α] {s : set β} {f g : β → α} (h : eq_on f g s)

0 commit comments

Comments
 (0)