Derivations #
This file defines derivation. A derivation D
from the R
-algebra A
to the A
-module M
is an
R
-linear map that satisfy the Leibniz rule D (a * b) = a * D b + D a * b
.
Main results #
Derivation
: The type ofR
-derivations fromA
toM
. This has anA
-module structure.Derivation.llcomp
: We may compose linear maps and derivations to obtain a derivation, and the composition is bilinear.
See RingTheory.Derivation.Lie
for
derivation.lie_algebra
: TheR
-derivations fromA
toA
form a lie algebra overR
.
and RingTheory.Derivation.ToSquareZero
for
derivationToSquareZeroEquivLift
: TheR
-derivations fromA
into a square-zero idealI
ofB
corresponds to the liftsA →ₐ[R] B
of the mapA →ₐ[R] B ⧸ I
.
Future project #
- Generalize derivations into bimodules.
D : Derivation R A M
is an R
-linear map from A
to M
that satisfies the leibniz
equality. We also require that D 1 = 0
. See Derivation.mk'
for a constructor that deduces this
assumption from the Leibniz rule when M
is cancellative.
TODO: update this when bimodules are defined.
- toFun : A → M
- map_smul' : ∀ (m : R) (x : A), (↑self).toFun (m • x) = (RingHom.id R) m • (↑self).toFun x
- map_one_eq_zero' : ↑self 1 = 0
Instances For
Equations
- Derivation.instFunLike = { coe := fun (D : Derivation R A M) => (↑D).toFun, coe_injective' := ⋯ }
Equations
- ⋯ = ⋯
See Note [custom simps projection]
Equations
- Derivation.Simps.apply D = ⇑D
Instances For
Equations
- Derivation.hasCoeToLinearMap = { coe := fun (D : Derivation R A M) => ↑D }
If adjoin of a set is the whole algebra, then any two derivations equal on this set are equal on the whole algebra.
Equations
- Derivation.instZero = { zero := { toLinearMap := 0, map_one_eq_zero' := ⋯, leibniz' := ⋯ } }
Equations
- Derivation.instAdd = { add := fun (D1 D2 : Derivation R A M) => { toLinearMap := ↑D1 + ↑D2, map_one_eq_zero' := ⋯, leibniz' := ⋯ } }
Equations
- Derivation.instInhabited = { default := 0 }
Equations
- Derivation.instSMul = { smul := fun (r : S) (D : Derivation R A M) => { toLinearMap := r • ↑D, map_one_eq_zero' := ⋯, leibniz' := ⋯ } }
Equations
- Derivation.instAddCommMonoid = Function.Injective.addCommMonoid DFunLike.coe ⋯ ⋯ ⋯ ⋯
coe_fn
as an AddMonoidHom
.
Equations
- Derivation.coeFnAddMonoidHom = { toFun := DFunLike.coe, map_zero' := ⋯, map_add' := ⋯ }
Instances For
Equations
- Derivation.instDistribMulAction = Function.Injective.distribMulAction Derivation.coeFnAddMonoidHom ⋯ ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- Derivation.instModule = Function.Injective.module S Derivation.coeFnAddMonoidHom ⋯ ⋯
We can push forward derivations using linear maps, i.e., the composition of a derivation with a linear map is a derivation. Furthermore, this operation is linear on the spaces of derivations.
Equations
- f.compDer = { toFun := fun (D : Derivation R A M) => { toLinearMap := ↑R f ∘ₗ ↑D, map_one_eq_zero' := ⋯, leibniz' := ⋯ }, map_add' := ⋯, map_smul' := ⋯ }
Instances For
The composition of a derivation with a linear map as a bilinear map
Equations
Instances For
Pushing a derivation forward through a linear equivalence is an equivalence.
Equations
- e.compDer = { toLinearMap := (↑e).compDer, invFun := ⇑(↑e.symm).compDer, left_inv := ⋯, right_inv := ⋯ }
Instances For
For a tower R → A → B
and an R
-derivation B → M
, we may compose with A → B
to obtain an
R
-derivation A → M
.
Equations
- Derivation.compAlgebraMap A d = { toLinearMap := ↑d ∘ₗ (IsScalarTower.toAlgHom R A B).toLinearMap, map_one_eq_zero' := ⋯, leibniz' := ⋯ }
Instances For
If A
is both an R
-algebra and an S
-algebra; M
is both an R
-module and an S
-module,
then an S
-derivation A → M
is also an R
-derivation if it is also R
-linear.
Equations
- Derivation.restrictScalars R d = { toLinearMap := ↑R ↑d, map_one_eq_zero' := ⋯, leibniz' := ⋯ }
Instances For
Define Derivation R A M
from a linear map when M
is cancellative by verifying the Leibniz
rule.
Equations
- Derivation.mk' D h = { toLinearMap := D, map_one_eq_zero' := ⋯, leibniz' := h }
Instances For
Alias of Derivation.map_natCast
.
Alias of Derivation.map_intCast
.
Equations
- Derivation.instNeg = { neg := fun (D : Derivation R A M) => Derivation.mk' (-↑D) ⋯ }
Equations
- Derivation.instSub = { sub := fun (D1 D2 : Derivation R A M) => Derivation.mk' (↑D1 - ↑D2) ⋯ }
Equations
- Derivation.instAddCommGroup = Function.Injective.addCommGroup DFunLike.coe ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