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_store_result_hold:
forall valu1 ge sp rs m' n addr args a chunk m src bc ae approx am,
numbering_holds valu1 ge sp rs m' n ->
eval_addressing ge sp addr rs##args = Some a ->
Mem.storev chunk m a rs#src = Some m' ->
ematch bc rs ae ->
approx = VA.State ae am ->
exists valu2, numbering_holds valu2 ge sp rs m' (add_store_result approx n chunk addr args src).