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_memcpy_eqs_charact: forall e' src sz delta eqs2 eqs1, In e' (add_memcpy_eqs src sz delta eqs1 eqs2) -> In e' eqs2 \/ exists e, In e eqs1 /\ shift_memcpy_eq src sz delta e = Some e'.