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 shift_memcpy_eq_wf: forall src sz delta e e' next, shift_memcpy_eq src sz delta e = Some e' -> wf_equation next e -> wf_equation next e'.