End STORE.
Local Hint Resolve perm_store_1 perm_store_2: mem.
Local Hint Resolve store_valid_block_1 store_valid_block_2: mem.
Local Hint Resolve store_valid_access_1 store_valid_access_2
store_valid_access_3: mem.

(* Specifications: *)
Lemma load_store_overlap:
forall chunk m1 b ofs v m2 chunk' ofs' v',
store chunk m1 b ofs v = Some m2 ->
load chunk' m2 b ofs' = Some v' ->
ofs' + size_chunk chunk' > ofs ->
ofs + size_chunk chunk > ofs' ->
exists mv1 mvl mv1' mvl',
shape_encoding chunk v (mv1 :: mvl)
/\  shape_decoding chunk' (mv1' :: mvl') v'
/\  (   (ofs' = ofs /\ mv1' = mv1)
\/ (ofs' > ofs /\ In mv1' mvl)
\/ (ofs' < ofs /\ In mv1 mvl')).
Lemma load_store_overlap:
forall chunk m1 b ofs v m2 chunk' ofs' v',
store chunk m1 b ofs v = Some m2 ->
load chunk' m2 b ofs' = Some v' ->
ofs' + size_chunk chunk' > ofs ->
ofs + size_chunk chunk > ofs' ->
exists mv1 mvl mv1' mvl',
shape_encoding chunk v (mv1 :: mvl)
/\  shape_decoding chunk' (mv1' :: mvl') v'
/\  (   (ofs' = ofs /\ mv1' = mv1)
\/ (ofs' > ofs /\ In mv1' mvl)
\/ (ofs' < ofs /\ In mv1 mvl')).