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 load_memcpy:
forall m b1 ofs1 sz bytes b2 ofs2 m' chunk i v,
Mem.loadbytes m b1 ofs1 sz = Some bytes ->
Mem.storebytes m b2 ofs2 bytes = Some m' ->
Mem.load chunk m b1 i = Some v ->
ofs1 <= i -> i + size_chunk chunk <= ofs1 + sz ->
(align_chunk chunk | ofs2 - ofs1) ->
Mem.load chunk m' b2 (i + (ofs2 - ofs1)) = Some v.