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
- the complex scalar multiplication
(a + b·i) • (x, y) = (a·x - b·y, a·y + b·x), and - the Hermitian inner product
⟪(x₁,y₁), (x₂,y₂)⟫ = (⟪x₁,x₂⟫ + ⟪y₁,y₂⟫) + i·(⟪x₁,y₂⟫ - ⟪y₁,x₂⟫),
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.
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
- Complexification H = (H × H)
Instances For
The underlying additive group is that of H × H.
Equations
- One or more equations did not get rendered due to their size.
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
- Complexification.mk x y = (x, y)
Instances For
Complex scalar multiplication: (a + b·i) • (x, y) = (a·x - b·y, a·y + b·x).
Equations
- Complexification.instModuleComplex = { toSMul := Complexification.instSMulComplex, mul_smul := ⋯, one_smul := ⋯, smul_zero := ⋯, smul_add := ⋯, add_smul := ⋯, zero_smul := ⋯ }
The Hermitian inner product:
⟪(x₁,y₁), (x₂,y₂)⟫ = (⟪x₁,x₂⟫ + ⟪y₁,y₂⟫) + i·(⟪x₁,y₂⟫ - ⟪y₁,x₂⟫).
The InnerProductSpace.Core packaging all the axioms of the complex inner
product on the complexification.
Equations
- Complexification.core = { inner := fun (u v : Complexification H) => inner ℂ u v, conj_inner_symm := ⋯, re_inner_nonneg := ⋯, add_left := ⋯, smul_left := ⋯, definite := ⋯ }
Instances For
The norm coming from the complex inner product.
The complexification of a real inner product space is a complex inner product space.
The real scalar action (the restriction of the complex one) is component-wise.
The embedding ofReal preserves norms: ‖x + i·0‖ = ‖x‖.
The embedding ofReal as a real-linear isometry H →ₗᵢ[ℝ] Complexification H.
Equations
- Complexification.ofRealLi = { toFun := Complexification.ofReal, map_add' := ⋯, map_smul' := ⋯, norm_map' := ⋯ }
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
- Complexification.fstₗ = { toFun := fun (u : Complexification H) => u.1, map_add' := ⋯, map_smul' := ⋯ }
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
- u.conj = Complexification.mk u.1 (-u.2)
Instances For
Conjugation is conjugate-linear: conj (c • u) = conj c • conj u.
Conjugation as a real-linear isometry.
Equations
- Complexification.conjLi = { toFun := Complexification.conj, map_add' := ⋯, map_smul' := ⋯, norm_map' := ⋯ }
Instances For
Conjugation as a continuous ℝ-linear map.
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
- Complexification.complexifyₗ S = { toFun := fun (u : Complexification H₁) => Complexification.mk (S u.1) (S u.2), map_add' := ⋯, map_smul' := ⋯ }
Instances For
The complexification of a real bounded operator S, as a ℂ-linear bounded
operator (x, y) ↦ (S x, S y).
Equations
Instances For
Sℂ agrees with S on the real subspace: Sℂ (x + i·0) = (S x) + i·0.
Sℂ commutes with conjugation (this is what it means for Sℂ to be "real").
The complexification preserves the operator norm.
Complexification commutes with taking adjoints: (Sℂ)* = (S*)ℂ.