Documentation

Mathlib.Analysis.Complex.Basic

Normed space structure on . #

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

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, it defines the following functions in the namespace Complex.

NameTypeDescription
equivRealProdCLMℂ ≃L[ℝ] ℝ × ℝThe natural ContinuousLinearEquiv from to ℝ × ℝ
reCLMℂ →L[ℝ] ℝReal part function as a ContinuousLinearMap
imCLMℂ →L[ℝ] ℝImaginary part function as a ContinuousLinearMap
ofRealCLMℝ →L[ℝ] ℂEmbedding of the reals as a ContinuousLinearMap
ofRealLIℝ →ₗᵢ[ℝ] ℂEmbedding of the reals as a LinearIsometry
conjCLEℂ ≃L[ℝ] ℂComplex conjugation as a ContinuousLinearEquiv
conjLIEℂ ≃ₗᵢ[ℝ] ℂComplex conjugation as a LinearIsometryEquiv

We also register the fact that is an RCLike field.

A shortcut instance to ensure computability; otherwise we get the noncomputable instance Complex.instNormedField.toNormedModule.toModule.

Equations
    @[instance 900]

    The module structure from Module.complexToReal is a normed space.

    Equations
      @[instance 900]

      The algebra structure from Algebra.complexToReal is a normed algebra.

      Equations
        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
        theorem Complex.le_of_eq_sum_of_eq_sum_norm {ι : Type u_2} {a b : } (f : ι) (s : Finset ι) (ha₀ : 0 a) (ha : a = is, f i) (hb : b = is, f i) :
        a b

        The natural ContinuousLinearEquiv from to ℝ × ℝ.

        Equations
          Instances For

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

            Equations
              Instances For
                @[deprecated Complex.uniformContinuous_re (since := "2026-02-03")]

                Alias of Complex.uniformContinuous_re.

                @[simp]
                theorem Complex.reCLM_apply (z : ) :
                reCLM z = z.re

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

                Equations
                  Instances For
                    @[deprecated Complex.uniformContinuous_im (since := "2026-02-03")]

                    Alias of Complex.uniformContinuous_im.

                    @[simp]
                    theorem Complex.imCLM_apply (z : ) :
                    imCLM z = z.im
                    @[deprecated Complex.restrictScalars_toSpanSingleton (since := "2025-12-18")]

                    Alias of Complex.restrictScalars_toSpanSingleton.

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

                    Equations
                      Instances For

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

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

                        Equations
                          Instances For

                            Linear isometry version of the canonical embedding of in .

                            Equations
                              Instances For
                                theorem Filter.tendsto_ofReal_iff {α : Type u_2} {l : Filter α} {f : α} {x : } :
                                Tendsto (fun (x : α) => (f x)) l (nhds x) Tendsto f l (nhds x)
                                theorem Filter.tendsto_ofReal_iff' {α : Type u_2} {𝕜 : Type u_3} [RCLike 𝕜] {l : Filter α} {f : α} {x : } :
                                Tendsto (fun (x : α) => (f x)) l (nhds x) Tendsto f l (nhds x)
                                theorem Filter.Tendsto.ofReal {α : Type u_2} {l : Filter α} {f : α} {x : } (hf : Tendsto f l (nhds x)) :
                                Tendsto (fun (x : α) => (f x)) l (nhds x)

                                The only continuous ring homomorphism from to is the identity.

                                Continuous linear map version of the canonical embedding of in .

                                Equations
                                  Instances For
                                    noncomputable instance Complex.instRCLike :
                                    Equations
                                      def RCLike.complexRingEquiv {𝕜 : Type u_2} [RCLike 𝕜] (h : im I = 1) :
                                      𝕜 ≃+*

                                      The natural isomorphism between 𝕜 satisfying RCLike 𝕜 and when RCLike.im RCLike.I = 1.

                                      Equations
                                        Instances For
                                          @[simp]
                                          theorem RCLike.complexRingEquiv_symm_apply {𝕜 : Type u_2} [RCLike 𝕜] (h : im I = 1) (x : ) :
                                          (complexRingEquiv h).symm x = x.re + x.im * I
                                          @[simp]
                                          theorem RCLike.complexRingEquiv_apply {𝕜 : Type u_2} [RCLike 𝕜] (h : im I = 1) (x : 𝕜) :
                                          (complexRingEquiv h) x = (re x) + (im x) * Complex.I
                                          theorem RCLike.map_nonneg_iff {𝕜 : Type u_2} {𝕜' : Type u_3} [RCLike 𝕜] [RCLike 𝕜'] (h : im I = 1) {a : 𝕜} :
                                          0 (map 𝕜 𝕜') a 0 a
                                          @[simp]
                                          theorem RCLike.to_complex_nonneg_iff {𝕜 : Type u_2} [RCLike 𝕜] {a : 𝕜} :
                                          0 (re a) + (im a) * Complex.I 0 a
                                          def RCLike.complexLinearIsometryEquiv {𝕜 : Type u_2} [RCLike 𝕜] (h : im I = 1) :

                                          The natural -linear isometry equivalence between 𝕜 satisfying RCLike 𝕜 and when RCLike.im RCLike.I = 1.

                                          Equations
                                            Instances For
                                              @[simp]
                                              theorem RCLike.complexLinearIsometryEquiv_apply {𝕜 : Type u_2} [RCLike 𝕜] (h : im I = 1) (a✝ : 𝕜) :
                                              @[simp]
                                              theorem RCLike.norm_to_complex {𝕜 : Type u_2} [RCLike 𝕜] (a : 𝕜) :
                                              (re a) + (im a) * Complex.I = a

                                              We show that the partial order and the topology on are compatible. We turn this into an instance scoped to ComplexOrder.

                                              theorem Complex.norm_of_nonneg' {x : } (hx : 0 x) :
                                              x = x
                                              theorem Complex.re_le_re {x y : } (h : x y) :
                                              x.re y.re
                                              @[simp]
                                              theorem RCLike.re_to_complex {x : } :
                                              re x = x.re
                                              @[simp]
                                              theorem RCLike.im_to_complex {x : } :
                                              im x = x.im
                                              @[simp]
                                              theorem RCLike.hasSum_conj {α : Type u_1} (𝕜 : Type u_2) [RCLike 𝕜] {L : SummationFilter α} {f : α𝕜} {x : 𝕜} :
                                              HasSum (fun (x : α) => (starRingEnd 𝕜) (f x)) x L HasSum f ((starRingEnd 𝕜) x) L
                                              theorem RCLike.hasSum_conj' {α : Type u_1} (𝕜 : Type u_2) [RCLike 𝕜] {L : SummationFilter α} {f : α𝕜} {x : 𝕜} :
                                              HasSum (fun (x : α) => (starRingEnd 𝕜) (f x)) ((starRingEnd 𝕜) x) L HasSum f x L
                                              @[simp]
                                              theorem RCLike.summable_conj {α : Type u_1} (𝕜 : Type u_2) [RCLike 𝕜] {L : SummationFilter α} {f : α𝕜} :
                                              Summable (fun (x : α) => (starRingEnd 𝕜) (f x)) L Summable f L
                                              theorem RCLike.conj_tsum {α : Type u_1} {𝕜 : Type u_2} [RCLike 𝕜] {L : SummationFilter α} (f : α𝕜) :
                                              (starRingEnd 𝕜) (∑'[L] (a : α), f a) = ∑'[L] (a : α), (starRingEnd 𝕜) (f a)
                                              @[simp]
                                              theorem RCLike.hasSum_ofReal {α : Type u_1} (𝕜 : Type u_2) [RCLike 𝕜] {L : SummationFilter α} {f : α} {x : } :
                                              HasSum (fun (x : α) => (f x)) (↑x) L HasSum f x L
                                              @[simp]
                                              theorem RCLike.summable_ofReal {α : Type u_1} (𝕜 : Type u_2) [RCLike 𝕜] {L : SummationFilter α} {f : α} :
                                              Summable (fun (x : α) => (f x)) L Summable f L
                                              theorem RCLike.ofReal_tsum {α : Type u_1} (𝕜 : Type u_2) [RCLike 𝕜] {L : SummationFilter α} (f : α) :
                                              (∑'[L] (a : α), f a) = ∑'[L] (a : α), (f a)
                                              theorem RCLike.hasSum_re {α : Type u_1} (𝕜 : Type u_2) [RCLike 𝕜] {L : SummationFilter α} {f : α𝕜} {x : 𝕜} (h : HasSum f x L) :
                                              HasSum (fun (x : α) => re (f x)) (re x) L
                                              theorem RCLike.hasSum_im {α : Type u_1} (𝕜 : Type u_2) [RCLike 𝕜] {L : SummationFilter α} {f : α𝕜} {x : 𝕜} (h : HasSum f x L) :
                                              HasSum (fun (x : α) => im (f x)) (im x) L
                                              theorem RCLike.re_tsum {α : Type u_1} (𝕜 : Type u_2) [RCLike 𝕜] {L : SummationFilter α} [L.NeBot] {f : α𝕜} (h : Summable f L) :
                                              re (∑'[L] (a : α), f a) = ∑'[L] (a : α), re (f a)
                                              theorem RCLike.im_tsum {α : Type u_1} (𝕜 : Type u_2) [RCLike 𝕜] {L : SummationFilter α} [L.NeBot] {f : α𝕜} (h : Summable f L) :
                                              im (∑'[L] (a : α), f a) = ∑'[L] (a : α), im (f a)
                                              theorem RCLike.hasSum_iff {α : Type u_1} {𝕜 : Type u_2} [RCLike 𝕜] {L : SummationFilter α} (f : α𝕜) (c : 𝕜) :
                                              HasSum f c L HasSum (fun (x : α) => re (f x)) (re c) L HasSum (fun (x : α) => im (f x)) (im c) L

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

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

                                              theorem Complex.hasSum_conj {α : Type u_1} {L : SummationFilter α} {f : α} {x : } :
                                              HasSum (fun (x : α) => (starRingEnd ) (f x)) x L HasSum f ((starRingEnd ) x) L
                                              theorem Complex.hasSum_conj' {α : Type u_1} {L : SummationFilter α} {f : α} {x : } :
                                              HasSum (fun (x : α) => (starRingEnd ) (f x)) ((starRingEnd ) x) L HasSum f x L
                                              theorem Complex.summable_conj {α : Type u_1} {f : α} :
                                              (Summable fun (x : α) => (starRingEnd ) (f x)) Summable f
                                              theorem Complex.conj_tsum {α : Type u_1} {L : SummationFilter α} (f : α) :
                                              (starRingEnd ) (∑'[L] (a : α), f a) = ∑'[L] (a : α), (starRingEnd ) (f a)
                                              @[simp]
                                              theorem Complex.hasSum_ofReal {α : Type u_1} {L : SummationFilter α} {f : α} {x : } :
                                              HasSum (fun (x : α) => (f x)) (↑x) L HasSum f x L
                                              @[simp]
                                              theorem Complex.summable_ofReal {α : Type u_1} {L : SummationFilter α} {f : α} :
                                              Summable (fun (x : α) => (f x)) L Summable f L
                                              theorem Complex.ofReal_tsum {α : Type u_1} {L : SummationFilter α} (f : α) :
                                              (∑'[L] (a : α), f a) = ∑'[L] (a : α), (f a)
                                              theorem Complex.hasSum_re {α : Type u_1} {L : SummationFilter α} {f : α} {x : } (h : HasSum f x L) :
                                              HasSum (fun (x : α) => (f x).re) x.re L
                                              theorem Complex.hasSum_im {α : Type u_1} {L : SummationFilter α} {f : α} {x : } (h : HasSum f x L) :
                                              HasSum (fun (x : α) => (f x).im) x.im L
                                              theorem Complex.re_tsum {α : Type u_1} {L : SummationFilter α} [L.NeBot] {f : α} (h : Summable f L) :
                                              (∑'[L] (a : α), f a).re = ∑'[L] (a : α), (f a).re
                                              theorem Complex.im_tsum {α : Type u_1} {L : SummationFilter α} [L.NeBot] {f : α} (h : Summable f L) :
                                              (∑'[L] (a : α), f a).im = ∑'[L] (a : α), (f a).im
                                              theorem Complex.hasSum_iff {α : Type u_1} {L : SummationFilter α} (f : α) (c : ) :
                                              HasSum f c L HasSum (fun (x : α) => (f x).re) c.re L HasSum (fun (x : α) => (f x).im) c.im L

                                              Define the "slit plane" ℂ ∖ ℝ≤0 and provide some API #

                                              The slit plane is the complex plane with the closed negative real axis removed.

                                              Equations
                                                Instances For

                                                  The slit plane includes the open unit ball of radius 1 around 1.

                                                  The slit plane includes the open unit ball of radius 1 around 1.

                                                  A subset of the circle centered at the origin in of radius r is a subset of the slitPlane if it does not contain -r.