intros.
unfold nweight_Sequent in |- *.
rewrite <- (nweight_ai_ins i b ai ai').
generalize (nweight_ai ai); clear H ai ai'; intro ai.
generalize (nweight_ds ds); clear ds; intro ds.
generalize (nweight_ni ni); clear ni; intro ni.
change
(nweight (nf2form (AImp i b)) + nweight_work work + (ds + (ni + ai)) =
nweight_work work + (ds + (ni + (nweight (nf2form (AImp i b)) + ai))))
in |- *.
generalize (nweight_work work); clear work; intro work.
generalize (nweight (nf2form (AImp i b))); clear i b; intro a.
rewrite (plus_comm a work).
rewrite (plus_assoc_reverse work a (ds + (ni + ai))).
apply plus_reg.
rewrite (plus_permute a ds (ni + ai)).
apply plus_reg.
rewrite (plus_permute a ni ai).
apply plus_reg.
trivial.
assumption.
Qed.
(*******************************************************************)

(* Specifications: *)
Lemma nweight_shift_ai_work :
forall (i : Int) (bs work : nf_list) (ds : disjs)
(ni : nested_imps) (ai ai' : atomic_imps),
LOOKUP nf_list i ai bs ->
REGULAR normal_form ai ->
LIN_DEL nf_list i bs ai ai' ->
nweight_Sequent (bs ++ work) ds ni ai' < nweight_Sequent work ds ni ai.