Dual numbers #
The dual numbers over R
are of the form a + bε
, where a
and b
are typically elements of a
commutative ring R
, and ε
is a symbol satisfying ε^2 = 0
that commutes with every other
element. They are a special case of TrivSqZeroExt R M
with M = R
.
Notation #
In the DualNumber
locale:
R[ε]
is a shorthand forDualNumber R
ε
is a shorthand forDualNumber.eps
Main definitions #
Implementation notes #
Rather than duplicating the API of TrivSqZeroExt
, this file reuses the functions there.
References #
The type of dual numbers, numbers of the form $a + bε$ where $ε^2 = 0$.
R[ε]
is notation for DualNumber R
.
Equations
- DualNumber R = TrivSqZeroExt R R
Instances For
The unit element $ε$ that squares to zero, with notation ε
.
Equations
- DualNumber.eps = TrivSqZeroExt.inr 1
Instances For
The unit element $ε$ that squares to zero, with notation ε
.
Equations
- DualNumber.termε = Lean.ParserDescr.node `DualNumber.termε 1024 (Lean.ParserDescr.symbol "ε")
Instances For
The type of dual numbers, numbers of the form $a + bε$ where $ε^2 = 0$.
R[ε]
is notation for DualNumber R
.
Equations
- DualNumber.«term_[ε]» = Lean.ParserDescr.trailingNode `DualNumber.term_[ε] 1024 1024 (Lean.ParserDescr.symbol "[ε]")
Instances For
A version of TrivSqZeroExt.snd_mul
with *
instead of •
.
ε
commutes with every element of the algebra.
ε
commutes with every element of the algebra.
For two R
-algebra morphisms out of A[ε]
to agree, it suffices for them to agree on the
elements of A
and the A
-multiples of ε
.
For two R
-algebra morphisms out of R[ε]
to agree, it suffices for them to agree on ε
.
A universal property of the dual numbers, providing a unique A[ε] →ₐ[R] B
for every map
f : A →ₐ[R] B
and a choice of element e : B
which squares to 0
and commutes with the range of
f
.
This isomorphism is named to match the similar Complex.lift
.
Note that when f : R →ₐ[R] B := Algebra.ofId R B
, the commutativity assumption is automatic, and
we are free to choose any element e : B
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
When applied to inl
, DualNumber.lift
applies the map f : A →ₐ[R] B
.
Scaling on the left is sent by DualNumber.lift
to multiplication on the left
Scaling on the right is sent by DualNumber.lift
to multiplication on the right
When applied to ε
, DualNumber.lift
produces the element of B
that squares to 0.
Lifting DualNumber.eps
itself gives the identity.
Show DualNumber with values x and y as an "x + y*ε" string
Equations
- One or more equations did not get rendered due to their size.