Complex number as a vector space over ℝ #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
This file contains the following instances:
- Any
•-structure (has_smul,mul_action,distrib_mul_action,module,algebra) onℝimbues a corresponding structure onℂ. This includes the statement thatℂis anℝalgebra. - any complex vector space is a real vector space;
- any finite dimensional complex vector space is a finite dimensional real vector space;
- the space of
ℝ-linear maps from a real vector space to a complex vector space is a complex vector space.
It also defines bundled versions of four standard maps (respectively, the real part, the imaginary
part, the embedding of ℝ in ℂ, and the complex conjugate):
complex.re_lm(ℝ-linear map);complex.im_lm(ℝ-linear map);complex.of_real_am(ℝ-algebra (homo)morphism);complex.conj_ae(ℝ-algebra equivalence).
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 real_part and imaginary_part for any
element of a star_module over ℂ.
Notation #
ℜandℑfor thereal_partandimaginary_part, respectively, in the localecomplex_star_module.
Equations
- complex.mul_action = {to_has_smul := complex.has_smul mul_action.to_has_smul, one_smul := _, mul_smul := _}
Equations
Equations
Equations
Equations
- complex.algebra = {to_has_smul := {smul := has_smul.smul complex.has_smul}, to_ring_hom := {to_fun := (complex.of_real.comp (algebra_map R ℝ)).to_fun, map_one' := _, map_mul' := _, map_zero' := _, map_add' := _}, commutes' := _, smul_def' := _}
We need this lemma since complex.coe_algebra_map diverts the simp-normal form away from
alg_hom.commutes.
ℂ has a basis over ℝ given by 1 and I.
Equations
- complex.basis_one_I = basis.of_equiv_fun {to_fun := λ (z : ℂ), ![z.re, z.im], map_add' := complex.basis_one_I._proof_1, map_smul' := complex.basis_one_I._proof_2, inv_fun := λ (c : fin 2 → ℝ), ↑(c 0) + c 1 • complex.I, left_inv := complex.basis_one_I._proof_5, right_inv := complex.basis_one_I._proof_6}
fact version of the dimension of ℂ over ℝ, locally useful in the definition of the
circle.
Equations
The scalar action of ℝ on a ℂ-module E induced by module.complex_to_real commutes with
another scalar action of M on E whenever the action of ℂ commutes with the action of M.
ℝ-algebra morphism version of the canonical embedding of ℝ in ℂ.
Equations
ℝ-algebra isomorphism version of the complex conjugation function from ℂ to ℂ
Equations
- complex.conj_ae = {to_fun := (star_ring_end ℂ).to_fun, inv_fun := ⇑(star_ring_end ℂ), left_inv := complex.conj_ae._proof_1, right_inv := complex.conj_ae._proof_2, map_mul' := complex.conj_ae._proof_3, map_add' := complex.conj_ae._proof_4, commutes' := complex.conj_of_real}
The identity and the complex conjugation are the only two ℝ-algebra homomorphisms of ℂ.
The natural add_equiv from ℂ to ℝ × ℝ.
Equations
- complex.equiv_real_prod_add_hom = {to_fun := complex.equiv_real_prod.to_fun, inv_fun := complex.equiv_real_prod.inv_fun, left_inv := complex.equiv_real_prod_add_hom._proof_1, right_inv := complex.equiv_real_prod_add_hom._proof_2, map_add' := complex.equiv_real_prod_add_hom._proof_3}
The natural linear_equiv from ℂ to ℝ × ℝ.
Equations
- complex.equiv_real_prod_lm = {to_fun := complex.equiv_real_prod_add_hom.to_fun, map_add' := complex.equiv_real_prod_lm._proof_1, map_smul' := complex.equiv_real_prod_lm._proof_2, inv_fun := complex.equiv_real_prod_add_hom.inv_fun, left_inv := complex.equiv_real_prod_lm._proof_3, right_inv := complex.equiv_real_prod_lm._proof_4}
There is an alg_hom from ℂ to any ℝ-algebra with an element that squares to -1.
See complex.lift for this as an equiv.
Equations
- complex.lift_aux I' hf = alg_hom.of_linear_map ((algebra.of_id ℝ A).to_linear_map.comp complex.re_lm + (linear_map.to_span_singleton ℝ A I').comp complex.im_lm) _ _
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.
Create a self_adjoint element from a skew_adjoint element by multiplying by the scalar
-complex.I.
The real part ℜ a of an element a of a star module over ℂ, as a linear map. This is just
self_adjoint_part ℝ, but we provide it as a separate definition in order to link it with lemmas
concerning the imaginary_part, which doesn't exist in star modules over other rings.
Equations
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 self_adjoint
and skew_adjoint parts, but in a star module over ℂ we have
real_part_add_I_smul_imaginary_part, which allows us to decompose into a linear combination of
self_adjoints.
Equations
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.