Documentation

TauCeti.LinearAlgebra.Complex.Conjugation

The real points of a conjugate-linear involution #

A conjugation of a complex vector space V is a conjugate-linear map K : V → V with K ∘ K = id, that is, a starRingEnd ℂ-semilinear self-map that is involutive. Its real points are the vectors it fixes. They form a real subspace TauCeti.realPoints K, and the main theorem of this file is that V is the complexification of that subspace: the canonical map

ℂ ⊗[ℝ] realPoints K → V, c ⊗ₜ w ↦ c • w

is a ℂ-linear isomorphism. Conversely a complexification ℂ ⊗[ℝ] W carries the conjugation c ⊗ₜ w ↦ conj c ⊗ₜ w (TauCeti.tmulConj), whose real points are the image of W. So each of the two constructions produces the other: a conjugation on V presents V as a complexification, and a complexification carries a conjugation. That is what makes conjugations the tool for realizing an object over ℝ.

The canonical TauCeti.realPointsEquiv intertwines TauCeti.tmulConj with the original conjugation K. For a chosen presentation ℂ ⊗[ℝ] W ≃ₗ[ℂ] V, LinearEquiv.conjugationOfComplexification transports the existing tensor conjugation through that equivalence. Its exact fixed locus is the image of the real inclusion. The equivariant application is Representation.IsRealForm.exists_isRealStructure, downstream in TauCeti.RepresentationTheory.RealForm.

Everything is stated for an arbitrary V; no finite-dimensionality is used anywhere.

Main definitions #

Main statements #

Implementation notes #

A conjugation is carried here as the two unbundled hypotheses K : V →ₛₗ[starRingEnd ℂ] V and Function.Involutive K, rather than as a bundled structure. TauCeti.Hodge.Conjugation already bundles exactly this data, but it lives downstream in TauCeti/Geometry/Hodge/, so bundling here would either duplicate it or invert the dependency between TauCeti.LinearAlgebra and TauCeti.Geometry; a TauCeti.Hodge.Conjugation supplies the hypotheses below from its two fields. For the same reason TauCeti.realPoints asks only for the semilinear map: the subspace makes sense without involutivity, and only the complexification theorem needs it.

Mathlib's realPart/imaginaryPart decomposition of a star module over ℂ is the same mathematics, but it reads the conjugation off the Star instance on V: selfAdjoint.submodule and realPart both ask for [StarAddMonoid V] [StarModule ℂ V], and StarAddMonoid already carries involutivity. Here the conjugation is instead a term K that TauCeti.realPoints and TauCeti.conjRealPart are indexed by, because one V carries many conjugations and TauCeti.realPoints is wanted before K is known to be involutive -- TauCeti.realPointsLift is injective for every conjugate-linear K. So the instance-borne spelling is not available here, and a TauCeti.Hodge.Conjugation, or a Representation.IsRealStructure, hands its conjugation over as a field rather than as an instance.

No definition here exposes its body: TauCeti.mem_realPoints, TauCeti.conjRealPart_def, TauCeti.conjImaginaryPart_def, TauCeti.realPointsLift_tmul, TauCeti.realPointsEquiv_tmul, TauCeti.realPointsEquiv_symm_apply and TauCeti.tmulConj_tmul are the characterizations a consumer works from.

The real scalar structure on V is Mathlib's Module.complexToReal, the one Module ℂ V induces, so r • v and (r : ℂ) • v are definitionally equal and no scalar tower hypothesis is carried. The injectivity argument LinearMap.liftBaseChange_complex_injective_of_conj is the exception: it takes an arbitrary real structure with IsScalarTower ℝ ℂ E, so that it also serves spaces such as Matrix n n ℂ whose real structure is not syntactically Module.complexToReal.

References #

The real points of a conjugate-linear map #

The real points of a conjugate-linear map K : V → V: the vectors K fixes. They form a subspace over ℝ but not over ℂ, since K (c • v) = conj c • K v.

