intros goal l a b c gamma work context j j1 less1 spec0.
apply rule_vimp_imp_gamma with j1; try assumption.
apply rule_shift_gamma_work with (a := NImp_NF (NImp a b (NAtom j)));
assumption.
Qed.

Lemma rule_atom_imp_b_imp_c_gamma :
forall (goal : form) (l : list Int) (a : Int) (b c : form)
(gamma : flist) (work : nf_list) (context : flist)
(j j1 : Int),
Less j j1 ->
search_spec goal
(vimp l (Imp (Imp (Atom a) (Atom j)) c)
:: vimp (a :: l) (Imp b (Atom j)) :: gamma) work
(vimp l (Imp (Imp (Atom a) (Atom j)) c)
:: vimp (a :: l) (Imp b (Atom j)) :: context) j1 ->
search_spec goal (vimp l (Imp (Imp (Atom a) b) c) :: gamma) work context j.