Local Hint Resolve store_valid_access_1 store_valid_access_2 store_valid_access_3: mem.

(* Specifications: *)
Theorem load_store_similar:
forall chunk',
size_chunk chunk' = size_chunk chunk ->
align_chunk chunk' <= align_chunk chunk ->
exists v', load chunk' m2 b ofs = Some v' /\ decode_encode_val v chunk chunk' v'.
Theorem load_store_similar_2:
forall chunk',
size_chunk chunk' = size_chunk chunk ->
align_chunk chunk' <= align_chunk chunk ->
type_of_chunk chunk' = type_of_chunk chunk ->
load chunk' m2 b ofs = Some (Val.load_result chunk' v).
Theorem load_store_same:
load chunk m2 b ofs = Some (Val.load_result chunk v).
Theorem load_store_other:
forall chunk' b' ofs',
b' <> b
\/ ofs' + size_chunk chunk' <= ofs
\/ ofs + size_chunk chunk <= ofs' ->
load chunk' m2 b' ofs' = load chunk' m1 b' ofs'.
Theorem loadbytes_store_same:
loadbytes m2 b ofs (size_chunk chunk) = Some(encode_val chunk v).
Theorem loadbytes_store_other:
forall b' ofs' n,
b' <> b
\/ n <= 0
\/ ofs' + n <= ofs
\/ ofs + size_chunk chunk <= ofs' ->
loadbytes m2 b' ofs' n = loadbytes m1 b' ofs' n.
Lemma setN_in:
forall vl p q c,
p <= q < p + Z.of_nat (length vl) ->
In (ZMap.get q (setN vl p c)) vl.
Lemma getN_in:
forall c q n p,
p <= q < p + Z.of_nat n ->
In (ZMap.get q c) (getN n p c).
Theorem load_store_similar:
forall chunk',
size_chunk chunk' = size_chunk chunk ->
align_chunk chunk' <= align_chunk chunk ->
exists v', load chunk' m2 b ofs = Some v' /\ decode_encode_val v chunk chunk' v'.
Theorem load_store_similar_2:
forall chunk',
size_chunk chunk' = size_chunk chunk ->
align_chunk chunk' <= align_chunk chunk ->
type_of_chunk chunk' = type_of_chunk chunk ->
load chunk' m2 b ofs = Some (Val.load_result chunk' v).
Theorem load_store_same:
load chunk m2 b ofs = Some (Val.load_result chunk v).
Theorem load_store_other:
forall chunk' b' ofs',
b' <> b
\/ ofs' + size_chunk chunk' <= ofs
\/ ofs + size_chunk chunk <= ofs' ->
load chunk' m2 b' ofs' = load chunk' m1 b' ofs'.
Theorem loadbytes_store_same:
loadbytes m2 b ofs (size_chunk chunk) = Some(encode_val chunk v).
Theorem loadbytes_store_other:
forall b' ofs' n,
b' <> b
\/ n <= 0
\/ ofs' + n <= ofs
\/ ofs + size_chunk chunk <= ofs' ->
loadbytes m2 b' ofs' n = loadbytes m1 b' ofs' n.
Lemma setN_in:
forall vl p q c,
p <= q < p + Z.of_nat (length vl) ->
In (ZMap.get q (setN vl p c)) vl.
Lemma getN_in:
forall c q n p,
p <= q < p + Z.of_nat n ->
In (ZMap.get q c) (getN n p c).