intros goal i b work ds ni ai ai' a context notlookup_i notlookup_bs
equiv_ins premiss.
unfold nsearch_spec in |- *; intros complete sound mon.
elim premiss; clear premiss.
intros ni1 less1 complete1 spec1.
apply NSearch_Res with ni1.
assumption.
apply deco_sound_shift_ai_work_new with ai'; assumption.
elim spec1; clear spec1.
intros derivable_goal; apply NDerivable; assumption.
intros k k_is_mon k_forces_ngamma k_nonforces_goal.
apply NRefutable with k; try assumption.
apply forces_ngamma_shift_ai_work_new with ai'; assumption.
(* side premisses: Elim premiss.  *)
apply deco_sound_shift_work_ai with i b ai; assumption.
apply nsound_shift_work_ai with i b ai; assumption.
apply nminimal_shift_work_ai_new with i b ai; assumption.
Qed.

(* Specifications: *)
Lemma rule_shift_work_ai_old :
forall (goal i : Int) (b : normal_form) (work : nf_list)
(ds : disjs) (ni : nested_imps) (bs : nf_list) (ai ai' : atomic_imps)
(a : atoms) (context : flist),
(forall x : unit, LOOKUP unit i a x -> False) ->
LOOKUP nf_list i ai bs ->
EQUIV_INS nf_list i (cons b) nf_nil ai ai' ->
nsearch_spec goal work ds ni ai' a context ->
nsearch_spec goal (AImp i b :: work) ds ni ai a context.