Documentation

Mathlib.Algebra.Polynomial.Derivative

The derivative map on polynomials #

Main definitions #

derivative p is the formal derivative of the polynomial p

Equations
    Instances For
      theorem Polynomial.derivative_apply {R : Type u} [Semiring R] (p : Polynomial R) :
      derivative p = p.sum fun (n : β„•) (a : R) => C (a * ↑n) * X ^ (n - 1)
      theorem Polynomial.coeff_derivative {R : Type u} [Semiring R] (p : Polynomial R) (n : β„•) :
      (derivative p).coeff n = p.coeff (n + 1) * (↑n + 1)
      theorem Polynomial.derivative_monomial {R : Type u} [Semiring R] (a : R) (n : β„•) :
      derivative ((monomial n) a) = (monomial (n - 1)) (a * ↑n)
      @[simp]
      theorem Polynomial.derivative_monomial_succ {R : Type u} [Semiring R] (a : R) (n : β„•) :
      derivative ((monomial (n + 1)) a) = (monomial n) (a * (↑n + 1))
      theorem Polynomial.derivative_C_mul_X_pow {R : Type u} [Semiring R] (a : R) (n : β„•) :
      derivative (C a * X ^ n) = C (a * ↑n) * X ^ (n - 1)
      theorem Polynomial.derivative_X_pow {R : Type u} [Semiring R] (n : β„•) :
      derivative (X ^ n) = C ↑n * X ^ (n - 1)
      @[simp]
      theorem Polynomial.derivative_X_pow_succ {R : Type u} [Semiring R] (n : β„•) :
      derivative (X ^ (n + 1)) = C (↑n + 1) * X ^ n
      @[simp]
      theorem Polynomial.derivative_C {R : Type u} [Semiring R] {a : R} :
      derivative (C a) = 0
      theorem Polynomial.derivative_sum {R : Type u} {ΞΉ : Type y} [Semiring R] {s : Finset ΞΉ} {f : ΞΉ β†’ Polynomial R} :
      derivative (βˆ‘ b ∈ s, f b) = βˆ‘ b ∈ s, derivative (f b)
      theorem Polynomial.iterate_derivative_sum {R : Type u} {ΞΉ : Type y} [Semiring R] (k : β„•) (s : Finset ΞΉ) (f : ΞΉ β†’ Polynomial R) :
      (⇑derivative)^[k] (βˆ‘ b ∈ s, f b) = βˆ‘ b ∈ s, (⇑derivative)^[k] (f b)
      @[simp]
      theorem Polynomial.iterate_derivative_smul {R : Type u} [Semiring R] {S : Type u_1} [SMulZeroClass S R] [IsScalarTower S R R] (s : S) (p : Polynomial R) (k : β„•) :
      (⇑derivative)^[k] (s β€’ p) = s β€’ (⇑derivative)^[k] p
      @[simp]
      theorem Polynomial.iterate_derivative_C_mul {R : Type u} [Semiring R] (a : R) (p : Polynomial R) (k : β„•) :
      (⇑derivative)^[k] (C a * p) = C a * (⇑derivative)^[k] p
      @[simp]
      theorem Polynomial.iterate_derivative_C {R : Type u} {a : R} [Semiring R] {k : β„•} (h : 0 < k) :
      (⇑derivative)^[k] (C a) = 0
      @[simp]
      theorem Polynomial.iterate_derivative_one {R : Type u} [Semiring R] {k : β„•} (h : 0 < k) :
      (⇑derivative)^[k] 1 = 0
      @[simp]
      theorem Polynomial.iterate_derivative_X {R : Type u} [Semiring R] {k : β„•} (h : 1 < k) :
      (⇑derivative)^[k] X = 0
      theorem Polynomial.derivative_eval {R : Type u} [Semiring R] (p : Polynomial R) (x : R) :
      eval x (derivative p) = p.sum fun (n : β„•) (a : R) => a * ↑n * x ^ (n - 1)
      @[simp]
      theorem Polynomial.derivative_map {R : Type u} {S : Type v} [Semiring R] [Semiring S] (p : Polynomial R) (f : R β†’+* S) :
      @[simp]
      theorem Polynomial.iterate_derivative_map {R : Type u} {S : Type v} [Semiring R] [Semiring S] (p : Polynomial R) (f : R β†’+* S) (k : β„•) :
      (⇑derivative)^[k] (map f p) = map f ((⇑derivative)^[k] p)
      @[simp]
      theorem Polynomial.iterate_derivative_natCast_mul {R : Type u} [Semiring R] {n k : β„•} {f : Polynomial R} :
      (⇑derivative)^[k] (↑n * f) = ↑n * (⇑derivative)^[k] f
      theorem Polynomial.iterate_derivative_eq_sum {R : Type u} [Semiring R] (p : Polynomial R) (k : β„•) :
      (⇑derivative)^[k] p = βˆ‘ x ∈ ((⇑derivative)^[k] p).support, C ((x + k).descFactorial k β€’ p.coeff (x + k)) * X ^ x
      theorem Polynomial.iterate_derivative_eq_factorial_smul_sum {R : Type u} [Semiring R] (p : Polynomial R) (k : β„•) :
      (⇑derivative)^[k] p = k.factorial β€’ βˆ‘ x ∈ ((⇑derivative)^[k] p).support, C ((x + k).choose k β€’ p.coeff (x + k)) * X ^ x
      theorem Polynomial.iterate_derivative_mul {R : Type u} [Semiring R] {n : β„•} (p q : Polynomial R) :
      (⇑derivative)^[n] (p * q) = βˆ‘ k ∈ Finset.range n.succ, n.choose k β€’ ((⇑derivative)^[n - k] p * (⇑derivative)^[k] q)

      Iterated derivatives as a finite support function.

      Equations
        Instances For
          @[simp]
          theorem Polynomial.derivativeFinsupp_apply_apply {R : Type u} [Semiring R] (p : Polynomial R) (x✝ : β„•) :
          (derivativeFinsupp p) x✝ = (⇑derivative)^[x✝] p
          @[deprecated Polynomial.derivativeFinsupp_apply_apply (since := "2025-12-15")]
          theorem Polynomial.derivativeFinsupp_apply_toFun {R : Type u} [Semiring R] (p : Polynomial R) (x✝ : β„•) :
          (derivativeFinsupp p) x✝ = (⇑derivative)^[x✝] p

          Alias of Polynomial.derivativeFinsupp_apply_apply.

          theorem Polynomial.derivative_pow_succ {R : Type u} [CommSemiring R] (p : Polynomial R) (n : β„•) :
          derivative (p ^ (n + 1)) = C (↑n + 1) * p ^ n * derivative p
          theorem Polynomial.derivative_pow {R : Type u} [CommSemiring R] (p : Polynomial R) (n : β„•) :
          derivative (p ^ n) = C ↑n * p ^ (n - 1) * derivative p
          theorem Polynomial.dvd_iterate_derivative_pow {R : Type u} [CommSemiring R] (f : Polynomial R) (n : β„•) {m : β„•} (c : R) (hm : m β‰  0) :
          ↑n ∣ eval c ((⇑derivative)^[m] (f ^ n))
          theorem Polynomial.derivative_X_add_C_pow {R : Type u} [CommSemiring R] (c : R) (m : β„•) :
          derivative ((X + C c) ^ m) = C ↑m * (X + C c) ^ (m - 1)
          theorem Polynomial.iterate_derivative_X_add_pow {R : Type u} [CommSemiring R] (n k : β„•) (c : R) :
          (⇑derivative)^[k] ((X + C c) ^ n) = n.descFactorial k β€’ (X + C c) ^ (n - k)
          theorem Polynomial.iterate_derivative_mul_X_pow {R : Type u} [CommSemiring R] (n m : β„•) (p : Polynomial R) :
          (⇑derivative)^[n] (p * X ^ m) = βˆ‘ k ∈ Finset.range (min m n).succ, (n.choose k * m.descFactorial k) β€’ ((⇑derivative)^[n - k] p * X ^ (m - k))
          theorem Polynomial.iterate_derivative_derivative_mul_X_sq {R : Type u} [CommSemiring R] {n : β„•} (p : Polynomial R) :
          (⇑derivative)^[n] ((⇑derivative)^[2] p * X ^ 2) = (⇑derivative)^[n + 2] p * X ^ 2 + (2 * n) β€’ (⇑derivative)^[n + 1] p * X + (n * (n - 1)) β€’ (⇑derivative)^[n] p

          Chain rule for formal derivative of polynomials.

          theorem Polynomial.derivative_prod {R : Type u} {ΞΉ : Type y} [CommSemiring R] [DecidableEq ΞΉ] {s : Multiset ΞΉ} {f : ΞΉ β†’ Polynomial R} :
          derivative (Multiset.map f s).prod = (Multiset.map (fun (i : ΞΉ) => (Multiset.map f (s.erase i)).prod * derivative (f i)) s).sum
          theorem Polynomial.derivative_prod_finset {R : Type u} {ΞΉ : Type y} [CommSemiring R] [DecidableEq ΞΉ] {s : Finset ΞΉ} {f : ΞΉ β†’ Polynomial R} :
          derivative (∏ b ∈ s, f b) = βˆ‘ a ∈ s, (∏ b ∈ s.erase a, f b) * derivative (f a)
          theorem Polynomial.iterate_derivative_sub {R : Type u} [Ring R] {k : β„•} {f g : Polynomial R} :
          (⇑derivative)^[k] (f - g) = (⇑derivative)^[k] f - (⇑derivative)^[k] g
          @[simp]
          theorem Polynomial.derivative_intCast {R : Type u} [Ring R] {n : β„€} :
          derivative ↑n = 0
          @[simp]
          theorem Polynomial.iterate_derivative_intCast_mul {R : Type u} [Ring R] {n : β„€} {k : β„•} {f : Polynomial R} :
          (⇑derivative)^[k] (↑n * f) = ↑n * (⇑derivative)^[k] f
          @[simp]
          theorem Polynomial.iterate_derivative_comp_one_sub_X {R : Type u} [CommRing R] (p : Polynomial R) (k : β„•) :
          (⇑derivative)^[k] (p.comp (1 - X)) = (-1) ^ k * ((⇑derivative)^[k] p).comp (1 - X)
          theorem Polynomial.eval_multiset_prod_X_sub_C_derivative {R : Type u} [CommRing R] [DecidableEq R] {S : Multiset R} {r : R} (hr : r ∈ S) :
          eval r (derivative (Multiset.map (fun (a : R) => X - C a) S).prod) = (Multiset.map (fun (a : R) => r - a) (S.erase r)).prod
          theorem Polynomial.derivative_X_sub_C_pow {R : Type u} [CommRing R] (c : R) (m : β„•) :
          derivative ((X - C c) ^ m) = C ↑m * (X - C c) ^ (m - 1)
          theorem Polynomial.derivative_X_sub_C_sq {R : Type u} [CommRing R] (c : R) :
          derivative ((X - C c) ^ 2) = C 2 * (X - C c)
          theorem Polynomial.iterate_derivative_X_sub_pow {R : Type u} [CommRing R] (n k : β„•) (c : R) :
          (⇑derivative)^[k] ((X - C c) ^ n) = n.descFactorial k β€’ (X - C c) ^ (n - k)
          theorem Polynomial.iterate_derivative_prod_X_sub_C {R : Type u} [CommRing R] {k : β„•} {S : Finset R} (hk : k ≀ S.card) :
          (⇑derivative)^[k] (∏ a ∈ S, (X - C a)) = ↑k.factorial * βˆ‘ T ∈ Finset.powersetCard (S.card - k) S, ∏ a ∈ T, (X - C a)