Derivations #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
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 ring_theory.derivation.lie
for
derivation.lie_algebra
: TheR
-derivations fromA
toA
form an lie algebra overR
.
and ring_theory.derivation.to_square_zero
for
derivation_to_square_zero_equiv_lift
: 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.
- to_linear_map : A →ₗ[R] M
- map_one_eq_zero' : ⇑(self.to_linear_map) 1 = 0
- leibniz' : ∀ (a b : A), ⇑(self.to_linear_map) (a * b) = a • ⇑(self.to_linear_map) b + b • ⇑(self.to_linear_map) a
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.
Instances for derivation
- derivation.has_smul
- derivation.distrib_mul_action
- derivation.module
- derivation.has_sizeof_inst
- derivation.add_monoid_hom_class
- derivation.has_coe_to_fun
- derivation.has_coe_to_linear_map
- derivation.has_zero
- derivation.has_add
- derivation.inhabited
- derivation.add_comm_monoid
- derivation.is_central_scalar
- derivation.is_scalar_tower
- derivation.smul_comm_class
- derivation.has_neg
- derivation.has_sub
- derivation.add_comm_group
- derivation.has_bracket
- derivation.lie_ring
- derivation.lie_algebra
- left_invariant_derivation.derivation.has_coe
Equations
- derivation.add_monoid_hom_class = {coe := λ (D : derivation R A M), D.to_linear_map.to_fun, coe_injective' := _, map_add := _, map_zero := _}
Helper instance for when there's too many metavariables to apply fun_like.has_coe_to_fun
directly.
Equations
- derivation.has_coe_to_fun = {coe := λ (D : derivation R A M), D.to_linear_map.to_fun}
Equations
- derivation.has_coe_to_linear_map = {coe := λ (D : derivation R A M), D.to_linear_map}
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.has_zero = {zero := {to_linear_map := 0, map_one_eq_zero' := _, leibniz' := _}}
Equations
- derivation.has_add = {add := λ (D1 D2 : derivation R A M), {to_linear_map := ↑D1 + ↑D2, map_one_eq_zero' := _, leibniz' := _}}
Equations
- derivation.inhabited = {default := 0}
Equations
- derivation.has_smul = {smul := λ (r : S) (D : derivation R A M), {to_linear_map := r • ↑D, map_one_eq_zero' := _, leibniz' := _}}
Equations
- derivation.add_comm_monoid = function.injective.add_comm_monoid coe_fn derivation.coe_injective derivation.coe_zero derivation.coe_add derivation.add_comm_monoid._proof_3
coe_fn
as an add_monoid_hom
.
Equations
- derivation.coe_fn_add_monoid_hom = {to_fun := coe_fn derivation.has_coe_to_fun, map_zero' := _, map_add' := _}
Equations
- derivation.module = function.injective.module S derivation.coe_fn_add_monoid_hom derivation.coe_injective derivation.module._proof_1
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.comp_der = {to_fun := λ (D : derivation R A M), {to_linear_map := ↑f.comp ↑D, map_one_eq_zero' := _, leibniz' := _}, map_add' := _, map_smul' := _}
The composition of a derivation with a linear map as a bilinear map
Pushing a derivation foward through a linear equivalence is an equivalence.
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.restrict_scalars R d = {to_linear_map := linear_map.restrict_scalars R d.to_linear_map, map_one_eq_zero' := _, leibniz' := _}
Define derivation R A M
from a linear map when M
is cancellative by verifying the Leibniz
rule.
Equations
- derivation.mk' D h = {to_linear_map := D, map_one_eq_zero' := _, leibniz' := h}
Equations
- derivation.has_neg = {neg := λ (D : derivation R A M), derivation.mk' (-↑D) _}
Equations
- derivation.has_sub = {sub := λ (D1 D2 : derivation R A M), derivation.mk' (↑D1 - ↑D2) _}
Equations
- derivation.add_comm_group = function.injective.add_comm_group coe_fn derivation.add_comm_group._proof_3 derivation.add_comm_group._proof_4 derivation.add_comm_group._proof_5 derivation.coe_neg derivation.coe_sub derivation.add_comm_group._proof_6 derivation.add_comm_group._proof_7