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 fromAtoM. 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 fromAtoAform a lie algebra overR.
and RingTheory.Derivation.ToSquareZero for
derivation_to_square_zero_equiv_lift: TheR-derivations fromAinto a square-zero idealIofBcorresponds to the liftsA →ₐ[R] Bof 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 = let __src := (↑e).compDer; { toLinearMap := __src, 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 ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