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_holds: forall src dst sz e e' m sp bytes m' valu ge, shift_memcpy_eq src sz (dst - src) e = Some e' -> Mem.loadbytes m sp src sz = Some bytes -> Mem.storebytes m sp dst bytes = Some m' -> equation_holds valu ge (Vptr sp Ptrofs.zero) m e -> equation_holds valu ge (Vptr sp Ptrofs.zero) m' e'.