The complex numbers #
The complex numbers are modelled as ℝ^2 in the obvious way and it is shown that they form a field
of characteristic zero. The result that the complex numbers are algebraically closed, see
FieldTheory.AlgebraicClosure
.
Definition and basic arithmetic #
Equations
- termℂ = Lean.ParserDescr.node `termℂ 1024 (Lean.ParserDescr.symbol "ℂ")
Instances For
Equations
The natural inclusion of the real numbers into the complex numbers.
The name Complex.ofReal
is reserved for the bundled homomorphism.
Equations
- ↑r = { re := r, im := 0 }
Instances For
Equations
- Complex.instCoeRealComplex = { coe := Complex.ofReal' }
Equations
The product of a set on the real axis and a set on the imaginary axis of the complex plane,
denoted by s ×ℂ t
.
Equations
- s ×ℂ t = Complex.re ⁻¹' s ∩ Complex.im ⁻¹' t
Instances For
Equations
- Complex.«term_×ℂ_» = Lean.ParserDescr.trailingNode `Complex.term_×ℂ_ 72 72 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ×ℂ ") (Lean.ParserDescr.cat `term 73))
Instances For
Equations
- Complex.instInhabitedComplex = { default := 0 }
Equations
- Complex.instAddComplex = { add := fun z w => { re := z.re + w.re, im := z.im + w.im } }
Equations
- Complex.instNegComplex = { neg := fun z => { re := -z.re, im := -z.im } }
Equations
- Complex.instSubComplex = { sub := fun z w => { re := z.re - w.re, im := z.im - w.im } }
Commutative ring instance and lemmas #
Equations
- Complex.Complex.addGroupWithOne = let src := Complex.addCommGroup; AddGroupWithOne.mk SubNegMonoid.zsmul Complex.Complex.addGroupWithOne.proof_7
Equations
This shortcut instance ensures we do not find Ring
via the noncomputable Complex.field
instance.
Equations
- Complex.instRingComplex = inferInstance
This shortcut instance ensures we do not find CommSemiring
via the noncomputable
Complex.field
instance.
Equations
- Complex.instCommSemiringComplex = inferInstance
This shortcut instance ensures we do not find Semiring
via the noncomputable
Complex.field
instance.
Equations
- Complex.instSemiringComplex = inferInstance
The "real part" map, considered as an additive group homomorphism.
Equations
- Complex.reAddGroupHom = { toZeroHom := { toFun := Complex.re, map_zero' := Complex.zero_re }, map_add' := Complex.add_re }
Instances For
The "imaginary part" map, considered as an additive group homomorphism.
Equations
- Complex.imAddGroupHom = { toZeroHom := { toFun := Complex.im, map_zero' := Complex.zero_im }, map_add' := Complex.add_im }
Instances For
Complex conjugation #
This defines the complex conjugate as the star
operation of the StarRing ℂ
. It
is recommended to use the ring endomorphism version starRingEnd
, available under the
notation conj
in the locale ComplexConjugate
.
Equations
- One or more equations did not get rendered due to their size.
Norm squared #
The norm squared function.
Equations
- Complex.normSq = { toZeroHom := { toFun := fun z => z.re * z.re + z.im * z.im, map_zero' := Complex.normSq.proof_1 }, map_one' := Complex.normSq.proof_2, map_mul' := Complex.normSq.proof_3 }
Instances For
Inversion #
Equations
- Complex.instInvComplex = { inv := fun z => ↑(starRingEnd ℂ) z * ↑(↑Complex.normSq z)⁻¹ }
Equations
- Complex.instRatCastComplex = { ratCast := Rat.castRec }
Cast lemmas #
Field instance and lemmas #
Equations
- Complex.instField = Field.mk zpowRec (@Complex.mul_inv_cancel) Complex.inv_zero fun n z => n • z
Characteristic zero #
A complex number z
plus its conjugate conj z
is 2
times its real part.
A complex number z
minus its conjugate conj z
is 2i
times its imaginary part.
Absolute value #
The complex absolute value function, defined as the square root of the norm squared.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Cauchy sequences #
The real part of a complex Cauchy sequence, as a real Cauchy sequence.
Equations
- Complex.cauSeqRe f = { val := fun n => (↑f n).re, property := (_ : IsCauSeq abs fun n => (↑f n).re) }
Instances For
The imaginary part of a complex Cauchy sequence, as a real Cauchy sequence.
Equations
- Complex.cauSeqIm f = { val := fun n => (↑f n).im, property := (_ : IsCauSeq abs fun n => (↑f n).im) }
Instances For
The limit of a Cauchy sequence of complex numbers.
Equations
- Complex.limAux f = { re := CauSeq.lim (Complex.cauSeqRe f), im := CauSeq.lim (Complex.cauSeqIm f) }
Instances For
The complex conjugate of a complex Cauchy sequence, as a complex Cauchy sequence.
Equations
- Complex.cauSeqConj f = { val := fun n => ↑(starRingEnd ℂ) (↑f n), property := (_ : IsCauSeq ↑Complex.abs fun n => ↑(starRingEnd ℂ) (↑f n)) }
Instances For
The absolute value of a complex Cauchy sequence, as a real Cauchy sequence.
Equations
- Complex.cauSeqAbs f = { val := ↑Complex.abs ∘ ↑f, property := (_ : IsCauSeq abs (↑Complex.abs ∘ ↑f)) }