Documentation

Mathlib.LinearAlgebra.Complex.Module

Complex number as a vector space over ℝ #

This file contains the following instances:

It also defines bundled versions of four standard maps (respectively, the real part, the imaginary part, the embedding of ℝ in ℂ, and the complex conjugate):

It also provides a universal property of the complex numbers Complex.lift, which constructs a ℂ →ₐ[ℝ] A into any ℝ-algebra A given a square root of -1.

In addition, this file provides a decomposition into realPart and imaginaryPart for any element of a StarModule over ℂ.

Notation #

@[instance 90]
instance Complex.instSMulCommClassOfReal {R : Type u_1} {S : Type u_2} [SMul R ℝ] [SMul S ℝ] [SMulCommClass R S ℝ] :
@[instance 90]
instance Complex.instIsScalarTowerOfReal {R : Type u_1} {S : Type u_2} [SMul R S] [SMul R ℝ] [SMul S ℝ] [IsScalarTower R S ℝ] :
@[instance_reducible, instance 90]
instance Complex.mulAction {R : Type u_1} [Monoid R] [MulAction R ℝ] :
Equations
@[instance_reducible, instance 90]
Equations
@[instance_reducible, instance 90]
Equations
@[instance_reducible, instance 100]
instance Complex.instModule {R : Type u_1} [Semiring R] [Module R ℝ] :
Equations
@[instance_reducible, instance 95]
Equations
@[simp]
theorem AlgHom.map_coe_real_complex {A : Type u_3} [Semiring A] [Algebra ℝ A] (f : ℂ →ₐ[ℝ] A) (x : ℝ) :
f ↑x = (algebraMap ℝ A) x

We need this lemma since Complex.coe_algebraMap diverts the simp-normal form away from AlgHom.commutes.

theorem Complex.algHom_ext {A : Type u_3} [Semiring A] [Algebra ℝ A] ⦃f g : ℂ →ₐ[ℝ] A⦄ (h : f I = g I) :
f = g

Two ℝ-algebra homomorphisms from ℂ are equal if they agree on Complex.I.

theorem Complex.algHom_ext_iff {A : Type u_3} [Semiring A] [Algebra ℝ A] {f g : ℂ →ₐ[ℝ] A} :
f = g ↔ f I = g I
noncomputable def Complex.basisOneI :

ℂ has a basis over ℝ given by 1 and I.

Equations
  • One or more equations did not get rendered due to their size.
