Definition PS_derive_n (n : nat) (a : nat -> R) :=
  (fun k => (INR (fact (k + n)%nat) / INR (fact k)) * a (k + n)%nat).

(* Specifications: *)
Lemma is_derive_n_PSeries (n : nat) (a : nat -> R) : forall x, Rbar_lt (Rabs x) (CV_radius a) -> is_derive_n (PSeries a) n x (PSeries (PS_derive_n n a) x).
Lemma ex_derive_n_PSeries (n : nat) (a : nat -> R) (x : R) : Rbar_lt (Finite (Rabs x)) (CV_radius a) -> ex_derive_n (PSeries a) n x.
Lemma Derive_n_PSeries (n : nat) (a : nat -> R) (x : R) : Rbar_lt (Finite (Rabs x)) (CV_radius a) -> Derive_n (PSeries a) n x = PSeries (PS_derive_n n a) x.
Lemma CV_radius_derive_n (n : nat) (a : nat -> R) : CV_radius (PS_derive_n n a) = CV_radius a.
Lemma Derive_n_coef (a : nat -> R) (n : nat) : Rbar_lt (Finite 0) (CV_radius a) -> Derive_n (PSeries a) n 0 = a n * (INR (fact n)).
Lemma PSeries_ext_recip (a b : nat -> R) (n : nat) : Rbar_lt (Finite 0) (CV_radius a) -> Rbar_lt (Finite 0) (CV_radius b) -> locally 0 (fun x => PSeries a x = PSeries b x) -> a n = b n.
Lemma mk_pseries (f : R -> R) (M : R) (r : Rbar) : (forall n x, Rbar_lt (Finite (Rabs x)) r -> (ex_derive_n f n x) /\ Rabs (Derive_n f n x) <= M) -> forall x, Rbar_lt (Finite (Rabs x)) r -> is_pseries (fun n => Derive_n f n 0 / INR (fact n)) x (f x).