intros l; elim l; clear l.
intros a; exists a; trivial.
intros i l ih a.
elim (ih (AImp i a)); clear ih.
intros b nf_b.
exists b; assumption.
Qed.

(* Specifications: *)
Lemma vimp2nvimp :
forall (l : list Int) (a : normal_form), {b : normal_form | b = nvimp l a}.
Lemma vimp_eq_nvimp :
forall (l : list Int) (a : normal_form),
vimp l (nf2form a) = nf2form (nvimp l a).