Remark in_remove:
forall (A: Type) (eq: forall (x y: A), {x=y}+{x<>y}) x y l,
In y (List.remove eq x l) <-> x <> y /\ In y l.

Lemma add_rhs_holds:
forall valu1 ge sp rs m n rd rh rs',
numbering_holds valu1 ge sp rs m n ->
rhs_eval_to valu1 ge sp m rh (rs'#rd) ->
wf_rhs n.(num_next) rh ->
(forall r, r <> rd -> rs'#r = rs#r) ->
exists valu2, numbering_holds valu2 ge sp rs' m (add_rhs n rd rh).