The derivative map on polynomials #
Main definitions #
Polynomial.derivative: The formal derivative of polynomials, expressed as a linear map.Polynomial.derivativeFinsupp: Iterated derivatives as a finite support function.
@[simp]
@[simp]
@[simp]
theorem
Polynomial.derivative_of_natDegree_zero
{R : Type u}
[Semiring R]
{p : Polynomial R}
(hp : p.natDegree = 0)
:
@[simp]
@[simp]
@[simp]
theorem
Polynomial.derivative_sum
{R : Type u}
{ΞΉ : Type y}
[Semiring R]
{s : Finset ΞΉ}
{f : ΞΉ β Polynomial R}
:
theorem
Polynomial.iterate_derivative_sum
{R : Type u}
{ΞΉ : Type y}
[Semiring R]
(k : β)
(s : Finset ΞΉ)
(f : ΞΉ β Polynomial R)
:
theorem
Polynomial.derivative_smul
{R : Type u}
[Semiring R]
{S : Type u_1}
[SMulZeroClass S R]
[IsScalarTower S R R]
(s : S)
(p : Polynomial R)
:
@[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 : β)
:
@[simp]
theorem
Polynomial.iterate_derivative_C_mul
{R : Type u}
[Semiring R]
(a : R)
(p : Polynomial R)
(k : β)
:
theorem
Polynomial.of_mem_support_derivative
{R : Type u}
[Semiring R]
{p : Polynomial R}
{n : β}
(h : n β (derivative p).support)
:
theorem
Polynomial.degree_derivative_lt
{R : Type u}
[Semiring R]
{p : Polynomial R}
(hp : p β 0)
:
theorem
Polynomial.natDegree_derivative_lt
{R : Type u}
[Semiring R]
{p : Polynomial R}
(hp : p.natDegree β 0)
:
theorem
Polynomial.natDegree_iterate_derivative
{R : Type u}
[Semiring R]
(p : Polynomial R)
(k : β)
:
@[simp]
@[simp]
theorem
Polynomial.iterate_derivative_eq_zero
{R : Type u}
[Semiring R]
{p : Polynomial R}
{x : β}
(hx : p.natDegree < x)
:
@[simp]
@[simp]
@[simp]
theorem
Polynomial.natDegree_eq_zero_of_derivative_eq_zero
{R : Type u}
[Semiring R]
[IsAddTorsionFree R]
{f : Polynomial R}
(h : derivative f = 0)
:
theorem
Polynomial.eq_C_of_derivative_eq_zero
{R : Type u}
[Semiring R]
[IsAddTorsionFree R]
{f : Polynomial R}
(h : derivative f = 0)
:
@[simp]
@[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 : β)
:
@[simp]
theorem
Polynomial.iterate_derivative_natCast_mul
{R : Type u}
[Semiring R]
{n k : β}
{f : Polynomial R}
:
theorem
Polynomial.mem_support_derivative
{R : Type u}
[Semiring R]
[IsAddTorsionFree R]
(p : Polynomial R)
(n : β)
:
@[simp]
theorem
Polynomial.degree_derivative_eq
{R : Type u}
[Semiring R]
[IsAddTorsionFree R]
(p : Polynomial R)
(hp : 0 < p.natDegree)
:
theorem
Polynomial.coeff_iterate_derivative
{R : Type u}
[Semiring R]
{k : β}
(p : Polynomial R)
(m : β)
:
theorem
Polynomial.iterate_derivative_eq_sum
{R : Type u}
[Semiring R]
(p : Polynomial R)
(k : β)
:
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β : β)
:
@[deprecated Polynomial.derivativeFinsupp_apply_apply (since := "2025-12-15")]
theorem
Polynomial.derivativeFinsupp_apply_toFun
{R : Type u}
[Semiring R]
(p : Polynomial R)
(xβ : β)
:
Alias of Polynomial.derivativeFinsupp_apply_apply.
@[simp]
theorem
Polynomial.support_derivativeFinsupp_subset_range
{R : Type u}
[Semiring R]
{p : Polynomial R}
{n : β}
(h : p.natDegree < n)
:
@[simp]
@[simp]
theorem
Polynomial.derivativeFinsupp_map
{R : Type u}
{S : Type v}
[Semiring R]
[Semiring S]
(p : Polynomial R)
(f : R β+* S)
:
derivativeFinsupp (map f p) = Finsupp.mapRange (fun (x : Polynomial R) => map f x) β― (derivativeFinsupp p)
theorem
Polynomial.pow_sub_one_dvd_derivative_of_pow_dvd
{R : Type u}
[CommSemiring R]
{p q : Polynomial R}
{n : β}
(dvd : q ^ n β£ p)
:
theorem
Polynomial.pow_sub_dvd_iterate_derivative_of_pow_dvd
{R : Type u}
[CommSemiring R]
{p q : Polynomial R}
{n : β}
(m : β)
(dvd : q ^ n β£ p)
:
theorem
Polynomial.pow_sub_dvd_iterate_derivative_pow
{R : Type u}
[CommSemiring R]
(p : Polynomial R)
(n m : β)
:
theorem
Polynomial.dvd_iterate_derivative_pow
{R : Type u}
[CommSemiring R]
(f : Polynomial R)
(n : β)
{m : β}
(c : R)
(hm : m β 0)
:
theorem
Polynomial.iterate_derivative_X_pow_eq_natCast_mul
{R : Type u}
[CommSemiring R]
(n k : β)
:
theorem
Polynomial.iterate_derivative_mul_X_pow
{R : Type u}
[CommSemiring R]
(n m : β)
(p : Polynomial R)
:
theorem
Polynomial.iterate_derivative_mul_X
{R : Type u}
[CommSemiring R]
{n : β}
(p : Polynomial R)
:
theorem
Polynomial.iterate_derivative_derivative_mul_X
{R : Type u}
[CommSemiring R]
{n : β}
(p : Polynomial R)
:
(βderivative)^[n] (derivative p * X) = (βderivative)^[n + 1] p * X + n β’ (βderivative)^[n] p
theorem
Polynomial.iterate_derivative_derivative_mul_X_sq
{R : Type u}
[CommSemiring R]
{n : β}
(p : Polynomial R)
:
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}
:
@[simp]
@[simp]
@[simp]
@[simp]
theorem
Polynomial.iterate_derivative_intCast_mul
{R : Type u}
[Ring R]
{n : β€}
{k : β}
{f : Polynomial R}
:
@[simp]
theorem
Polynomial.iterate_derivative_comp_one_sub_X
{R : Type u}
[CommRing R]
(p : Polynomial R)
(k : β)
:
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.iterate_derivative_eq_zero_of_degree_lt
{R : Type u}
[CommRing R]
{k : β}
{P : Polynomial R}
(h : P.degree < βk)
:
@[simp]
theorem
Polynomial.dvd_derivative_iff
{R : Type u}
[Semiring R]
[NoZeroDivisors R]
{P : Polynomial R}
:
theorem
Polynomial.derivative_pow_eq_zero
{R : Type u}
[CommSemiring R]
[NoZeroDivisors R]
{n : β}
(chn : βn β 0)
{a : Polynomial R}
: