Hasse derivative of polynomials #
The kth Hasse derivative of a polynomial ∑ a_i X^i is ∑ (i.choose k) a_i X^(i-k).
It is a variant of the usual derivative, and satisfies k! * (hasseDeriv k f) = derivative^[k] f.
The main benefit is that is gives an atomic way of talking about expressions such as
(derivative^[k] f).eval r / k!, that occur in Taylor expansions, for example.
Main declarations #
In the following, we write D k for the k-th Hasse derivative hasse_deriv k.
Polynomial.hasseDeriv: thek-th Hasse derivative of a polynomialPolynomial.hasseDeriv_zero: the0th Hasse derivative is the identityPolynomial.hasseDeriv_one: the1st Hasse derivative is the usual derivativePolynomial.factorial_smul_hasseDeriv: the identityk! • (D k f) = derivative^[k] fPolynomial.hasseDeriv_comp: the identity(D k).comp (D l) = (k+l).choose k • D (k+l)Polynomial.hasseDeriv_mul: the "Leibniz rule"D k (f * g) = ∑ ij ∈ antidiagonal k, D ij.1 f * D ij.2 g
For the identity principle, see Polynomial.eq_zero_of_hasseDeriv_eq_zero
in Mathlib/Algebra/Polynomial/Taylor.lean.
Reference #
The kth Hasse derivative of a polynomial ∑ a_i X^i is ∑ (i.choose k) a_i X^(i-k).
It satisfies k! * (hasse_deriv k f) = derivative^[k] f.
Equations
- Polynomial.hasseDeriv k = Polynomial.lsum fun (i : ℕ) => Polynomial.monomial (i - k) ∘ₗ DistribSMul.toLinearMap R R (i.choose k)
Instances For
theorem Polynomial.hasseDeriv_coeff {R : Type u_1} [Semiring R] (k : ℕ) (f : Polynomial R) (n : ℕ) :
@[simp]
theorem Polynomial.hasseDeriv_eq_zero_of_lt_natDegree {R : Type u_1} [Semiring R] (p : Polynomial R) (n : ℕ) (h : p.natDegree < n) :
@[simp]
@[simp]
theorem Polynomial.hasseDeriv_map {R : Type u_1} [Semiring R] {S : Type u_2} [Semiring S] (f : R →+* S) (k : ℕ) (p : Polynomial R) :
theorem Polynomial.natDegree_hasseDeriv {R : Type u_1} [Semiring R] [HasUniqueDiv R] (p : Polynomial R) (n : ℕ) :