mathlib3 documentation

analysis.complex.basic

Normed space structure on . #

THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.

This file gathers basic facts on complex numbers of an analytic nature.

Main results #

This file registers as a normed field, expresses basic properties of the norm, and gives tools on the real vector space structure of . Notably, in the namespace complex, it defines functions:

They are bundled versions of the real part, the imaginary part, the embedding of in , and the complex conjugate as continuous -linear maps. The last two are also bundled as linear isometries in of_real_li and conj_lie.

We also register the fact that is an is_R_or_C field.

@[protected, instance]
noncomputable def complex.has_norm  :
Equations
@[simp]
@[protected, instance]
Equations
@[protected, instance]
Equations
@[protected, instance]

The module structure from module.complex_to_real is a normed space.

Equations
theorem complex.dist_eq (z w : ) :
theorem complex.dist_eq_re_im (z w : ) :
has_dist.dist z w = ((z.re - w.re) ^ 2 + (z.im - w.im) ^ 2)
@[simp]
theorem complex.dist_mk (x₁ y₁ x₂ y₂ : ) :
has_dist.dist {re := x₁, im := y₁} {re := x₂, im := y₂} = ((x₁ - x₂) ^ 2 + (y₁ - y₂) ^ 2)
theorem complex.dist_of_re_eq {z w : } (h : z.re = w.re) :
theorem complex.edist_of_re_eq {z w : } (h : z.re = w.re) :
theorem complex.dist_of_im_eq {z w : } (h : z.im = w.im) :
theorem complex.edist_of_im_eq {z w : } (h : z.im = w.im) :
@[simp]
theorem complex.norm_rat (r : ) :
@[simp]
theorem complex.norm_nat (n : ) :
@[simp]
theorem complex.norm_int {n : } :
theorem complex.norm_int_of_nonneg {n : } (hn : 0 n) :
@[simp, norm_cast]
@[simp, norm_cast]
theorem complex.nnnorm_nat (n : ) :
@[simp, norm_cast]
theorem complex.nnnorm_eq_one_of_pow_eq_one {ζ : } {n : } (h : ζ ^ n = 1) (hn : n 0) :
theorem complex.norm_eq_one_of_pow_eq_one {ζ : } {n : } (h : ζ ^ n = 1) (hn : n 0) :
ζ = 1
@[protected, instance]
@[protected, instance]
noncomputable def complex.re_clm  :

Continuous linear map version of the real part function, from to .

Equations
@[simp]
noncomputable def complex.im_clm  :

Continuous linear map version of the real part function, from to .

Equations
@[simp]

The complex-conjugation function from to itself is an isometric linear equivalence.

Equations

The only continuous ring homomorphisms from to are the identity and the complex conjugation.

noncomputable def complex.conj_cle  :

Continuous linear equiv version of the conj function, from to .

Equations

Linear isometry version of the canonical embedding of in .

Equations
@[continuity]

The only continuous ring homomorphism from to is the identity.

noncomputable def complex.of_real_clm  :

Continuous linear map version of the canonical embedding of in .

Equations
@[protected, instance]
noncomputable def complex.is_R_or_C  :
Equations
theorem complex.eq_coe_norm_of_nonneg {z : } (hz : 0 z) :
@[simp]
@[simp]
@[simp]
theorem is_R_or_C.has_sum_conj {α : Type u_1} (𝕜 : Type u_2) [is_R_or_C 𝕜] {f : α 𝕜} {x : 𝕜} :
has_sum (λ (x : α), (star_ring_end 𝕜) (f x)) x has_sum f ((star_ring_end 𝕜) x)
theorem is_R_or_C.has_sum_conj' {α : Type u_1} (𝕜 : Type u_2) [is_R_or_C 𝕜] {f : α 𝕜} {x : 𝕜} :
has_sum (λ (x : α), (star_ring_end 𝕜) (f x)) ((star_ring_end 𝕜) x) has_sum f x
@[simp]
theorem is_R_or_C.summable_conj {α : Type u_1} (𝕜 : Type u_2) [is_R_or_C 𝕜] {f : α 𝕜} :
summable (λ (x : α), (star_ring_end 𝕜) (f x)) summable f
theorem is_R_or_C.conj_tsum {α : Type u_1} {𝕜 : Type u_2} [is_R_or_C 𝕜] (f : α 𝕜) :
(star_ring_end 𝕜) (∑' (a : α), f a) = ∑' (a : α), (star_ring_end 𝕜) (f a)
@[simp, norm_cast]
theorem is_R_or_C.has_sum_of_real {α : Type u_1} (𝕜 : Type u_2) [is_R_or_C 𝕜] {f : α } {x : } :
has_sum (λ (x : α), (f x)) x has_sum f x
@[simp, norm_cast]
theorem is_R_or_C.summable_of_real {α : Type u_1} (𝕜 : Type u_2) [is_R_or_C 𝕜] {f : α } :
summable (λ (x : α), (f x)) summable f
@[norm_cast]
theorem is_R_or_C.of_real_tsum {α : Type u_1} (𝕜 : Type u_2) [is_R_or_C 𝕜] (f : α ) :
∑' (a : α), f a = ∑' (a : α), (f a)
theorem is_R_or_C.has_sum_re {α : Type u_1} (𝕜 : Type u_2) [is_R_or_C 𝕜] {f : α 𝕜} {x : 𝕜} (h : has_sum f x) :
has_sum (λ (x : α), is_R_or_C.re (f x)) (is_R_or_C.re x)
theorem is_R_or_C.has_sum_im {α : Type u_1} (𝕜 : Type u_2) [is_R_or_C 𝕜] {f : α 𝕜} {x : 𝕜} (h : has_sum f x) :
has_sum (λ (x : α), is_R_or_C.im (f x)) (is_R_or_C.im x)
theorem is_R_or_C.re_tsum {α : Type u_1} (𝕜 : Type u_2) [is_R_or_C 𝕜] {f : α 𝕜} (h : summable f) :
is_R_or_C.re (∑' (a : α), f a) = ∑' (a : α), is_R_or_C.re (f a)
theorem is_R_or_C.im_tsum {α : Type u_1} (𝕜 : Type u_2) [is_R_or_C 𝕜] {f : α 𝕜} (h : summable f) :
is_R_or_C.im (∑' (a : α), f a) = ∑' (a : α), is_R_or_C.im (f a)
theorem is_R_or_C.has_sum_iff {α : Type u_1} {𝕜 : Type u_2} [is_R_or_C 𝕜] (f : α 𝕜) (c : 𝕜) :
has_sum f c has_sum (λ (x : α), is_R_or_C.re (f x)) (is_R_or_C.re c) has_sum (λ (x : α), is_R_or_C.im (f x)) (is_R_or_C.im c)

We have to repeat the lemmas about is_R_or_C.re and is_R_or_C.im as they are not syntactic matches for complex.re and complex.im.

We do not have this problem with of_real and conj, although we repeat them anyway for discoverability and to avoid the need to unify 𝕜.

@[simp]
theorem complex.has_sum_conj {α : Type u_1} {f : α } {x : } :
has_sum (λ (x : α), (star_ring_end ) (f x)) x has_sum f ((star_ring_end ) x)
theorem complex.has_sum_conj' {α : Type u_1} {f : α } {x : } :
has_sum (λ (x : α), (star_ring_end ) (f x)) ((star_ring_end ) x) has_sum f x
@[simp]
theorem complex.summable_conj {α : Type u_1} {f : α } :
summable (λ (x : α), (star_ring_end ) (f x)) summable f
theorem complex.conj_tsum {α : Type u_1} (f : α ) :
(star_ring_end ) (∑' (a : α), f a) = ∑' (a : α), (star_ring_end ) (f a)
@[simp, norm_cast]
theorem complex.has_sum_of_real {α : Type u_1} {f : α } {x : } :
has_sum (λ (x : α), (f x)) x has_sum f x
@[simp, norm_cast]
theorem complex.summable_of_real {α : Type u_1} {f : α } :
summable (λ (x : α), (f x)) summable f
@[norm_cast]
theorem complex.of_real_tsum {α : Type u_1} (f : α ) :
∑' (a : α), f a = ∑' (a : α), (f a)
theorem complex.has_sum_re {α : Type u_1} {f : α } {x : } (h : has_sum f x) :
has_sum (λ (x : α), (f x).re) x.re
theorem complex.has_sum_im {α : Type u_1} {f : α } {x : } (h : has_sum f x) :
has_sum (λ (x : α), (f x).im) x.im
theorem complex.re_tsum {α : Type u_1} {f : α } (h : summable f) :
(∑' (a : α), f a).re = ∑' (a : α), (f a).re
theorem complex.im_tsum {α : Type u_1} {f : α } (h : summable f) :
(∑' (a : α), f a).im = ∑' (a : α), (f a).im
theorem complex.has_sum_iff {α : Type u_1} (f : α ) (c : ) :
has_sum f c has_sum (λ (x : α), (f x).re) c.re has_sum (λ (x : α), (f x).im) c.im