intros dni; elim dni; clear dni.
intros ni; exists ni; trivial.
intros x; case x; clear x.
intros n k dni ih ni.
elim (ih (Decorated n k :: ni)).
intros dni_ni eq.
exists dni_ni; assumption.
Qed.

(* Specifications: *)
Lemma rev_app_lemma2 :
forall (A : Set) (dni : decorated_nested_imps) (ni : nested_imps),
(forall dni_ni : nested_imps, dni_ni = rev_app dni ni -> A) -> A.