Instances For
    @[simp]
    @[instance_reducible, instance 900]
    instance Module.complexToReal (E : Type u_1) [AddCommGroup E] [Module ℂ E] :

    Register as an instance (with low priority) the fact that a complex vector space is also a real vector space.

    Equations
    @[instance_reducible, instance 900]
    instance Algebra.complexToReal {A : Type u_1} [Semiring A] [Algebra ℂ A] :

    Register as an instance (with low priority) the fact that a complex algebra is also a real algebra.

    Equations
    @[simp]
    theorem Complex.coe_smul {E : Type u_1} [AddCommGroup E] [Module ℂ E] (x : ℝ) (y : E) :
    ↑x • y = x • y
    @[instance 900]
    instance SMulCommClass.complexToReal {M : Type u_1} {E : Type u_2} [AddCommGroup E] [Module ℂ E] [SMul M E] [SMulCommClass ℂ M E] :

    The scalar action of ℝ on a ℂ-module E induced by Module.complexToReal commutes with another scalar action of M on E whenever the action of ℂ commutes with the action of M.

    The scalar action of ℝ on a ℂ-module E induced by Module.complexToReal associates with another scalar action of M on E whenever the action of ℂ associates with the action of M.

    @[instance 900]

    Linear map version of the real part function, from ℂ to ℝ.

    Equations
    Instances For
      @[simp]

      Linear map version of the imaginary part function, from ℂ to ℝ.

      Equations
      Instances For
        @[simp]

        ℝ-algebra morphism version of the canonical embedding of ℝ in ℂ.

        Equations
        Instances For

          ℝ-algebra isomorphism version of the complex conjugation function from ℂ to ℂ

          Equations
          • One or more equations did not get rendered due to their size.
          Instances For
            @[simp]

            The matrix representation of conjAe.

            The identity and the complex conjugation are the only two ℝ-algebra homomorphisms of ℂ.

            The natural LinearEquiv from ℂ to ℝ × ℝ.

            Equations
            • One or more equations did not get rendered due to their size.
            Instances For
              @[simp]
              theorem Complex.equivRealProdLm_apply (a✝ : ℂ) :
              equivRealProdLm a✝ = (a✝.re, a✝.im)
              def Complex.liftAux {A : Type u_1} [Ring A] [Algebra ℝ A] (I' : A) (hf : I' * I' = -1) :

              There is an AlgHom from ℂ to any ℝ-algebra with an element that squares to -1.

              See Complex.lift for this as an equiv.

              Equations
              Instances For
                @[simp]
                theorem Complex.liftAux_apply {A : Type u_1} [Ring A] [Algebra ℝ A] (I' : A) (hI' : I' * I' = -1) (z : ℂ) :
                (liftAux I' hI') z = (algebraMap ℝ A) z.re + z.im • I'
                theorem Complex.liftAux_apply_I {A : Type u_1} [Ring A] [Algebra ℝ A] (I' : A) (hI' : I' * I' = -1) :
                (liftAux I' hI') I = I'
                @[simp]
                @[simp]
                theorem Complex.range_liftAux {A : Type u_1} [Ring A] [Algebra ℝ A] (I' : A) (hI' : I' * I' = -1) :
                (liftAux I' hI').range = ℝ[I']
                def Complex.lift {A : Type u_1} [Ring A] [Algebra ℝ A] :
                { I' : A // I' * I' = -1 } ≃ (ℂ →ₐ[ℝ] A)

                A universal property of the complex numbers, providing a unique ℂ →ₐ[ℝ] A for every element of A which squares to -1.

                This can be used to embed the complex numbers in the Quaternions.

                This isomorphism is named to match the very similar Zsqrtd.lift.

                Equations
                Instances For
                  @[simp]
                  theorem Complex.lift_symm_apply_coe {A : Type u_1} [Ring A] [Algebra ℝ A] (F : ℂ →ₐ[ℝ] A) :
                  ↑(lift.symm F) = F I
                  @[simp]
                  theorem Complex.lift_apply {A : Type u_1} [Ring A] [Algebra ℝ A] (I' : { I' : A // I' * I' = -1 }) :
                  lift I' = liftAux ↑I' ⋯
                  @[simp]

                  Create a selfAdjoint element from a skewAdjoint element by multiplying by the scalar -Complex.I.

                  Equations
                  Instances For
                    @[simp]
                    noncomputable def realPart {A : Type u_1} [AddCommGroup A] [Module ℂ A] [StarAddMonoid A] [StarModule ℂ A] :

                    The real part ℜ a of an element a of a star module over ℂ, as a linear map. This is just selfAdjointPart ℝ, but we provide it as a separate definition in order to link it with lemmas concerning the imaginaryPart, which doesn't exist in star modules over other rings.

                    Equations
                    Instances For
                      noncomputable def imaginaryPart {A : Type u_1} [AddCommGroup A] [Module ℂ A] [StarAddMonoid A] [StarModule ℂ A] :

                      The imaginary part ℑ a of an element a of a star module over ℂ, as a linear map into the self adjoint elements. In a general star module, we have a decomposition into the selfAdjoint and skewAdjoint parts, but in a star module over ℂ we have realPart_add_I_smul_imaginaryPart, which allows us to decompose into a linear combination of selfAdjoints.

                      Equations
                      Instances For

                        The real part ℜ a of an element a of a star module over ℂ, as a linear map. This is just selfAdjointPart ℝ, but we provide it as a separate definition in order to link it with lemmas concerning the imaginaryPart, which doesn't exist in star modules over other rings.

                        Equations
                        Instances For

                          The imaginary part ℑ a of an element a of a star module over ℂ, as a linear map into the self adjoint elements. In a general star module, we have a decomposition into the selfAdjoint and skewAdjoint parts, but in a star module over ℂ we have realPart_add_I_smul_imaginaryPart, which allows us to decompose into a linear combination of selfAdjoints.

                          Equations
                          Instances For
                            theorem realPart_apply_coe {A : Type u_1} [AddCommGroup A] [Module ℂ A] [StarAddMonoid A] [StarModule ℂ A] (a : A) :
                            ↑(realPart a) = 2⁻¹ • (a + star a)

                            The standard decomposition of ℜ a + Complex.I • ℑ a = a of an element of a star module over ℂ into a linear combination of self adjoint elements.

                            theorem realPart_smul {A : Type u_1} [AddCommGroup A] [Module ℂ A] [StarAddMonoid A] [StarModule ℂ A] (z : ℂ) (a : A) :
                            theorem IsSelfAdjoint.coe_realPart {A : Type u_1} [AddCommGroup A] [Module ℂ A] [StarAddMonoid A] [StarModule ℂ A] {x : A} (hx : IsSelfAdjoint x) :
                            ↑(realPart x) = x
                            @[simp]
                            theorem selfAdjoint.realPart_coe {A : Type u_1} [AddCommGroup A] [Module ℂ A] [StarAddMonoid A] [StarModule ℂ A] {x : ↥(selfAdjoint A)} :
                            realPart ↑x = x
                            theorem ComplexStarModule.ext {A : Type u_1} [AddCommGroup A] [Module ℂ A] [StarAddMonoid A] [StarModule ℂ A] {x y : A} (h₁ : realPart x = realPart y) (h₂ : imaginaryPart x = imaginaryPart y) :
                            x = y
                            theorem map_realPart {A : Type u_1} [AddCommGroup A] [Module ℂ A] [StarAddMonoid A] [StarModule ℂ A] {B : Type u_2} {F : Type u_3} [AddCommGroup B] [Module ℂ B] [StarAddMonoid B] [StarModule ℂ B] [FunLike F A B] [StarHomClass F A B] [LinearMapClass F ℂ A B] (f : F) (x : A) :
                            f ↑(realPart x) = ↑(realPart (f x))
                            theorem map_imaginaryPart {A : Type u_1} [AddCommGroup A] [Module ℂ A] [StarAddMonoid A] [StarModule ℂ A] {B : Type u_2} {F : Type u_3} [AddCommGroup B] [Module ℂ B] [StarAddMonoid B] [StarModule ℂ B] [FunLike F A B] [StarHomClass F A B] [LinearMapClass F ℂ A B] (f : F) (x : A) :
                            f ↑(imaginaryPart x) = ↑(imaginaryPart (f x))

                            The natural ℝ-linear equivalence between selfAdjoint ℂ and ℝ.

                            Equations
                            • One or more equations did not get rendered due to their size.
                            Instances For
                              @[simp]
                              theorem realPart_ofReal (r : ℝ) :
                              ↑(realPart ↑r) = ↑r
                              @[simp]
                              theorem imaginaryPart_ofReal (r : ℝ) :
                              theorem Complex.coe_realPart (z : ℂ) :
                              ↑(realPart z) = ↑z.re

                              An element in a non-unital star ℂ-algebra is normal if and only if its real and imaginary parts commute.

                              theorem realPart_mono {A : Type u_1} [NonUnitalRing A] [StarRing A] [PartialOrder A] [StarOrderedRing A] [Module ℂ A] [StarModule ℂ A] {a b : A} (hab : a ≤ b) :
                              @[simp]
                              theorem realPart_one {A : Type u_1} [Ring A] [StarRing A] [Module ℂ A] [StarModule ℂ A] :