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_part
andimaginary_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}
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 quaternion
s.
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_adjoint
s.
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.