(************************************************************************)

Fixpoint below_form (a : form) (i : Int) {struct a} : Prop :=
  match a with
  | Falsum => True
  | Atom j => Less j i
  | AndF a0 a1 => below_form a0 i /\ below_form a1 i
  | OrF a0 a1 => below_form a0 i /\ below_form a1 i
  | Imp a0 a1 => below_form a0 i /\ below_form a1 i
  end.Definition below_list (L : flist) (i : Int) :=
  forall a : form, In a L -> below_form a i.

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).