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 of- R-derivations from- Ato- M. This has an- A-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: The- R-derivations from- Ato- Aform an lie algebra over- R.
and ring_theory.derivation.to_square_zero for
- derivation_to_square_zero_equiv_lift: The- R-derivations from- Ainto a square-zero ideal- Iof- Bcorresponds to the lifts- A →ₐ[R] Bof the map- A →ₐ[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