intros gamma work context i j less_ij spec0.
unfold search_spec in |- *.
intros below_goal below_gamma below_context sound0 minimal0.
elim spec0; clear spec0; try assumption.
intros derivable_i.
apply derivable.
apply snd_order_inst with i; assumption.
intros k k_is_mon k_forces_gamma k_notforces_i.
apply refutable with k; try assumption.
trivial.
apply below_list_less_below_list with i; assumption.
apply below_list_less_below_list with i; assumption.
Qed.

Lemma rule_gamma_a_imp_b :
forall (a b : form) (gamma : flist) (work : nf_list)
(context : flist) (j : Int),
search_spec b (a :: gamma) work (a :: context) j ->
search_spec (Imp a b) gamma work context j.