Section ExtendDerivation.
Variable D : 'End(L).
Let Dx E := - (map_poly D (minPoly E x)).[x] / ((minPoly E x)^`()).[x].
Fact extendDerivation_subproof E (adjEx := Fadjoin_poly E x) :
let body y (p := adjEx y) := (map_poly D p).[x] + p^`().[x] * Dx E in
linear body.
Definition extendDerivation E : 'End(L) :=
linfun (Linear (extendDerivation_subproof E)).
Hypothesis derD : Derivation K D.

(* Specifications: *)
Lemma extendDerivation_id y : y \in K -> extendDerivation K y = D y.
Lemma extendDerivation_horner p :
p \is a polyOver K -> separable_element K x ->
extendDerivation K p.[x] = (map_poly D p).[x] + p^`().[x] * Dx K.
Lemma extendDerivationP :
separable_element K x -> Derivation <<K; x>> (extendDerivation K).