intros j l; elim l; clear l.
intros a below_la i0 in0; inversion_clear in0.
simpl in |- *; intros i l ih a below_la i0 in0.
inversion_clear in0.
rewrite <- H; clear H i0.
elim (below_vimp_head j l (Imp (Atom i) a) below_la).
intros; assumption.
apply ih with (a := Imp (Atom i) a); assumption.
Qed.

(* Specifications: *)
Lemma subst_vimp_head :
forall (j : Int) (a : form) (l : list Int) (b : form),
(forall i : Int, In i l -> Less i j) ->
subst_form j a (vimp l b) = vimp l (subst_form j a b).