intros x work ds ni1 ni2 ai a complete.
unfold deco_sound in |- *.
intros k i0 i1 j in_k.
elim (complete k i0 i1 j); clear complete.
intros k_is_mon k_forces_ngamma k_notforces_i0i1.
apply k_deco_sound_intro; try assumption.
apply forces_ngamma_shift_work_ni_x_ni; assumption.
elim
(in_ni_x_ni_rev (Decorated (NImp i0 i1 j) k) (Undecorated x) ni1 ni2 in_k).
intros; assumption.
intros eq;  discriminate eq.
Qed.

(* Specifications: *)
Lemma deco_sound_shift_work_nirni :
forall (a0 a1 : Int) (b : normal_form) (k1 : kripke_tree)
(work : nf_list) (ds : disjs) (ni1 ni2 : nested_imps)
(ai : atomic_imps) (a : atoms),
k_deco_sound k1 a0 a1 work ds (ni1 ++ Decorated (NImp a0 a1 b) k1 :: ni2) ai
a ->
deco_sound (NImp_NF (NImp a0 a1 b) :: work) ds (ni1 ++ ni2) ai a ->
deco_sound work ds (ni1 ++ Decorated (NImp a0 a1 b) k1 :: ni2) ai a.