Documentation

LeanPool.SNumbers.BasicResults.Spectral.Complexification

Complexification of a real inner product space #

Why this file is needed: the spectral projection is built with the continuous functional calculus, which is only available over ℂ. To obtain it over ℝ (and uniformly over any RCLike field), RealProjection/Representation complexify the space, run the ℂ construction, and restrict back — and this file supplies the complexification with its complex inner product (a piece Mathlib does not yet have).

Given a real inner product space H, this file builds its complexification Complexification H: the complex inner product space whose elements are thought of as formal sums x + i·y with x, y ∈ H.

Concretely we model Complexification H as the pair type H × H (the pair (x, y) standing for x + i·y), equip it with

and prove that this makes Complexification H a complex inner product space (InnerProductSpace ℂ). The canonical real-linear isometric embedding x ↦ x + i·0 is provided as Complexification.ofRealLi.

Note. Mathlib has base change of modules (ℂ ⊗[ℝ] M is a Module ℂ) but no construction equipping the complexification of a real inner product space with its complex inner product. This file constructs it, kept deliberately elementary and self-contained.

def Complexification (H : Type u_2) :
Type u_2

The complexification of a real inner product space H, modelled as the pair type H × H; the pair (x, y) represents the formal sum x + i·y.

Equations
Instances For
    @[instance_reducible]

    The underlying additive group is that of H × H.

    Equations
    • One or more equations did not get rendered due to their size.
    def Complexification.mk {H : Type u_1} (x y : H) :

    The element x + i·y of the complexification.

    This is the pair (x, y), but wrapped in a name. Writing a bare pair (x, y) at type Complexification H is only type-correct after unfolding Complexification, which simp and rw refuse to do; going through mk together with the projection lemmas mk_fst/mk_snd below keeps every goal in this file stated in terms the simp set can act on.

    Equations
    Instances For
      @[simp]
      theorem Complexification.mk_fst {H : Type u_1} (x y : H) :
      (mk x y).1 = x
      @[simp]
      theorem Complexification.mk_snd {H : Type u_1} (x y : H) :
      (mk x y).2 = y
      @[instance_reducible]

      Complex scalar multiplication: (a + b·i) • (x, y) = (a·x - b·y, a·y + b·x).

      Equations
      @[simp]
      theorem Complexification.smul_fst {H : Type u_1} [NormedAddCommGroup H] [InnerProductSpace ℝ H] (c : ℂ) (u : Complexification H) :
      (c • u).1 = c.re • u.1 - c.im • u.2
      @[simp]
      theorem Complexification.smul_snd {H : Type u_1} [NormedAddCommGroup H] [InnerProductSpace ℝ H] (c : ℂ) (u : Complexification H) :
      (c • u).2 = c.re • u.2 + c.im • u.1
      @[simp]
      theorem Complexification.add_fst {H : Type u_1} [NormedAddCommGroup H] (u v : Complexification H) :
      (u + v).1 = u.1 + v.1
      @[simp]
      theorem Complexification.add_snd {H : Type u_1} [NormedAddCommGroup H] (u v : Complexification H) :
      (u + v).2 = u.2 + v.2
      @[simp]
      theorem Complexification.zero_fst {H : Type u_1} [NormedAddCommGroup H] :
      0.1 = 0
      @[simp]
      theorem Complexification.zero_snd {H : Type u_1} [NormedAddCommGroup H] :
      0.2 = 0
      @[simp]
      theorem Complexification.sub_fst {H : Type u_1} [NormedAddCommGroup H] (u v : Complexification H) :
      (u - v).1 = u.1 - v.1
      @[simp]
      theorem Complexification.sub_snd {H : Type u_1} [NormedAddCommGroup H] (u v : Complexification H) :
      (u - v).2 = u.2 - v.2
      @[instance_reducible]
      Equations
      @[instance_reducible]

      The Hermitian inner product: ⟪(x₁,y₁), (x₂,y₂)⟫ = (⟪x₁,x₂⟫ + ⟪y₁,y₂⟫) + i·(⟪x₁,y₂⟫ - ⟪y₁,x₂⟫).

      Equations
      @[simp]
      @[simp]
      @[reducible]

      The InnerProductSpace.Core packaging all the axioms of the complex inner product on the complexification.

      Equations
      Instances For
        @[instance_reducible]

        The complexification of a real inner product space is a complex inner product space.

        Equations
        @[simp]
        theorem Complexification.rsmul_fst {H : Type u_1} [NormedAddCommGroup H] [InnerProductSpace ℝ H] (r : ℝ) (u : Complexification H) :
        (r • u).1 = r • u.1

        The real scalar action (the restriction of the complex one) is component-wise.

        @[simp]
        theorem Complexification.rsmul_snd {H : Type u_1} [NormedAddCommGroup H] [InnerProductSpace ℝ H] (r : ℝ) (u : Complexification H) :
        (r • u).2 = r • u.2

        The canonical embedding x ↦ x + i·0 of H into its complexification.

        Equations
        Instances For
          @[simp]
          theorem Complexification.ofReal_fst {H : Type u_1} [NormedAddCommGroup H] (x : H) :
          (ofReal x).1 = x
          @[simp]
          theorem Complexification.ofReal_snd {H : Type u_1} [NormedAddCommGroup H] (x : H) :
          (ofReal x).2 = 0
          @[simp]
          theorem Complexification.ofReal_add {H : Type u_1} [NormedAddCommGroup H] (x y : H) :
          ofReal (x + y) = ofReal x + ofReal y
          @[simp]
          theorem Complexification.ofReal_sub {H : Type u_1} [NormedAddCommGroup H] (x y : H) :
          ofReal (x - y) = ofReal x - ofReal y
          @[simp]

          The embedding ofReal preserves norms: ‖x + i·0‖ = ‖x‖.

          The embedding ofReal as a real-linear isometry H →ₗᵢ[ℝ] Complexification H.

          Equations
          Instances For

            Completeness #

            The norm ‖(x, y)‖ = √(‖x‖² + ‖y‖²) controls each component (‖x‖, ‖y‖ ≤ ‖(x,y)‖) and is in turn controlled by them (‖(x,y)‖ ≤ ‖x‖ + ‖y‖). Hence a Cauchy sequence in Complexification H has Cauchy components, and converges componentwise; so the complexification of a complete real inner product space is itself complete — a complex Hilbert space.

            The squared norm is the sum of the squared component norms.

            The real-part projection (x, y) ↦ x as an ℝ-linear map.

            Equations
            Instances For

              The real-part projection (x, y) ↦ x as a continuous ℝ-linear map.

              Equations
              Instances For

                Conjugation #

                Complex conjugation x + i·y ↦ x - i·y is the canonical conjugate-linear isometric involution of the complexification. Its set of fixed points is exactly the image of ofReal, i.e. the "real" elements — the fact that lets one detect when a complex object descends to the real space.

                Complex conjugation on the complexification: (x, y) ↦ (x, -y).

                Equations
                Instances For
                  @[simp]
                  @[simp]
                  @[simp]

                  Conjugation is conjugate-linear: conj (c • u) = conj c • conj u.

                  Conjugation as a real-linear isometry.

                  Equations
                  Instances For

                    The elements fixed by conjugation are exactly the "real" ones, x + i·0.

                    Complexification of operators #

                    A real bounded operator S : H₁ →L[ℝ] H₂ extends to a complex bounded operator Sℂ : Complexification H₁ →L[ℂ] Complexification H₂, (x, y) ↦ (S x, S y), with the same operator norm. It commutes with conjugation and is compatible with the real embedding — the precise senses in which Sℂ "is" S viewed complex-linearly.

                    The complexification of S as a ℂ-linear map, (x, y) ↦ (S x, S y).

                    Equations
                    Instances For
                      @[simp]
                      theorem Complexification.complexifyₗ_fst {H₁ : Type u_2} {H₂ : Type u_3} [NormedAddCommGroup H₁] [InnerProductSpace ℝ H₁] [NormedAddCommGroup H₂] [InnerProductSpace ℝ H₂] (S : H₁ →L[ℝ] H₂) (u : Complexification H₁) :
                      ((complexifyₗ S) u).1 = S u.1
                      @[simp]
                      theorem Complexification.complexifyₗ_snd {H₁ : Type u_2} {H₂ : Type u_3} [NormedAddCommGroup H₁] [InnerProductSpace ℝ H₁] [NormedAddCommGroup H₂] [InnerProductSpace ℝ H₂] (S : H₁ →L[ℝ] H₂) (u : Complexification H₁) :
                      ((complexifyₗ S) u).2 = S u.2
                      noncomputable def Complexification.complexify {H₁ : Type u_2} {H₂ : Type u_3} [NormedAddCommGroup H₁] [InnerProductSpace ℝ H₁] [NormedAddCommGroup H₂] [InnerProductSpace ℝ H₂] (S : H₁ →L[ℝ] H₂) :

                      The complexification of a real bounded operator S, as a ℂ-linear bounded operator (x, y) ↦ (S x, S y).

                      Equations
                      Instances For
                        @[simp]
                        theorem Complexification.complexify_fst {H₁ : Type u_2} {H₂ : Type u_3} [NormedAddCommGroup H₁] [InnerProductSpace ℝ H₁] [NormedAddCommGroup H₂] [InnerProductSpace ℝ H₂] (S : H₁ →L[ℝ] H₂) (u : Complexification H₁) :
                        ((complexify S) u).1 = S u.1
                        @[simp]
                        theorem Complexification.complexify_snd {H₁ : Type u_2} {H₂ : Type u_3} [NormedAddCommGroup H₁] [InnerProductSpace ℝ H₁] [NormedAddCommGroup H₂] [InnerProductSpace ℝ H₂] (S : H₁ →L[ℝ] H₂) (u : Complexification H₁) :
                        ((complexify S) u).2 = S u.2
                        @[simp]
                        theorem Complexification.complexify_ofReal {H₁ : Type u_2} {H₂ : Type u_3} [NormedAddCommGroup H₁] [InnerProductSpace ℝ H₁] [NormedAddCommGroup H₂] [InnerProductSpace ℝ H₂] (S : H₁ →L[ℝ] H₂) (x : H₁) :
                        (complexify S) (ofReal x) = ofReal (S x)

                        Sℂ agrees with S on the real subspace: Sℂ (x + i·0) = (S x) + i·0.

                        @[simp]
                        theorem Complexification.complexify_conj {H₁ : Type u_2} {H₂ : Type u_3} [NormedAddCommGroup H₁] [InnerProductSpace ℝ H₁] [NormedAddCommGroup H₂] [InnerProductSpace ℝ H₂] (S : H₁ →L[ℝ] H₂) (u : Complexification H₁) :

                        Sℂ commutes with conjugation (this is what it means for Sℂ to be "real").

                        @[simp]

                        The complexification preserves the operator norm.

                        @[simp]

                        Complexification commutes with taking adjoints: (Sℂ)* = (S*)ℂ.