End NullDerivative.
(** * Iterated differential *)
(** ** Definition *)
Fixpoint Derive_n (f : R -> R) (n : nat) x :=
match n with
| O => f x
| S n => Derive (Derive_n f n) x
end.
Definition ex_derive_n f n x :=
match n with
| O => True
| S n => ex_derive (Derive_n f n) x
end.
Definition is_derive_n f n x l :=
match n with
| O => f x = l
| S n => is_derive (Derive_n f n) x l
end.

(* Specifications: *)
Lemma is_derive_n_unique f n x l :
is_derive_n f n x l -> Derive_n f n x = l.
Lemma Derive_n_correct f n x :
ex_derive_n f n x -> is_derive_n f n x (Derive_n f n x).