Documentation

Mathlib.Algebra.Polynomial.HasseDeriv

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.

For the identity principle, see Polynomial.eq_zero_of_hasseDeriv_eq_zero in Data/Polynomial/Taylor.lean.

Reference #

https://math.fontein.de/2009/08/12/the-hasse-derivative/

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
Instances For
    theorem Polynomial.hasseDeriv_apply {R : Type u_1} [Semiring R] (k : ) (f : Polynomial R) :
    (hasseDeriv k) f = f.sum fun (i : ) (r : R) => (monomial (i - k)) ((i.choose k) * r)
    theorem Polynomial.hasseDeriv_coeff {R : Type u_1} [Semiring R] (k : ) (f : Polynomial R) (n : ) :
    ((hasseDeriv k) f).coeff n = ((n + k).choose k) * f.coeff (n + k)
    theorem Polynomial.hasseDeriv_zero' {R : Type u_1} [Semiring R] (f : Polynomial R) :
    (hasseDeriv 0) f = f
    theorem Polynomial.hasseDeriv_eq_zero_of_lt_natDegree {R : Type u_1} [Semiring R] (p : Polynomial R) (n : ) (h : p.natDegree < n) :
    (hasseDeriv n) p = 0
    theorem Polynomial.hasseDeriv_one' {R : Type u_1} [Semiring R] (f : Polynomial R) :
    (hasseDeriv 1) f = derivative f
    @[simp]
    theorem Polynomial.hasseDeriv_monomial {R : Type u_1} [Semiring R] (k n : ) (r : R) :
    (hasseDeriv k) ((monomial n) r) = (monomial (n - k)) ((n.choose k) * r)
    theorem Polynomial.hasseDeriv_C {R : Type u_1} [Semiring R] (k : ) (r : R) (hk : 0 < k) :
    (hasseDeriv k) (C r) = 0
    theorem Polynomial.hasseDeriv_apply_one {R : Type u_1} [Semiring R] (k : ) (hk : 0 < k) :
    (hasseDeriv k) 1 = 0
    theorem Polynomial.hasseDeriv_X {R : Type u_1} [Semiring R] (k : ) (hk : 1 < k) :
    (hasseDeriv k) X = 0
    theorem Polynomial.factorial_smul_hasseDeriv {R : Type u_1} [Semiring R] (k : ) :
    (k.factorial hasseDeriv k) = (⇑derivative)^[k]
    theorem Polynomial.hasseDeriv_comp {R : Type u_1} [Semiring R] (k l : ) :
    hasseDeriv k ∘ₗ hasseDeriv l = (k + l).choose k hasseDeriv (k + l)
    theorem Polynomial.natDegree_hasseDeriv_le {R : Type u_1} [Semiring R] (p : Polynomial R) (n : ) :
    ((hasseDeriv n) p).natDegree p.natDegree - n
    theorem Polynomial.natDegree_hasseDeriv {R : Type u_1} [Semiring R] [NoZeroSMulDivisors R] (p : Polynomial R) (n : ) :
    ((hasseDeriv n) p).natDegree = p.natDegree - n
    theorem Polynomial.hasseDeriv_mul {R : Type u_1} [Semiring R] (k : ) (f g : Polynomial R) :
    (hasseDeriv k) (f * g) = ijFinset.antidiagonal k, (hasseDeriv ij.1) f * (hasseDeriv ij.2) g