induction p.
(* . *)
intros q; rewrite plus_0_l.
induction q.
intros H f x y H1.
unfold partial_derive.
simpl.
rewrite - minus_n_O.
apply: (ex_diff_n_ext_loc _ _ _ _ _ _ H1).
now apply locally_2d_forall.
intros H f x y H1.
apply (ex_diff_n_ext_loc (fun u v => Derive (fun z => (partial_derive 0 q f) u z) v)).
apply locally_2d_forall.
intros u v; unfold partial_derive.
reflexivity.
apply ex_diff_n_deriv_aux2.
replace ((S (n - S q))) with (n-q)%nat by omega.
apply IHq.
now apply lt_le_weak.
exact H1.
(* . *)
intros q H f x y H1.
apply (ex_diff_n_ext_loc (fun u v => Derive (fun z => (partial_derive p q f) z v) u)).
apply locally_2d_forall.
intros u v; unfold partial_derive.
reflexivity.
apply ex_diff_n_deriv_aux1.
replace ((S (n - (S p +q)))) with (n-(p+q))%nat by omega.
apply IHp.
now apply lt_le_weak.
exact H1.
Qed.

(* Specifications: *)
Lemma ex_diff_n_ex_deriv_inf_1 : forall n p k, (p+k < n)%nat -> forall f x y,
ex_diff_n f n x y ->
ex_derive  (fun z : R => partial_derive p k f z y) x.
Lemma ex_diff_n_ex_deriv_inf_2 : forall n p k, (p+k < n)%nat -> forall f x y,
ex_diff_n f n x y ->
ex_derive (fun z => partial_derive p k f x z) y.
Lemma ex_diff_n_continuity_inf_1 : forall n p k, (p+k < n)%nat -> forall f x y,
ex_diff_n f n x y ->
continuity_2d_pt (fun u v => Derive (fun z : R => partial_derive p k f z v) u) x y.
Lemma Derive_partial_derive_aux1: forall p f x y,
locally_2d (ex_diff_n f (S p)) x y ->
partial_derive  1 p f x y = partial_derive 0 p (partial_derive  1 0 f) x y.
Lemma Derive_partial_derive_aux2: forall p k f x y,
locally_2d (ex_diff_n f (p+S k)) x y ->
partial_derive 0 1 (partial_derive p k f) x y =
partial_derive p (S k) f x y.
Lemma Derive_partial_derive: forall p k f x y,
locally_2d (ex_diff_n f (p+S k)) x y ->
Derive (fun v : R => partial_derive p k f x v) y =
partial_derive p (S k) f x y.
Lemma ex_diff_n_continuity_inf_2 : forall n p k, (p+k < n)%nat -> forall f x y,
ex_diff_n f n x y ->
continuity_2d_pt (fun u v => Derive (fun z : R => partial_derive p k f u z) v) x y.