Fact derivn_is_linear n : linear (derivn n).

(* Specifications: *)
Lemma derivnMXaddC n p c :
(p * 'X + c%:P)^`(n.+1) = p^`(n) *+ n.+1  + p^`(n.+1) * 'X.
Lemma derivn_poly0 p n : size p <= n -> p^`(n) = 0.
Lemma lt_size_deriv (p : {poly R}) : p != 0 -> size p^`() < size p.
(* Here is the division by n! *)
Lemma nderivn_def n p : p^`(n) = p^`N(n) *+ n`!.
Lemma polyOver_nderivn S (ringS : semiringPred S) (kS : keyed_pred ringS) :
{in polyOver kS, forall p n, p^`N(n) \in polyOver kS}.
Lemma nderivn0 p : p^`N(0) = p.
Lemma nderivnXn m n : 'X^m^`N(n) = 'X^(m - n) *+ 'C(m, n).
Fact nderivn_is_linear n : linear (nderivn n).