Instances For
    @[simp]
    theorem TauCeti.mem_realPoints {V : Type u_1} [AddCommGroup V] [Module ℂ V] {K : V →ₗ⋆[ℂ] V} {v : V} :
    v ∈ realPoints K ↔ K v = v
    noncomputable def TauCeti.conjRealPart {V : Type u_1} [AddCommGroup V] [Module ℂ V] (K : V →ₗ⋆[ℂ] V) (v : V) :
    V

    The real part of v relative to a conjugate-linear map: the vector ½ (v + K v), a real point once K is involutive (TauCeti.conjRealPart_mem).

    Instances For
      noncomputable def TauCeti.conjImaginaryPart {V : Type u_1} [AddCommGroup V] [Module ℂ V] (K : V →ₗ⋆[ℂ] V) (v : V) :
      V

      The imaginary part of v relative to a conjugate-linear map: the vector ½ I • (K v - v), the coefficient of I in TauCeti.conjRealPart_add_I_smul_conjImaginaryPart.

      Instances For
        theorem TauCeti.conjRealPart_def {V : Type u_1} [AddCommGroup V] [Module ℂ V] {K : V →ₗ⋆[ℂ] V} (v : V) :
        conjRealPart K v = 2⁻¹ • (v + K v)

        The defining formula for the real part, the body of TauCeti.conjRealPart not being exposed.

        The defining formula for the imaginary part, the body of TauCeti.conjImaginaryPart not being exposed.

        @[simp]
        theorem TauCeti.conjRealPart_of_mem {V : Type u_1} [AddCommGroup V] [Module ℂ V] {K : V →ₗ⋆[ℂ] V} {v : V} (hv : v ∈ realPoints K) :

        A real point is its own real part.

        @[simp]
        theorem TauCeti.conjImaginaryPart_of_mem {V : Type u_1} [AddCommGroup V] [Module ℂ V] {K : V →ₗ⋆[ℂ] V} {v : V} (hv : v ∈ realPoints K) :

        A real point has vanishing imaginary part.

        The decomposition into real points: every vector is its real part plus I times its imaginary part. Once K is involutive both summands lie in TauCeti.realPoints K, so this is what exhibits V as the complexification of that subspace.

        The real points of a conjugation span the whole space over ℂ. Every vector is a complex combination of the two real points it decomposes into, so an identity between ℂ-linear or ℂ-bilinear maps may be checked on real vectors alone.

        A complexification splits along 1 and I #

        theorem TauCeti.exists_one_tmul_add_I_tmul {W : Type u_2} [AddCommGroup W] [Module ℝ W] (u : TensorProduct ℝ ℂ W) :
        ∃ (w₁ : W) (w₂ : W), u = 1 ⊗ₜ[ℝ] w₁ + Complex.I ⊗ₜ[ℝ] w₂

        Every element of ℂ ⊗[ℝ] W is 1 ⊗ₜ w₁ + I ⊗ₜ w₂: writing a complex scalar as x + y * I with x, y : ℝ moves its two real coordinates into the second factor. This is the splitting ℂ ⊗[ℝ] W ≅ W ⊕ I · W in the form the injectivity argument below uses it.

        Real-linear maps into the real points #

        theorem LinearMap.liftBaseChange_complex_injective_of_conj {E : Type u_2} {W : Type u_3} [AddCommGroup E] [Module ℂ E] [Module ℝ E] [IsScalarTower ℝ ℂ E] [AddCommGroup W] [Module ℝ W] (f : W →ₗ[ℝ] E) {K : E →ₗ⋆[ℂ] E} (hf : Function.Injective ⇑f) (hK : ∀ (w : W), K (f w) = f w) :

        Vectors fixed by a conjugate-linear map complexify injectively. If a conjugate-linear K fixes every value of an injective real-linear map f : W → E, then the induced map ℂ ⊗[ℝ] W → E, c ⊗ₜ w ↦ c • f w, is injective: applying K to a relation f w₁ + I • f w₂ = 0 flips the sign of its I-component, so adding the two relations kills f w₂ and leaves 2 • f w₁ = 0.

        The real structure on E is an arbitrary one compatible with the complex structure (IsScalarTower ℝ ℂ E), so this also applies to spaces such as Matrix n n ℂ whose real structure is not syntactically Module.complexToReal.

        The complexification of the real points #

        The canonical ℂ-linear map from the complexification of the real points, c ⊗ₜ w ↦ c • w. It is LinearMap.liftBaseChange applied to the inclusion of the real points. TauCeti.realPointsEquiv upgrades it to an isomorphism when K is involutive.

        Instances For
          @[simp]
          theorem TauCeti.realPointsLift_tmul {V : Type u_1} [AddCommGroup V] [Module ℂ V] {K : V →ₗ⋆[ℂ] V} (c : ℂ) (w : ↥(realPoints K)) :
          (realPointsLift K) (c ⊗ₜ[ℝ] w) = c • ↑w

          The lift is surjective once K is involutive: its image is the complex span of the real points, which is all of V (TauCeti.span_realPoints_eq_top).

          The lift is injective for any conjugate-linear K: only its surjectivity uses that K is involutive. This is LinearMap.liftBaseChange_complex_injective_of_conj for the inclusion of the real points.

          A complex vector space is the complexification of the real points of any conjugation on it. The isomorphism is c ⊗ₜ w ↦ c • w; surjectivity is the decomposition TauCeti.conjRealPart_add_I_smul_conjImaginaryPart, and injectivity is that a relation w₁ + I • w₂ = 0 between real points is killed by adding and subtracting its conjugate.

          Instances For
            @[simp]
            theorem TauCeti.realPointsEquiv_tmul {V : Type u_1} [AddCommGroup V] [Module ℂ V] {K : V →ₗ⋆[ℂ] V} (hK : Function.Involutive ⇑K) (c : ℂ) (w : ↥(realPoints K)) :
            (realPointsEquiv hK) (c ⊗ₜ[ℝ] w) = c • ↑w

            The isomorphism sends c ⊗ₜ w to c • w.

            @[simp]

            The inverse of the isomorphism is the decomposition into real and imaginary parts: v ↦ 1 ⊗ₜ conjRealPart K v + I ⊗ₜ conjImaginaryPart K v.

            The real points of a conjugation halve the dimension: their ℝ-dimension is the ℂ-dimension of V, because V is their complexification and base change does not change the dimension. No finiteness is assumed: in the infinite-dimensional case both sides are the junk value 0.

            The self-adjoint elements of a complex star module have the ℝ-dimension that the module has over ℂ: they are the real points of the conjugation star.

            The conjugation of a complexification #

            The conjugation of a complexification: c ⊗ₜ w ↦ conj c ⊗ₜ w, conjugate-linear because conjugation is ℝ-linear and multiplicative on ℂ. The underlying ℝ-linear map is LinearMap.rTensor W Complex.conjAe.toLinearMap. This is the construction converse to TauCeti.realPointsEquiv: it turns a presentation of a space as a complexification into a conjugation on it.

            Instances For
              @[simp]
              theorem TauCeti.tmulConj_tmul (W : Type u_2) [AddCommGroup W] [Module ℝ W] (c : ℂ) (w : W) :

              The conjugation of a complexification conjugates the scalar and leaves the vector alone.

              @[simp]
              theorem TauCeti.tmulConj_tmulConj (W : Type u_2) [AddCommGroup W] [Module ℝ W] (u : TensorProduct ℝ ℂ W) :
              (tmulConj W) ((tmulConj W) u) = u

              Conjugating twice is the identity, in the applied form simp can use. The proof is an induction on the tensor, run off the characterization TauCeti.tmulConj_tmul rather than the unexposed body.

              The conjugation of a complexification is involutive, so it is a conjugation in the sense of this file.

              @[simp]
              theorem TauCeti.tmulConj_eq_self_iff (W : Type u_2) [AddCommGroup W] [Module ℝ W] (u : TensorProduct ℝ ℂ W) :
              (tmulConj W) u = u ↔ ∃ (w : W), u = 1 ⊗ₜ[ℝ] w

              The vectors the conjugation of a complexification fixes are exactly the image of W, that is, the elements 1 ⊗ₜ w. Stated on tmulConj W u = u rather than on u ∈ realPoints (tmulConj W) because TauCeti.mem_realPoints is the simp normal form of the latter.

              noncomputable def TauCeti.realPart (W : Type u_3) [AddCommGroup W] [Module ℝ W] :

              The real-linear retraction c ⊗ₜ w ↦ (re c) • w of w ↦ 1 ⊗ₜ w.

              Instances For
                @[simp]
                theorem TauCeti.realPart_tmul (W : Type u_2) [AddCommGroup W] [Module ℝ W] (c : ℂ) (w : W) :
                (realPart W) (c ⊗ₜ[ℝ] w) = c.re • w

                The real part of a pure tensor is its real scalar part acting on the vector.

                theorem TauCeti.realPart_one_tmul (W : Type u_2) [AddCommGroup W] [Module ℝ W] (w : W) :
                (realPart W) (1 ⊗ₜ[ℝ] w) = w

                The real part of a real vector embedded in its complexification is that vector.

                The real-linear map c ⊗ₜ w ↦ (im c) • w, reading off the coefficient of I in the splitting ℂ ⊗[ℝ] W ≅ W ⊕ I · W.

                Instances For
                  @[simp]
                  theorem TauCeti.imaginaryPart_tmul (W : Type u_2) [AddCommGroup W] [Module ℝ W] (c : ℂ) (w : W) :

                  The imaginary part of a pure tensor is its imaginary scalar part acting on the vector.

                  @[simp]

                  Every element of ℂ ⊗[ℝ] W is 1 ⊗ₜ realPart W u + I ⊗ₜ imaginaryPart W u.

                  theorem TauCeti.complexification_ext {W : Type u_2} [AddCommGroup W] [Module ℝ W] {u v : TensorProduct ℝ ℂ W} (hre : (realPart W) u = (realPart W) v) (him : (imaginaryPart W) u = (imaginaryPart W) v) :
                  u = v

                  Extensionality in a complexification: a vector of ℂ ⊗[ℝ] W is determined by its real and imaginary parts.

                  Two vectors of ℂ ⊗[ℝ] W are equal exactly when their real and imaginary parts are.

                  @[simp]
                  theorem TauCeti.one_tmul_add_I_tmul_inj (W : Type u_2) [AddCommGroup W] [Module ℝ W] {w₁ w₂ w₁' w₂' : W} :
                  1 ⊗ₜ[ℝ] w₁ + Complex.I ⊗ₜ[ℝ] w₂ = 1 ⊗ₜ[ℝ] w₁' + Complex.I ⊗ₜ[ℝ] w₂' ↔ w₁ = w₁' ∧ w₂ = w₂'

                  The two real coordinates of 1 ⊗ₜ w₁ + I ⊗ₜ w₂ are w₁ and w₂.

                  theorem TauCeti.smul_one_tmul_add_I_tmul (W : Type u_2) [AddCommGroup W] [Module ℝ W] (c : ℂ) (v w : W) :

                  Multiplication by a complex scalar c in the real coordinates of a complexification: c • (1 ⊗ₜ v + I ⊗ₜ w) = 1 ⊗ₜ (re c • v - im c • w) + I ⊗ₜ (re c • w + im c • v).

                  I • (1 ⊗ₜ v + I ⊗ₜ w) = 1 ⊗ₜ (-w) + I ⊗ₜ v in a complexification.

                  @[simp]
                  theorem TauCeti.realPart_smul (W : Type u_2) [AddCommGroup W] [Module ℝ W] (c : ℂ) (u : TensorProduct ℝ ℂ W) :
                  (realPart W) (c • u) = c.re • (realPart W) u - c.im • (imaginaryPart W) u

                  The real part of c • u is re c • realPart W u - im c • imaginaryPart W u.

                  @[simp]
                  theorem TauCeti.imaginaryPart_smul (W : Type u_2) [AddCommGroup W] [Module ℝ W] (c : ℂ) (u : TensorProduct ℝ ℂ W) :
                  (imaginaryPart W) (c • u) = c.re • (imaginaryPart W) u + c.im • (realPart W) u

                  The imaginary part of c • u is re c • imaginaryPart W u + im c • realPart W u.

                  Real-linear isomorphism ℂ ⊗[ℝ] W ≃ₗ[ℝ] W × W given by (realPart, imaginaryPart).

                  Instances For
                    @[simp]
                    theorem TauCeti.realPart_tmulConj {W : Type u_2} [AddCommGroup W] [Module ℝ W] (u : TensorProduct ℝ ℂ W) :
                    (realPart W) ((tmulConj W) u) = (realPart W) u

                    Complex conjugation preserves the real part of u : ℂ ⊗[ℝ] W.

                    @[simp]

                    Complex conjugation negates the imaginary part of u : ℂ ⊗[ℝ] W.

                    Coordinate decomposition of tmulConj W u into 1 ⊗ₜ realPart W u - I ⊗ₜ imaginaryPart W u.

                    @[simp]

                    Real descent intertwines tensor conjugation with the original conjugation.

                    The conjugation of a complexification commutes with every base-changed map, because LinearMap.baseChange leaves the conjugated factor alone.

                    @[simp]
                    theorem TauCeti.realPart_baseChange {W : Type u_2} {W' : Type u_3} [AddCommGroup W] [Module ℝ W] [AddCommGroup W'] [Module ℝ W'] (f : W →ₗ[ℝ] W') (u : TensorProduct ℝ ℂ W) :
                    (realPart W') ((LinearMap.baseChange ℂ f) u) = f ((realPart W) u)

                    Base change commutes with realPart.

                    @[simp]

                    Base change commutes with imaginaryPart.

                    Transport the existing tensor conjugation through a complexification equivalence. The result uses the native semilinear-map carrier.

                    Instances For

                      The defining transport formula for tensor conjugation.

                      @[simp]

                      The transported conjugation conjugates the scalar of the image of a pure tensor.

                      @[simp]

                      Applying the transported tensor conjugation twice gives back the input.

                      @[simp]

                      The exact fixed locus is the image of the real inclusion w ↦ e (1 ⊗ w).

                      A conjugate-linear map fixing the real inclusion is uniquely the transported conjugation. No involutivity assumption on the competing map is necessary.

                      theorem LinearEquiv.conjugationOfComplexification_natural {V : Type u_1} [AddCommGroup V] [Module ℂ V] {W : Type u_2} {W' : Type u_3} {V' : Type u_4} [AddCommGroup W] [Module ℝ W] [AddCommGroup W'] [Module ℝ W'] [AddCommGroup V'] [Module ℂ V'] (e : TensorProduct ℝ ℂ W ≃ₗ[ℂ] V) (e' : TensorProduct ℝ ℂ W' ≃ₗ[ℂ] V') (A : V →ₗ[ℂ] V') (b : W →ₗ[ℝ] W') (hreal : ∀ (w : W), A (e (1 ⊗ₜ[ℝ] w)) = e' (1 ⊗ₜ[ℝ] b w)) (v : V) :

                      Transported conjugation is natural under complex-linear maps carrying the real inclusions to each other. The map between the real carriers need not be invertible.