Ltac auto_derive_2 :=
  match goal with
  | |- is_derive_n ?f 2 ?x ?d =>
    auto_derive_fun f ;
    match goal with
    | |- (forall x, _ -> is_derive _ x (@?d x)) -> _ =>
      let H := fresh "H" in
      let u := fresh "u" in
      intro H ;
      apply (is_derive_ext d) ;
      [ intro u ;
        apply sym_eq, is_derive_unique ;
        apply H
      | auto_derive ] ;
      clear H
    end
  end.Parameter c : R.Parameter u0 : R -> R.Definition alpha x t := 1/2 * (u0 (x + c * t) + u0 (x - c * t)).Definition alpha20 x t := 1/2 * (Derive_n u0 2 (x + c * t) + Derive_n u0 2 (x - c * t)).Definition alpha02 x t := c^2/2 * (Derive_n u0 2 (x + c * t) + Derive_n u0 2 (x - c * t)).

(* Specifications: *)
Lemma alpha_20_lim : forall x t, is_derive_n (fun u => alpha u t) 2 x (alpha20 x t).
Lemma alpha_02_lim : forall x t, is_derive_n (fun u => alpha x u) 2 t (alpha02 x t).