File: Mathlib/Algebra/Polynomial/Derivation.lean

full_name: Polynomial.derivative'
code: /-- `Polynomial.derivative` as a derivation. -/
@[simps]
def derivative' : Derivation R R[X] R[X] 
goal: Derivation R (Polynomial R) (Polynomial R)

full_name: Polynomial.derivative'_apply
code: /-- `Polynomial.derivative` as a derivation. -/
@[simps]
def derivative' : Derivation R R[X] R[X] 
goal: Polynomial.derivative' a = Polynomial.derivative a

full_name: Polynomial.derivation_C
code: @[simp]
theorem derivation_C (D : Derivation R R[X] A) (a : R) : D (C a) = 0 
goal: D (Polynomial.C a) = 0

full_name: Polynomial.C_smul_derivation_apply
code: @[simp]
theorem C_smul_derivation_apply (D : Derivation R R[X] A) (a : R) (f : R[X]) :
    C a • D f = a • D f 
goal: Polynomial.C a • D f = a • D f

full_name: Polynomial.derivation_ext
code: @[ext]
theorem derivation_ext {D₁ D₂ : Derivation R R[X] A} (h : D₁ X = D₂ X) : D₁ = D₂ 
goal: D₁ = D₂

full_name: Polynomial.mkDerivation
code: /-- The derivation on `R[X]` that takes the value `a` on `X`. -/
def mkDerivation : A →ₗ[R] Derivation R R[X] A 
goal: A →ₗ[R] Derivation R (Polynomial R) A

full_name: Polynomial.mkDerivation_apply
code: lemma mkDerivation_apply (a : A) (f : R[X]) :
    mkDerivation R a f = derivative f • a 
goal: ((Polynomial.mkDerivation R) a) f = Polynomial.derivative f • a

full_name: Polynomial.mkDerivation_X
code: @[simp]
theorem mkDerivation_X (a : A) : mkDerivation R a X = a 
goal: ((Polynomial.mkDerivation R) a) Polynomial.X = a

full_name: Polynomial.mkDerivation_one_eq_derivative'
code: lemma mkDerivation_one_eq_derivative' : mkDerivation R (1 : R[X]) = derivative' 
goal: (Polynomial.mkDerivation R) 1 = Polynomial.derivative'

full_name: Polynomial.mkDerivation_one_eq_derivative
code: lemma mkDerivation_one_eq_derivative (f : R[X]) : mkDerivation R (1 : R[X]) f = derivative f 
goal: ((Polynomial.mkDerivation R) 1) f = Polynomial.derivative f

full_name: Polynomial.mkDerivationEquiv
code: /-- `Polynomial.mkDerivation` as a linear equivalence. -/
def mkDerivationEquiv : A ≃ₗ[R] Derivation R R[X] A 
goal: A ≃ₗ[R] Derivation R (Polynomial R) A

full_name: Polynomial.mkDerivationEquiv_apply
code: @[simp] lemma mkDerivationEquiv_apply (a : A) :
    mkDerivationEquiv R a = mkDerivation R a 
goal: (Polynomial.mkDerivationEquiv R) a = (Polynomial.mkDerivation R) a

full_name: Polynomial.mkDerivationEquiv_symm_apply
code: @[simp] lemma mkDerivationEquiv_symm_apply (D : Derivation R R[X] A) :
    (mkDerivationEquiv R).symm D = D X 
goal: (Polynomial.mkDerivationEquiv R).symm D = D Polynomial.X

full_name: Derivation.compAEval
code: /--
For a derivation `d : A → M` and an element `a : A`, `d.compAEval a` is the
derivation of `R[X]` which takes a polynomial `f` to `d(aeval a f)`.

This derivation takes values in `Module.AEval R M a`, which is `M`, regarded as an
`R[X]`-module, with the action of a polynomial `f` defined by `f • m = (aeval a f) • m`.
-/
/-
Note: `compAEval` is not defined using `Derivation.compAlgebraMap`.
This because `A` is not an `R[X]` algebra and it would be messy to create an algebra instance
within the definition.
-/
@[simps]
def compAEval : Derivation R R[X] <| AEval R M a 
goal: Derivation R (Polynomial R) (Module.AEval R M a)

full_name: Derivation.compAEval_apply
code: /--
For a derivation `d : A → M` and an element `a : A`, `d.compAEval a` is the
derivation of `R[X]` which takes a polynomial `f` to `d(aeval a f)`.

This derivation takes values in `Module.AEval R M a`, which is `M`, regarded as an
`R[X]`-module, with the action of a polynomial `f` defined by `f • m = (aeval a f) • m`.
-/
/-
Note: `compAEval` is not defined using `Derivation.compAlgebraMap`.
This because `A` is not an `R[X]` algebra and it would be messy to create an algebra instance
within the definition.
-/
@[simps]
def compAEval : Derivation R R[X] <| AEval R M a 
goal: (d.compAEval a) f = (Module.AEval.of R M a) (d ((Polynomial.aeval a) f))

full_name: Derivation.compAEval_eq
code: /--
  A form of the chain rule: if `f` is a polynomial over `R`
  and `d : A → M` is an `R`-derivation then for all `a : A` we have
  $$ d(f(a)) = f' (a) d a. $$
  The equation is in the `R[X]`-module `Module.AEval R M a`.
  For the same equation in `M`, see `Derivation.compAEval_eq`.
-/
theorem compAEval_eq (d : Derivation R A M) (f : R[X]) :
    d.compAEval a f = derivative f • (AEval.of R M a (d a)) 
goal: (d.compAEval a) f = Polynomial.derivative f • (Module.AEval.of R M a) (d a)

full_name: Derivation.comp_aeval_eq
code: /--
  A form of the chain rule: if `f` is a polynomial over `R`
  and `d : A → M` is an `R`-derivation then for all `a : A` we have
  $$ d(f(a)) = f' (a) d a. $$
  The equation is in `M`. For the same equation in `Module.AEval R M a`,
  see `Derivation.compAEval_eq`.
-/
theorem comp_aeval_eq (d : Derivation R A M) (f : R[X]) :
    d (aeval a f) = aeval a (derivative f) • d a 
goal: d ((Polynomial.aeval a) f) = (Polynomial.aeval a) (Polynomial.derivative f) • d a