intros context; elim context; clear context.
intros; apply derivable_cut with a; assumption.
intros c context ih a b der_a der_b.
elim (ih (Imp c a) (Imp c b)); clear ih.
intros t der_t.
apply Derivable_Intro with (App c (Shift t) (Var 0)).
apply ImpElim.
apply ShiftIntro; assumption.
apply ByAssumption.
apply My_NthO.
elim der_a; clear der_a; intros t der_t.
apply Derivable_Intro with (Abs c t).
apply ImpIntro; assumption.
elim der_b; clear der_b; intros t der_t.
apply
Derivable_Intro
with
(Abs c
(App a (App c (Shift (Shift (Abs c (Abs a t)))) (Var 0))
(App c (Var 1) (Var 0)))).
apply ImpIntro.
apply ImpElim.
apply ImpElim.
apply ShiftIntro.
apply ShiftIntro.
apply ImpIntro.
apply ImpIntro.
assumption.
apply ByAssumption.
apply My_NthO.
apply ImpElim.
apply ByAssumption.
apply My_NthS.
apply My_NthO.
apply ByAssumption.
apply My_NthO.
Qed.
(************************************************************************)

(* Specifications: *)
Lemma derivable_a_imp_a : forall a : form, Derivable fnil (Imp a a).
intros a.