intros goal l a b gamma work context j j1 less1 spec0.
apply
search_spec_subst_gamma_pos
with (j1 := j1) (a := b) (b := vimp l (Imp a (Atom j)));
try assumption; clear spec0.
intros below_c.
generalize (below_vimp_tail j l (Imp a b) below_c).
generalize (below_vimp_head j l (Imp a b) below_c); clear below_c.
intros below_ab below_l; elim below_ab; clear below_ab;
intros below_a below_b.
split.
assumption.
split.
apply below_vimp_split; try assumption.
intros i in0.
apply less_trans with j; try assumption.
apply below_l; assumption.
split.
apply below_form_less_below_form with j; assumption.
assumption.
rewrite (subst_vimp_head j b l (Imp a (Atom j))); try assumption.
simpl in |- *.
rewrite (equal_dec_refl j form b (Atom j)).
rewrite (subst_form_below j b a); try assumption.
trivial.
intros k k_is_mon forces1 forces2.
apply forces_vimp with (Imp a (Atom j)); try assumption.
intros k' suc1 forces_j.
unfold forces_t2 in |- *; simpl in |- *.
intros k'' suc2 suc3 forces_a.
apply (forces2 k''); try assumption.
apply (forces_j k''); assumption.
Qed.
(****************************************************)
(*                                                  *)
(* rules for   goal = ...                           *)
(*                                                  *)
(****************************************************)

Lemma rule_gamma_falsum :
forall (gamma : flist) (work : nf_list) (context : flist) (i j : Int),
Less i j ->
search_spec (Atom i) gamma work context j ->
search_spec Falsum gamma work context i.